Разработка авторизации через номер телефона с SMS-кодом

Неудачный вход по коду — это потерянные регистрации и звонки в поддержку. Мы проектируем и внедряем авторизацию по номеру телефона под ключ: от схемы выдачи кода до контроля лимитов и журналов событий. Доля успешных входов растёт, а нагрузка на поддержку падает.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка авторизации через номер телефона с SMS-кодом
Средний
от 1 дня до 3 дней
Часто задаваемые вопросы

SMS-авторизация в мобильном приложении: где ломается вход

Вход по номеру телефона выглядит самой простой формой авторизации, поэтому его редко проектируют отдельно. Пользователь ждёт одноразовый код на телефон несколько секунд и, не дождавшись, закрывает приложение — вернуть его потом дороже, чем сразу сделать первичную регистрацию по номеру предсказуемой.

Первый класс сбоев — недоставленный код. Сообщение может зависнуть на стороне агрегатора, отсечься фильтром оператора или потеряться при переключении с Wi-Fi на мобильную сеть. Если логика не различает статусы «отправлено» и «доставлено», приложение показывает ложное подтверждение и не даёт повторить попытку.

Второй класс — дубли и гонки запросов. Пользователь нажимает кнопку дважды, приложение перезапускается, запрос уходит повторно — и на подтверждение номера телефона приходят два разных кода, валиден из которых только последний. Без идемпотентной обработки и учёта времени жизни кода такие обращения разбираются в поддержке вручную.

Третий класс — потеря сессии. Регистрация по номеру завершается успешно, но при смене устройства или сети ключ доступа становится недействительным, и человек снова упирается в экран входа. Часто это следствие слишком короткого срока жизни сессии или её жёсткой привязки к каналу связи.

Все три класса отказов видны на клиенте, но чинятся на стыке приложения, сервиса авторизации и SMS-шлюза. Дальше разбираем, как это закрывается — от схемы потоков до обработки ошибок.

Что даёт управляемый вход по коду: сроки и надёжность

Доля успешных входов определяется не серверной частью, а числом шагов, которые проходит пользователь. Когда код подставляется в поле автоматически из входящего сообщения, не нужно сворачивать приложение и переписывать цифры вручную — на массовом потоке это поднимает долю завершённых входов с 65–75% до 90%+, а время от запроса кода до входа укладывается в 15–25 секунд.

Надёжность держится на нескольких вещах: нормализация номера к единому формату до отправки, отсечение виртуальных и корпоративных диапазонов там, где они не нужны, и автоматическое чтение кода из шторки уведомлений. Повторные запросы кода — главный источник лишних отправок и обращений в поддержку, поэтому на номер и на устройство ставится лимит с нарастающей задержкой, а повторная отправка становится отдельным сценарием, а не кнопкой «отправить ещё раз».

Пиковую нагрузку держим очередью: запросы на отправку складываются в буфер, распределяются по нескольким маршрутам доставки — собственные прямые подключения к операторам и агрегатор вроде Twilio как резервный канал. Если один маршрут начинает тормозить или отдавать ошибки, трафик уходит на второй без участия пользователя, а проверка кода остаётся идемпотентной: повторная попытка подтверждения не создаёт дублей сессии.

В сумме это даёт вход, который не зависит от оператора, часа пик и качества связи в момент регистрации: код приходит по резервному каналу, если основной молчит, а обращения в поддержку по теме «код не пришёл» уходят из топа — вместо ручного разбора остаются метрики по каждому шагу и понятный журнал доставки.

Сравнение схем входа: код по номеру, пароль, ссылка

Схема входа — это не один экран, а правила на все случаи: новое устройство, смена номера, утечка базы, восстановление доступа. Ниже сравнили варианты, с которыми приходят чаще всего: они совместимы, и в одном приложении обычно работает комбинация из двух-трёх.

Вариант входа Когда подходит Ограничения
Код по номеру Мобильное приложение, номер уже в профиле, регистрация с нуля Зависит от доставки сообщения; номер теряют или переносят; нужен лимит попыток
Логин и пароль Старые аккаунты, вход с чужого устройства, веб-версия Забытые и повторно используемые пароли; нужны правила сложности и сброс
Беспарольный вход по ссылке в письме Редкие входы, возврат на компьютер, гостевой доступ Переключение между почтой и приложением; задержка доставки; короткий срок жизни ссылки
Код как второй фактор Перед оплатой, сменой номера, доступом к персональным данным Лишний шаг на каждом входе, если включить его везде

Второй фактор при входе не заменяет основную схему, а надстраивается над ней. Восстановление доступа проектируем заранее: резервный канал, срок жизни одноразового кода, ограничение на число запросов. Иначе пользователь со сменённым номером остаётся без входа, а поддержка получает поток ручных подтверждений.

Схемы совместимы: пароль оставляем для старых аккаунтов, беспарольный вход включаем для новых, а код подключаем точечно. На оценке смотрим на вашу аудиторию и сценарии и предлагаем набор, который закрывает их без лишних шагов.

Как мы внедряем вход по коду: от аудита до приёмки

Вход по коду ломается не в интерфейсе, а на стыке приложения, шлюза и оператора: код не доходит, приходит дважды, отсекается антифродом. Поэтому шаги идут фиксированной последовательностью — на приёмку выходит проверенный маршрут, а не демонстрация «ввели номер — увидели поле».

  1. Аудит сценария входа. Разбираем экраны, состояния и ошибки: что показываем при таймауте, что при неверном коде, куда возвращаем после отмены. Фиксируем требования — длину кода, срок жизни, число попыток, поведение при смене номера на устройстве с двумя SIM.
  2. Схема потоков авторизации. Рисуем маршруты: первый вход, повторный, смена устройства, восстановление доступа. Отдельно — запасные варианты: автозаполнение из системного уведомления, повторная отправка, резервный канал доставки.
  3. Настройка отправки кодов. Подключаем провайдеров, распределяем трафик, задаём лимиты на номер, устройство и адрес, настраиваем шаблоны и правила переключения при недоставке.
  4. Проверка на стенде. Прогоняем сценарии отмены, блокировки, истечения кода, ручного ввода и работы без сети, сверяем статусы доставки на стороне приложения и шлюза.
  5. Нагрузочная проверка входа. Подаём пиковый поток регистраций, замеряем время отклика сервиса, долю доставленных сообщений и поведение очереди при задержке оператора. Здесь же калибруем лимиты, чтобы легитимные пользователи не упирались в защиту от подбора.
  6. Приёмка и передача. Отдаём схему потоков, конфигурацию лимитов, тестовые номера и чек-лист перед релизом, показываем команде заказчика разбор инцидентов по логам.

Дальше изменения в сценарии входа идут по тому же маршруту: правка схемы, пересбор лимитов, прогон проверок.

Что передаём на руки: настройки, схемы, регламенты

Передаём не архив с исходниками, а комплект, по которому дежурная команда эксплуатирует вход по коду сама: без чтения кода и без обращения к нам за каждым изменением лимита. Состав такой.

  • Конфигурация отправки кодов: шаблоны сообщений по языкам, подпись отправителя, порядок провайдеров и правило переключения на резервный при недоставке — отказ одного канала не останавливает вход.
  • Схема сценариев входа: диаграммы первичной регистрации, повторного входа, смены номера и восстановления доступа, с указанием точек запроса кода и поведения при истечении его срока.
  • Правила доступа и лимиты: таблица ролей в панели администратора, частота запросов на номер и на устройство, длительность блокировки после серии неверных вводов. Лимиты лежат в конфигурации, а не в коде.
  • Правила обработки номеров: формат хранения, маскирование в журналах и выгрузках, срок хранения и порядок удаления по запросу пользователя.
  • Документация для поддержки: разбор типовых обращений — код не пришёл, пришёл с опозданием, номер занят, сменился оператор — с указанием, какой параметр смотреть и что безопасно менять.
  • Регламент разбора инцидентов: уровни, метрики доставки в зоне ответственности дежурного, порядок эскалации и форма отчёта после сбоя.
  • Передача доступов: перечень учётных записей и ключей с владельцами, порядок ротации и отзыва при уходе сотрудника.

Такой комплект сокращает путь от сигнала о проблеме до решения: дежурный меняет параметр в конфигурации и видит результат, не дожидаясь сборки новой версии.

Кейс: сократили долю неудачных входов втрое

К нам пришёл сервис доставки «Пульс» с задачей, которая выглядела решённой: вход по номеру телефона с кодом из сообщения. По логам приложения до главного экрана доходило 62% начавших вход, остальные 38% бросали попытку на шаге ввода. Поддержка получала обращение по входу почти в каждом седьмом установочном сеансе.

Разбор пути показал, что проблема не в самой SMS-авторизации, а в её реализации. Код не подставлялся автоматически, при сворачивании приложения или переключении сети состояние шага терялось, а повторная отправка шла по каждому нажатию без ограничений — часть пользователей запрашивала по 4-6 сообщений, доходил последний код, и ранее введённый считался ошибочным.

Что изменили

Свели подтверждение в один экран с автоподстановкой кода и нарастающей задержкой между повторными запросами. Добавили приём кода из предыдущего сообщения, сохранение состояния шага при возврате в приложение, единый контур сессии между запусками и сквозную телеметрию по шагам — теперь видно, где именно теряется пользователь.

Доля успешных подтверждений номера выросла с 62% до 91%. Время до входа в приложение сократилось с 45 до 9 секунд на среднем устройстве. Повторные запросы кода упали вдвое, обращения в поддержку по входу — с 14% до 4% от числа входов.

Тот же контур перенесли на остальные продукты заказчика: метрики держатся, потому что это не разовая правка экрана, а набор правил обработки кода плюс наблюдаемость по каждому шагу.

Почему SMS-код не доходит: диагностика частых сбоев

«Код не доходит» — почти всегда не одна причина, а конкретное звено цепочки: приложение, сервер, поставщик рассылки, сеть оператора, устройство. Пока звенья не разделены по журналам и статусам доставки, правки — угадывание.

Симптом Причина Что делаем
Код идёт минутами вместо секунд Задержка доставки кода: очередь у поставщика или перегрузка канала Подключаем резервный маршрут и переключаемся по статусу
Кода нет на номера одного оператора Блокировка рассылки оператором из-за жалоб или шаблона Согласуем текст и подпись, разносим трафик по двум поставщикам
Статус «доставлено», сообщения нет Фильтр устройства или переполненный ящик Дублируем голосовым вызовом, подсказываем, где искать
На один номер кода нет, на другие идут Неверный номер телефона или формат записи Нормализуем номер до международного формата до отправки
После нескольких попыток отправка встала Лимит на отправку кодов на номер и устройство Считаем попытки на сервере, держим паузу между ними

Диагностика держится на журнале: на каждый запрос пишем время отправки, статус от поставщика и подтверждение получения устройством. Видно, где рвётся — у нас, у поставщика или в сети оператора, — и правка идёт в конкретное звено.

Отдельно закрываем перебор: код живёт ограниченное время, число вводов на сессию конечно, повторная отправка доступна не мгновенно. Это ещё и защита от лимитов — без неё ограничения оператора срабатывают на живых людях, и авторизация отказывает всем подряд.

Частые вопросы: лимиты, безопасность, поддержка

Перед передачей проекта заказчики задают одни и те же вопросы: как вход защищён от подбора кода, какие лимиты на отправку, что происходит при смене номера и входе с нового устройства. Ниже — короткие ответы, спорные места разбираем вместе с инженерами.

Как код защищён от подбора?

Код одноразовый и живёт несколько минут. Сервис считает неверные вводы: после нескольких попыток сессия сбрасывается, а номер получает блокировку с нарастающей задержкой. Дополнительно сверяется устройство, с которого запрошен код, — чужой ввод не проходит.

Какие лимиты на отправку сообщений?

Лимит задаётся на номер и на устройство: несколько сообщений за интервал, дальше отправка откладывается. Массовый перебор номеров через форму входа не проходит, а расход на сообщения остаётся предсказуемым.

Что при смене номера телефона?

Пользователь подтверждает новый номер кодом, и только после этого привязка меняется — старый остаётся рабочим на время подтверждения. Так доступ не теряется при утере симки или переоформлении номера.

Можно ли входить с нескольких устройств?

Да, сессии привязаны к устройству, а не к номеру: вход на планшете не завершает вход на телефоне. В профиле виден список активных устройств с датой последнего входа, любую сессию можно отозвать.

Что с поддержкой после внедрения?

После запуска остаёмся на связи: следим за долей доставленных сообщений и ошибками входа, реагируем на изменения на стороне SMS-шлюзов и обновления платформ. Доработки логики входа идут теми же этапами — правка, проверка, выпуск.

Обсудим задачу и вернёмся с планом и оценкой

Чтобы оценка сроков опиралась на факты, а не на предположения, перед стартом нужны вводные по четырём осям: существующие сценарии входа, приоритет каналов верификации, доступы и ответственный за приёмку. Чем конкретнее этот набор, тем меньше допущений в плане внедрения входа и тем честнее состав работ.

  • Сценарии: регистрация, вход, восстановление доступа, смена номера, вход с нового устройства — что идёт в первую очередь.
  • Приоритет каналов: SMS как основной, резервный — голосовой вызов или сообщение в мессенджере, если код не дошёл.
  • Доступы: тестовый контур приложения, репозиторий, кабинет SMS-провайдера, средства мониторинга, если уже используются.
  • Ограничения: платформы и минимальные поддерживаемые версии, требования магазинов приложений к подтверждению номера.
  • Ответственный за приёмку: кто утверждает тексты сообщений, правила блокировок и подписывает результат.
  • Срок: дата, к которой вход должен работать на боевом контуре, и что можно вынести во вторую очередь.
  • Аналитика: сколько попыток входа, какая доля отказов, есть ли жалобы на недоставку кодов.

В ответ присылаем план внедрения входа: этапы, содержание каждого, что требуется от вас и что считается готовым. К нему — состав работ и оценка сроков по этапам, а не одной цифрой: так второстепенное можно сдвинуть, не двигая дату запуска. Отдельно описываем поведение входа при недоставке кода и порядок отката на прежний сценарий.

Следующий шаг — разбор задачи: опишите текущий сценарий входа, назовите приоритетные каналы и нужный срок. Вернёмся с планом, составом работ и оценкой.

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714