Многофакторная аутентификация с использованием гаджета пользователя?
Я собираюсь реализовать компонент, ответственный за работу с пользователями. Естественно, он будет включать в себя логику аутентификации.
Я бы хотел сделать что-то вроде того, что используется для Google аккаунтов, только без двухзначных чисел, которые нужно выбирать в отдельном окошке при попытке зайти с нового устройства.
В общем, идея следующая:
Когда пользователь регистрируется, ему на номер телефона или адрес электронной почты (в зависимости от того, что он выберет) приходит токен, который необходимо использовать для подтверждения. Когда пользователь вводит его, девайс, с которого он производил регистрацию, сохраняется в БД. Таким образом ему не придется проходить еще один процесс верификации - он сможет зайти сразу после подтверждения регистрации.
Когда пользователь пытается войти и мы видим, что он заходит с привычного девайса - осуществляем банальную проверку на основании пароля. Если же случилось так, что девайс поменялся - запрашиваем подтверждение, отправляя токен на адрес электронной почты или номер телефона (опять-таки, зависит от того, что ввел пользователь для того, чтобы войти). После того, как вход был подтвержден, сохраняем новый девайс пользователя для дальнейшей проверки.
Меня интересует то, каким образом я мог бы получить уникальный идентификатор для каждого устройства пользователя - fingerprint девайса, если я не ошибаюсь. Мне не хотелось бы, чтобы система воспринимала одно и то же устройство, зашедшее с разных браузеров как два разных и лишний раз теребило пользователя.
Реализовывать все планирую на FastAPI.
Никаких уже готовых решений для этого пока еще не видел.
Подскажите, пожалуйста, каким образом можно бы было реализовать такой компонент.
Когда-то задавался подобным вопросом. Хотел получить mac адрес устпойства через джС. Ответ прост - сделать это невозможно. В целях безопасности джС не может получить таких конфиденциальных данных. Обрати внимание что даже в гугл через разные браузеры нужно конечно же входить отдельно. Поэтому проще всего проверку через мейл. Можно и через смс или звонок, но это уже денежки. Так что копай в другом направлении.