Разработка доски объявлений для геймеров. Часть 2.1 Авторизация пользователей
Схема авторизации достаточно простая:
1. Запрашиваем логин и контактную информацию номер телефона или почта
2. Формируем код
3. На основе того что ввели и сгенерировали формируем JWT токен, в claims кладем логин, контакты, hmac кода из сообщения, и таймштамп со временем возможности следующей отправки (для ограничения количества отправок)
4. Отправляем код
5. В UI форма переключается на шаг с вводом кода и ожидаем ввода
6. Извлекаем claims из куки, на основе введенного кода формируем hmac и сравниваем его с тем, что в токене в куках
7. Если все совпадает, то регистрируем пользователя и выдаем пару JWT токенов для аутентификации и обновления токена.
Со входом в аккаунт такая же система, но нужен только login.
Примерно так это выглядит на момент написания поста
На момент написания статьи коды авторизации отображались в логах. Это временное решение пока не настроено smtp и сервисы для отправки.
Возможно для авторизации я сделаю немного другую стратегию, чтобы пользователи вводили только логин и TOTP-код (код базированный на времени, как в google authenticator). Это позволит сэкономить на отправке SMS-кодов (которые не бесплатны в отличие от email и TOTP).



