Продукт
Авторизация по звонку: вход в сервис без SMS и пароля
Авторизация звонком заменяет SMS-код на исходящий вызов: пользователь нажимает «Войти», звонит на показанный номер, вызов сбрасывается — и сессия открывается сама. Вводить и запоминать нечего, ждать доставки сообщения не нужно. Способ закрывает и обычный вход, и passwordless-сценарий без пароля, и подтверждение входа вторым фактором. Стоит 0,20 ₽ за успешную проверку, несостоявшаяся не тарифицируется.
Вход по SMS-коду выглядит устоявшимся стандартом, но состоит из пяти отдельных шагов, на каждом из которых пользователь может отвалиться. Ввести номер, дождаться сообщения, переключиться в мессенджер или приложение SMS, запомнить или скопировать код, вернуться и ввести его — и всё это при условии, что сообщение вообще дошло.
Авторизация по звонку убирает четыре шага из пяти. Разбираем, как она устроена, где применима и что даёт по цифрам.
Способы авторизации по номеру телефона
Телефон как идентификатор давно вытеснил логин: он уникален, его не надо придумывать и его сложнее забыть. Различаются не идентификаторы, а способы доказать, что телефон ваш.
| Способ | Что делает пользователь | Что подтверждает | Слабое место |
|---|---|---|---|
| Пароль | вспоминает и вводит | знание секрета | забывают, переиспользуют, подбирают по утечкам |
| SMS-код | ждёт, читает, вводит | получение сообщения | доставляемость, задержки, ошибки ввода |
| Push в приложение | подтверждает нажатием | доступ к установленному приложению | требует приложения и работающих пушей |
| Звонок на выделенный номер | нажимает вызов | исходящий вызов с этого номера | нужен определяемый номер |
У способов с телефоном общий принцип: подтверждается не знание, а владение. Разница в том, что именно считается доказательством владения — принятое сообщение или совершённый вызов.
Отдельно стоит сказать, чего в этом списке нет. Телефонная авторизация не заменяет и не отменяет пароль в сценариях, где нужен доступ без связи, и не превращает сервис в защищённый сам по себе. Это один слой из нескольких.
Как устроен вход по звонку
Со стороны пользователя всё выглядит как две кнопки. Со стороны системы — как короткий жизненный цикл проверки с тремя состояниями.
- Пользователь вводит номер и нажимает «Войти».
- Ваш бэкенд создаёт проверку: передаёт ключ проекта и номер в формате E.164. В ответ приходит идентификатор проверки и выделенный номер. Проверка получает статус
PENDING. - Фронтенд показывает выделенный номер ссылкой
tel:и таймер на 60 секунд. - Пользователь звонит. Отвечать не нужно — сервис фиксирует вызов и сбрасывает соединение. Звонок сопоставляется с проверкой по паре «выделенный номер + номер вызывающего абонента», проверка переходит в
CONFIRMED. - Бэкенд опрашивает статус проверки. Увидел
CONFIRMED— открывает сессию и выдаёт токен. УвиделEXPIRED— предлагает позвонить ещё раз.
Ключевой момент для проектирования: сессия создаётся только на вашей стороне и только после подтверждения. Сервис проверки не выдаёт токенов и ничего не знает о вашей модели пользователей — он отвечает ровно на один вопрос, звонил ли этот номер. Поэтому вход по звонку встраивается в существующую аутентификацию как ещё один провайдер, а не как её замена.
Подробный разбор самого механизма проверки — в статье про подтверждение номера телефона звонком.
Авторизация без пароля
Passwordless-сценарий — тот случай, когда пароля у пользователя нет вообще. При регистрации он оставляет номер, при каждом входе подтверждает владение им. Хранить в базе нечего: нет хеша пароля, нет процедуры восстановления, нет писем со ссылкой сброса.
Это снимает целый класс задач:
- Восстановление доступа исчезает как отдельный сценарий. Вход и восстановление становятся одним и тем же действием — подтвердить номер.
- Нечего утекать. База без паролей не представляет ценности для перебора по другим сервисам.
- Нет поддержки по забытым паролям. По статистике любой службы поддержки это заметная доля обращений.
Взамен появляется жёсткая зависимость: потерял доступ к номеру — потерял доступ к аккаунту. Поэтому passwordless разумен там, где номер и так является основным контактом — доставка, объявления, программы лояльности, — и рискован там, где аккаунт живёт годами и переживает смену телефона. В последнем случае нужен запасной канал: почта, резервные коды или второй привязанный номер.
Звонок как второй фактор
Если пароль остаётся, звонок работает вторым фактором. Схема стандартная: пользователь вводит логин и пароль, система создаёт проверку и просит позвонить, сессия открывается только после подтверждения.
По сравнению с другими вторыми факторами звонок находится примерно там же, где SMS-код: он подтверждает владение номером и наследует его слабости, включая подмену SIM-карты. Честное сравнение выглядит так — приложение-генератор одноразовых кодов надёжнее, но требует от пользователя установки и настройки, а телефон есть у всех. Звонок выигрывает не в стойкости, а в том, что через него проходят почти все пользователи, тогда как до настройки TOTP доходит меньшинство.
Тот же механизм закрывает и подтверждение отдельных действий — смену пароля, изменение реквизитов, крупную операцию. Разбор трёх сценариев целиком — в материале про подтверждение при регистрации, входе и операциях.
Вход по звонку на сайте и в приложении
Механизм один, интерфейс разный.
На сайте пользователь чаще всего сидит с десктопа, а звонит с телефона. Значит, номер нужно показать крупно и в удобном для набора виде, а не мелким моноширинным текстом. На мобильном браузере обязательна ссылка tel: — иначе номер придётся переписывать руками, и это худшая точка сценария. Детали реализации — в статье про подтверждение номера на сайте.
В приложении сценарий короче: набор открывается одним касанием через системный диалер, а после возврата в приложение статус уже подтверждён. Важное отличие от обычного flash call — приложению не нужны разрешения на чтение SMS или журнала вызовов, а их выдачу ограничивают и Google Play, и App Store. Подробности — в материале про подтверждение номера в мобильном приложении.
Что это даёт по цифрам
Считать эффект нужно в двух местах: на конверсии входа и на стоимости.
Конверсия. Из сценария уходят три шага, на которых теряются пользователи: ожидание сообщения, переключение в другое приложение и ручной ввод кода. Отдельно исчезает самая болезненная ситуация — сообщение не пришло вовсе, и пользователю нечего вводить. Сколько именно вы получите, зависит от вашей аудитории и текущей доставляемости, поэтому единственный честный способ — включить звонок как альтернативный способ входа и сравнить две воронки на своих данных.
Стоимость. Одна успешная авторизация — 0,20 ₽, абонентской платы нет. Тарифицируется только состоявшийся звонок: проверка, ушедшая в EXPIRED, не стоит ничего. В SMS-сценарии оплачивается отправка независимо от того, дошло сообщение и вошёл ли пользователь.
| Входов в месяц | Стоимость при 100 % дозвона | При 80 % дозвона |
|---|---|---|
| 5 000 | 1 000 ₽ | 800 ₽ |
| 50 000 | 10 000 ₽ | 8 000 ₽ |
| 200 000 | 40 000 ₽ | 32 000 ₽ |
Развёрнутое сравнение с SMS по шести параметрам — в материале flash call или SMS, критерии выбора провайдера — в разборе сервисов подтверждения номера. Актуальные цены — на странице тарифов.
Когда звонок не подходит
Раздел, без которого материал читался бы рекламой.
- Пользователь за пределами России. Пул состоит из российских номеров, зарубежные абоненты сценарий не пройдут.
- Скрытый номер. Антиопределитель или корпоративная АТС с подменой исходящего номера делают сопоставление невозможным.
- Нет голосовой связи. Есть интернет, но нет сети оператора — например, зарубежная SIM с одним мобильным интернетом.
- Требуется вход без телефона под рукой. Тут работает только пароль или резервные коды.
Практический вывод: звонок ставится основным способом, а SMS или пароль остаются запасным. Кнопка «Войти другим способом» рядом с таймером снимает почти все перечисленные случаи и заодно страхует от сбоя у любого одного провайдера.
Как подключить
- Зарегистрируйтесь и создайте проект — он получит собственный ключ.
- Добавьте в бэкенд создание проверки при нажатии «Войти» и опрос её статуса.
- Выдавайте токен сессии только по статусу
CONFIRMED, обрабатывайтеEXPIREDкак повод предложить повторный вызов. - Оставьте в интерфейсе запасной способ входа.
Инструкция с вашим ключом, запросами и форматами ответов открывается в кабинете на странице проекта сразу после регистрации.
Частые вопросы
- Чем это лучше входа по паролю?
Не лучше и не хуже — это разные компромиссы. Пароль не зависит от связи и работает где угодно, но его забывают, переиспользуют между сервисами и подбирают по утечкам. Вход по звонку снимает эти три проблемы, но требует, чтобы телефон был под рукой и находился в зоне действия сети. Разумно давать оба способа.
- Можно ли оставить пароль и добавить звонок вторым фактором?
Да, это самый частый сценарий внедрения. Первый фактор остаётся прежним — логин и пароль, — а звонок подтверждает, что за входом стоит владелец привязанного номера. Переделывать существующую аутентификацию при этом не нужно.
- Что происходит с сессией, пока пользователь звонит?
Ничего: до подтверждения сессии нет. Сервер держит проверку в статусе
PENDINGи выдаёт токен только после того, как звонок зафиксирован. Если за 60 секунд вызова не было, проверка становитсяEXPIRED, и вход не происходит.- Насколько это защищает от перехвата чужого аккаунта?
Ровно настолько, насколько защищён сам номер. Подтверждение владения телефоном не спасает от подмены SIM-карты — как и SMS-код. Если сценарий требует стойкости к таким атакам, звонок нужно дополнять другим фактором, а не заменять им всё.
- Пользователь звонит каждый раз при входе?
Только когда нужна новая сессия. Дальше работает обычный токен с вашим сроком жизни, и повторная авторизация требуется по тем же правилам, что и раньше. Частоту вызовов определяет ваша политика сессий, а не сервис подтверждения.