Из способов подтверждения обязателен режим TOTP: пользователь сканирует QR-код и привязывает любое совместимое приложение-генератор, для этого нужен метод выдачи общего ключа и допуск на небольшое расхождение времени между устройством и сервером. В дополнение потребуются разовые коды через SMS и электронную почту как запасные каналы — с гибкой длиной кода, временем жизни и защитой от частых повторных отправок, чтобы не раздувать затраты и не давать поводов для злоупотреблений. Для каждого пользователя формируем комплект аварийных одноразовых кодов, которые можно сохранить или распечатать, и предусматриваем безопасное обновление и аннулирование набора при потере телефона. Отправку сообщений закладываем через сменные адаптеры, чтобы поставщика SMS или почты меняли настройкой, а не переделкой кода.
Управление ведётся через описанный REST API с авторизацией вызывающих приложений по токену, стабильным форматом JSON-ответов и внятными кодами ошибок для неправильного, истёкшего или уже израсходованного кода. Поскольку весь смысл продукта — безопасность, ждём хранение секретов в хешированном виде, автоматические блокировки при подборе, лог всех попыток сверки и продуманные значения по умолчанию. В заявке коротко расскажите об опыте с одноразовыми паролями или системами авторизации.
— Режим TOTP: QR-привязка, общий ключ, допуск по времени
— Разовые коды по SMS и почте со сроком годности и защитой от спама отправок
— Аварийные одноразовые коды с обновлением и аннулированием
— Описанный REST API с токенной авторизацией и понятными кодами ошибок
— Сменные адаптеры поставщиков SMS и почты через настройку
— Лог сверок, блокировка подбора, хеширование секретов при хранении