RFC WebAuthn
Эта тема призвана документировать цели проекта Discourse в области аутентификации FIDO2 / WebAuthn.
Зачем?
Добавление поддержки WebAuthn в Discourse повысит безопасность учетных записей пользователей, позволяя легко создавать учетные записи без пароля с использованием защищенных функций их устройств, таких как сканер отпечатков пальцев на смартфоне.
Методы аутентификации
- WebAuthn в качестве второго фактора аутентификации (альтернатива Google Authenticator)
- WebAuthn в качестве первого фактора аутентификации (альтернатива входу через социальные сети)
- WebAuthn в качестве многофакторной аутентификации (вход без имени пользователя)
WebAuthn в качестве второго фактора аутентификации
Это позволит пользователю Discourse, у которого уже есть активная учетная запись, использовать WebAuthn в качестве 2FA, тогда как на данный момент мы поддерживаем только TOTP.
Здесь может работать любой метод WebAuthn: биометрия устройства (сканер отпечатков пальцев в Android, Windows Hello на ноутбуке), защищенный чип устройства (TPM, Secure Enclave) или аппаратный ключ (например, Yubikey).
Это будет доступно каждому пользователю, который использует:
- Microsoft Edge на Windows с Windows Hello (распознавание лица, сканер отпечатков пальцев или PIN-код)
- Chrome на macOS с Touch ID
- Android-смартфон
- Ноутбук/десктоп/телефон + физический ключ (Yubikey, Google Titan)
WebAuthn в качестве первого фактора аутентификации (учетные записи без пароля)
Позволяет пользователю войти в свою учетную запись Discourse, используя аутентификацию WebAuthn вместо пароля. Если настроен аутентификатор первого фактора, пользователю будет предложено использовать его вместо пароля.
Те же методы аутентификации, что и для второго фактора, подойдут и для первого фактора: биометрия, защищенный чип или аппаратный ключ.
Процесс регистрации
Поле пароля отсутствует
Процесс входа
WebAuthn в качестве многофакторной аутентификации (вход без имени пользователя)
Предоставит альтернативный метод входа, который запрашивает только данные WebAuthn. Зарегистрированный ключ безопасности дополнительно передаст серверу Discourse информацию об идентификаторе пользователя.
Этот метод аутентификации в настоящее время требует современного ключа аутентификации (например, Yubikey 5) и Google Chrome 76+, поскольку он использует функцию под названием «Resident Keys» (резидентные ключи). Поскольку данные хранятся на аутентификаторе, могут быть ограничения: например, Yubikey 5C может хранить не более 25 таких ключей.
Процесс регистрации
Эти сценарии являются развитием сценария для входа без пароля, а не отдельным процессом входа. Это позволяет реализовать функциональность поэтапно.
Поле пароля отсутствует, добавлена дополнительная галочка для использования резидентных ключей
Процесс входа
Если имя пользователя оставлено пустым, мы попробуем получить
user_id из аутентификатора
Ссылки
Демонстрации
https://webauthndemo.appspot.com/
Ресурсы
https://medium.com/@herrjemand/introduction-to-webauthn-api-5fd1fb46c285


























