Всем привет, пишу бэкенд на python (fastapi) под моб. приложение. В моб. приложении должна быть реализована проверка мобильного телефона, указанного пользователем (отправляется 4-х значный пароль на указанный телефон, пользователь в приложении должен ввести его).
Есть библиотека PyOTP. Механизм ее работы +- понятен, но есть некоторые вопросы:
1. для генерации otp нужен секрет. Я для каждого юзера генерирую свой секрет, или указываю его один раз для всего сервера?
2. там есть TOTP и HOTP, какой лучше всего использовать?
Допустим OTP сгененрирован и отправлен на телефон, юзер ввел код, код отправляется на сервер для проверки, как его проверить, если секреты разные для каждого пользователя? Хранить в базе секреты/OTP?
Помогите, пожалуйста, разобраться так как немного каша в голове
есть ли смысл тогда вообще пользоваться библиотекой pyOTP? Или проще просто генерировать код, писать в бд и потом сравнивать?
Еще пришла следующая идея:
клиент (моб. приложение) отправляет запрос на отправку кода, в ответе мы отдаем уже сам код, который должен прийти. И уже клиент сам разбирается с логикой правильный ли код вводит пользователь. Или лучше так не делать?
Если вам нужен 2FA, то код должен прийти в sms, иначе в этом нет смысла
имею ввиду, что мы отправляем смс с кодом, а в ответ на запрос(который инициировал отправку кода по смс) сервер отправляет сам код. Просто само приложение (не пользователь) уже будет знать какой код должен ввести пользователь
По поводу OTP - какая вообще практика с секретом - под каждого клиента свой, или один раз указывается для всего приложения?