Identity Server 4 с WebAuthN - с использованием GrantType (FIDO 2.0) - PullRequest
0 голосов
/ 21 октября 2019

Я использую Identity Server 4 для аутентификации пользователей с помощью WebAuthN (https://w3c.github.io/webauthn/).

У меня есть несколько клиентов, которые обращаются к клиенту API. Мой клиент API отвечает за выбор поставщика аутентификации для использования, передаваяdata (server to server, server to external api) и управление процессом авторизации.

Один из наших поставщиков аутентификации, которым мы пользуемся, - это сервер идентификации 4, и именно здесь мы реализуем WebAuthN.

Я не уверен, что является рекомендуемым способом реализации этого в Identity Server 4. У меня есть 2 варианта

  1. Создание конечной точки API на сервере идентификации для аутентификации учетных данных пользователей
  2. Создайте тип предоставления расширения и вызовите API TokenEndpoint, используя новый тип предоставления (мой тип предоставления расширения будет представлять собой смесь встроенного типа предоставления Hybrid с последующим кодом WebAuthN).

Являются ли оба способа допустимыми с точки зрения безопасности (не открывая дыру) и соответствуют ID4, или есть другой способ?

1 Ответ

0 голосов
/ 21 октября 2019

Я недавно проделал некоторую работу по реализации этого, но для второго фактора только на этом этапе.

Короче говоря, его нужно запускать в контексте браузера конечного пользователя (учитывая, что это JavaScript API), поэтому его действительно нужно встроить в поток входа через конечную точку authorize.

Например (при условии, что локальный клиент или сеансы IDP уже не существуют):

  1. Пользователь посещает клиентское приложение
  2. Клиент перенаправляет на authorize конечную точку
  3. Авторизация конечной точки перенаправляет на интерактивный интерфейс аутентификации, который затем решает, какой метод использовать
  4. Выполните вызов WebAuthn, подтвердите результат и создайте файл cookie сеанса
  5. Перенаправьте обратно на authorize конечную точку
  6. Выпуск токенов и перенаправление на клиент

Вам также необходимо предоставить пользователям возможность зарегистрировать свои аутентификаторы. Полученные учетные данные привязаны к источнику сайта, поэтому это должно быть сделано в рамках вашей реализации identityserver4 - того же приложения, которое будет выполнять сложные задачи.

...