Как я могу авторизовать клиента angular без взаимодействия с пользователем? Ни один пользователь не зарегистрирован и не сохранен, и не должен быть им. Все, что я хочу использовать для выдачи токена доступа, - это уникальный ключ, используемый для доступа к клиенту angular.
Этот ключ затем используется для выдачи доступа токен с ограниченным доступом к API, где заголовки проверяются и ключ проверяется по записям, сохраненным на совпадения.
Basi c Flow:
- Angular приложение открывается с уникальным ключевым параметром в URL
- Angular перенаправляет на IdentityServer для получения access_token на основе этого уникальный ключ
- Получает access_token и добавляет его в заголовок запроса, используемый для запроса моего API
- API Проверенный токен и получает данные на основе уникального ключа
- Данные возвращаются и отображаются в Angular приложении
На последующих этапах этого процесса мой API отправит запрос 2FA в IdentityServer, который содержит телефон / электронную почту вместе с уникальным ключом, который, в свою очередь, будет затем аутентифицирован с помощью новый тип гранта, добавляющий требуемые претензии для пользователя для получения полного доступа (аутентифицируется с помощью 2FA / MFA без зарегистрированного пользователя)
Шаги для 2FA:
- 1-3 - это аналогично basi c flow
- API Проверяет basi c access_token, проверяет сохраненные данные и требует более строгой аутентификации, чем "Basi c"
- API Вызывает identityserver для сохранения гранта 2FA с подробной информацией, необходимой для проверки пользователя.
- Identityserver отправляет код пользователю.
- API Возвращает 401 в angular приложение
- Angular перенаправляет на IdentityServer для проверки подлинности 2FA по тому же ключу, имеет базовый c access_token вместе с запросом, Identityserver отображает поле ввода «Verify code» и, если этот ключ совпадает с тем, что генерируется на стороне сервера, возвращает отказавшийся токен с добавленным заявки от 2FA.
- Angular теперь имеет токен 2FA для использования с API и имеет полный доступ.
Я не могу заставить это работать с PKCE Поток кода, поскольку это интерактивный поток, вызывающий каждый из шагов из Почтальона (учетные данные клиента с секретом), работает и возвращает ожидаемые утверждения в access_token. После того, что я прочитал, хранение секретов и использование их с SPA не является хорошей практикой, поэтому буду очень признателен за любые советы / ссылки на то, что я сам явно не нахожу.