Однако есть один небольшой нюанс: в Safari на Mac функция веб-аутентификации доступна только разработчикам и отключена по умолчанию. При включении она работает отлично. Но, вероятно, следует отображать сообщение или предупреждение, если веб-аутентификация не включена. В настоящее время в стандартной версии Safari в интерфейсе ничего не указывает на то, что процесс регистрации не будет работать (в консоли есть ошибка):
Правильно, но в данном случае это обычная часть работы в Discourse, поэтому мы возьмём расходы на себя. Извините, если это было неясно, но, надеюсь, теперь всё понятно?
Поздравляем с поддержкой WebAuthn! Интересно, что вы реализовали собственное решение вместо использования гема webauthn. Если у вас есть какие-либо отзывы для нас, я с радостью их выслушаю
Я заметил, что в вашей реализации поддерживается только алгоритм -7 (ES256), однако платформенные аутентификаторы Windows Hello (на базе аппаратного обеспечения TPM 2.0) требуют алгоритм -257 (RS256), согласно документации Microsoft. TPM 2.0 требуется с 28 июля 2016 года для новых настольных моделей Windows 10, поэтому это значительное количество аппаратного обеспечения.
Одно предложение по макету «Потока входа»: у WebAuthn есть официальный логотип, который можно использовать вместо общего изображения отпечатка пальца. Помимо отпечатка пальца, распространёнными вариантами проверки пользователя также являются распознавание лица, свайп-паттерн или PIN-код.
Спасибо за обратную связь, Рэйф. Нам нужно будет добавить дополнительный алгоритм. И спасибо за ссылку на официальный логотип! Моя идея при выборе только одного алгоритма заключалась в том, чтобы добавить минимально необходимое количество поддерживаемых алгоритмов для работы версии V1, так как я не был уверен в нюансах всех алгоритмов, а ES256 использовался во всех примерах, которые мне удалось найти.
Что касается причины, по которой я тогда отказался от использования gem, я долго раздумывал над этим и знал, что меня рано или поздно спросят об этом решении. Я, конечно, изучил значительную часть кода в gem, чтобы лучше понять его реализацию. Основные причины были следующими:
Нежелание добавлять дополнительную зависимость в Discourse. Каждая зависимость gem добавляет дополнительные накладные расходы, независимо от того, насколько превосходен код этого gem.
Желание иметь хорошее понимание того, как работает этот критически важный компонент безопасности Discourse. Я думал, что размещение кода в ядре Discourse сделает его более понятным и простым для расширения, без использования «чёрного ящика», так сказать. (Это не критика самого gem или его сложности; я понимаю, что люди могут просто посмотреть код там, и мне было довольно легко понять, что происходит).
Нежелание добавлять больше кода, чем необходимо для запуска WebAuthn. Например, мы исключили аттестацию из нашей первоначальной реализации. Я не видел смысла добавлять целый набор инструментов, когда нам нужен был только гаечный ключ.
Тем не менее, это могло быть ошибкой с моей стороны. Если мы перейдём к версии V2, V3 и так далее с поддержкой аттестации, большим количеством алгоритмов и прочим, нам может стать слишком трудозатратно становиться «экспертами по WebAuthn», так сказать. В таком случае я думаю, что мы сможем пересмотреть использование gem.
Жаль, что iPhone всё же требует стороннего устройства для этого. Надеюсь, что в iOS++ это будет встроено с аутентификацией устройства и защищённым чипом, как в Windows, macOS и Android.
Я так взволнован, что могу войти в Discourse, просто посмотрев на него!!
Честно говоря, я немного удивлён, что встроенная поддержка аутентификаторов ещё не реализована… но это всё равно отличные новости — я продолжу держать кулаки.
Я заметил возможное несоответствие в интерфейсе при отображении активации двухфакторной аутентификации (2FA) для некоторых пользователей на размещённом экземпляре Discourse:
При перечислении всех пользователей с ролью «Staff» мой аккаунт не отображается как имеющий включённую 2FA:
Страница сводки по аккаунту подразумевает, что 2FA включена, исходя из текста кнопки «Управление двухфакторной аутентификацией».
В разделе «Двухфакторная аутентификация» указано, что ключ безопасности активирован, и что второй фактор можно отключить.
Другие пользователи на том же экземпляре, которые выбрали использование токеновой аутентификации (без ключа безопасности), отображаются с иконкой замка в списке «все пользователи».
Пожалуйста, дайте знать, является ли это ошибкой интерфейса или же простого добавления ключа безопасности недостаточно для включения 2FA на этой платформе.
Я разберусь с этим, но, скорее всего, это просто ошибка интерфейса в списке пользователей, если секция 2FA в интерфейсе отображает всё корректно. Спасибо за сообщение!
Apple присоединилась к альянсу FIDO (также известному как Fast Identity Online) — организации, в которую уже входят такие гиганты, как Google, Intel, Microsoft и Samsung.