SPA (Angular) IS4 аутентификация на основе уникального ключа - поток кода PKCE - PullRequest
0 голосов
/ 10 февраля 2020

Как я могу авторизовать клиента angular без взаимодействия с пользователем? Ни один пользователь не зарегистрирован и не сохранен, и не должен быть им. Все, что я хочу использовать для выдачи токена доступа, - это уникальный ключ, используемый для доступа к клиенту angular.

Этот ключ затем используется для выдачи доступа токен с ограниченным доступом к API, где заголовки проверяются и ключ проверяется по записям, сохраненным на совпадения.

Basi c Flow:

  1. Angular приложение открывается с уникальным ключевым параметром в URL
  2. Angular перенаправляет на IdentityServer для получения access_token на основе этого уникальный ключ
  3. Получает access_token и добавляет его в заголовок запроса, используемый для запроса моего API
  4. API Проверенный токен и получает данные на основе уникального ключа
  5. Данные возвращаются и отображаются в Angular приложении

На последующих этапах этого процесса мой API отправит запрос 2FA в IdentityServer, который содержит телефон / электронную почту вместе с уникальным ключом, который, в свою очередь, будет затем аутентифицирован с помощью новый тип гранта, добавляющий требуемые претензии для пользователя для получения полного доступа (аутентифицируется с помощью 2FA / MFA без зарегистрированного пользователя)

Шаги для 2FA:

  1. 1-3 - это аналогично basi c flow
  2. API Проверяет basi c access_token, проверяет сохраненные данные и требует более строгой аутентификации, чем "Basi c"
  3. API Вызывает identityserver для сохранения гранта 2FA с подробной информацией, необходимой для проверки пользователя.
  4. Identityserver отправляет код пользователю.
  5. API Возвращает 401 в angular приложение
  6. Angular перенаправляет на IdentityServer для проверки подлинности 2FA по тому же ключу, имеет базовый c access_token вместе с запросом, Identityserver отображает поле ввода «Verify code» и, если этот ключ совпадает с тем, что генерируется на стороне сервера, возвращает отказавшийся токен с добавленным заявки от 2FA.
  7. Angular теперь имеет токен 2FA для использования с API и имеет полный доступ.

Я не могу заставить это работать с PKCE Поток кода, поскольку это интерактивный поток, вызывающий каждый из шагов из Почтальона (учетные данные клиента с секретом), работает и возвращает ожидаемые утверждения в access_token. После того, что я прочитал, хранение секретов и использование их с SPA не является хорошей практикой, поэтому буду очень признателен за любые советы / ссылки на то, что я сам явно не нахожу.

...