Поддержка WebAuthn

Это очень хорошо!

Однако есть один небольшой нюанс: в Safari на Mac функция веб-аутентификации доступна только разработчикам и отключена по умолчанию. При включении она работает отлично. Но, вероятно, следует отображать сообщение или предупреждение, если веб-аутентификация не включена. В настоящее время в стандартной версии Safari в интерфейсе ничего не указывает на то, что процесс регистрации не будет работать (в консоли есть ошибка):

11 лайков

Мы можем использовать фичер-детект через navigator.credentials, полагаю.

9 лайков

Некоторым людям трудно оправдать дополнительные расходы, хотя это приятно :smiley:

7 лайков

Ах, я проверил наличие функции в navigator.credentials.get, но не в create, извините! Это быстро исправлю!

8 лайков

Последний коммит, похоже, работает. Я только что смог использовать двухфакторную аутентификацию (с отпечатком пальца!) на своём Android-телефоне.

6 лайков

Привет, Penar, у меня уже есть исправление. Можешь проверить его в Safari? [FIX] Check webauthn support when registering security keys by mjrbrennan · Pull Request #8146 · discourse/discourse · GitHub. Я просто не уверен, что метод определения наличия функции, который я использую, будет работать в Safari, если эта функция отключена.

9 лайков

Сэм опередил меня с объединением, но в Safari это выглядит хорошо, спасибо, Мартин!

10 лайков

Правильно, но в данном случае это обычная часть работы в Discourse, поэтому мы возьмём расходы на себя. Извините, если это было неясно, но, надеюсь, теперь всё понятно?

9 лайков

Поздравляем с поддержкой WebAuthn! Интересно, что вы реализовали собственное решение вместо использования гема webauthn. Если у вас есть какие-либо отзывы для нас, я с радостью их выслушаю :smiley:

Я заметил, что в вашей реализации поддерживается только алгоритм -7 (ES256), однако платформенные аутентификаторы Windows Hello (на базе аппаратного обеспечения TPM 2.0) требуют алгоритм -257 (RS256), согласно документации Microsoft. TPM 2.0 требуется с 28 июля 2016 года для новых настольных моделей Windows 10, поэтому это значительное количество аппаратного обеспечения.

Одно предложение по макету «Потока входа»: у WebAuthn есть официальный логотип, который можно использовать вместо общего изображения отпечатка пальца. Помимо отпечатка пальца, распространёнными вариантами проверки пользователя также являются распознавание лица, свайп-паттерн или PIN-код.

10 лайков

@Martin_Brennan, есть какие-то мысли по поводу :arrow_double_up:

6 лайков

Спасибо за обратную связь, Рэйф. Нам нужно будет добавить дополнительный алгоритм. И спасибо за ссылку на официальный логотип! Моя идея при выборе только одного алгоритма заключалась в том, чтобы добавить минимально необходимое количество поддерживаемых алгоритмов для работы версии V1, так как я не был уверен в нюансах всех алгоритмов, а ES256 использовался во всех примерах, которые мне удалось найти.

Что касается причины, по которой я тогда отказался от использования gem, я долго раздумывал над этим и знал, что меня рано или поздно спросят об этом решении. Я, конечно, изучил значительную часть кода в gem, чтобы лучше понять его реализацию. Основные причины были следующими:

  1. Нежелание добавлять дополнительную зависимость в Discourse. Каждая зависимость gem добавляет дополнительные накладные расходы, независимо от того, насколько превосходен код этого gem.
  2. Желание иметь хорошее понимание того, как работает этот критически важный компонент безопасности Discourse. Я думал, что размещение кода в ядре Discourse сделает его более понятным и простым для расширения, без использования «чёрного ящика», так сказать. (Это не критика самого gem или его сложности; я понимаю, что люди могут просто посмотреть код там, и мне было довольно легко понять, что происходит).
  3. Нежелание добавлять больше кода, чем необходимо для запуска WebAuthn. Например, мы исключили аттестацию из нашей первоначальной реализации. Я не видел смысла добавлять целый набор инструментов, когда нам нужен был только гаечный ключ.

Тем не менее, это могло быть ошибкой с моей стороны. Если мы перейдём к версии V2, V3 и так далее с поддержкой аттестации, большим количеством алгоритмов и прочим, нам может стать слишком трудозатратно становиться «экспертами по WebAuthn», так сказать. В таком случае я думаю, что мы сможем пересмотреть использование gem.

16 лайков

Поддержка дополнительного алгоритма RS256 теперь включена в основную ветку FEATURE: Support RS256 algorithm for webauthn by martin-brennan · Pull Request #8385 · discourse/discourse · GitHub

14 лайков

Похоже, что iOS 13.3 и macOS Catalina 10.15.2 теперь также поддерживают FIDO2-auth :partying_face:

Это обновление также включает исправления ошибок и другие улучшения. Это обновление:

  • Добавляет поддержку FIDO2-совместимых ключей безопасности NFC, USB и Lightning в Safari
8 лайков

Жаль, что iPhone всё же требует стороннего устройства для этого. Надеюсь, что в iOS++ это будет встроено с аутентификацией устройства и защищённым чипом, как в Windows, macOS и Android.

9 лайков

Я так взволнован, что могу войти в Discourse, просто посмотрев на него!!

Честно говоря, я немного удивлён, что встроенная поддержка аутентификаторов ещё не реализована… но это всё равно отличные новости — я продолжу держать кулаки.

7 лайков

Я заметил возможное несоответствие в интерфейсе при отображении активации двухфакторной аутентификации (2FA) для некоторых пользователей на размещённом экземпляре Discourse:

При перечислении всех пользователей с ролью «Staff» мой аккаунт не отображается как имеющий включённую 2FA:

  • Страница сводки по аккаунту подразумевает, что 2FA включена, исходя из текста кнопки «Управление двухфакторной аутентификацией».

  • В разделе «Двухфакторная аутентификация» указано, что ключ безопасности активирован, и что второй фактор можно отключить.

  • Другие пользователи на том же экземпляре, которые выбрали использование токеновой аутентификации (без ключа безопасности), отображаются с иконкой замка в списке «все пользователи».

Пожалуйста, дайте знать, является ли это ошибкой интерфейса или же простого добавления ключа безопасности недостаточно для включения 2FA на этой платформе.

5 лайков

Я разберусь с этим, но, скорее всего, это просто ошибка интерфейса в списке пользователей, если секция 2FA в интерфейсе отображает всё корректно. Спасибо за сообщение!

9 лайков

В этом и была проблема. Исправление собирается здесь, и я объединю его, как только смогу: FIX: Admin user list not showing 2FA icon for only security keys enabled by martin-brennan · Pull Request #8839 · discourse/discourse · GitHub

Редактирование: Теперь это исправлено.

11 лайков

Добро пожаловать в новый смелый мир

Apple присоединилась к альянсу FIDO (также известному как Fast Identity Online) — организации, в которую уже входят такие гиганты, как Google, Intel, Microsoft и Samsung.

12 лайков

Это работает с помощью TouchID / FaceID в iOS 14.

11 лайков