Требуется информация с потоком Microsoft OAuth2

#azure #rest #oauth-2.0 #oauth

#azure #rest #oauth-2.0 #oauth

Вопрос:

Я пишу проект, состоящий из SPA и API. В SPA у меня есть кнопка для привязки учетных записей Google или Microsoft к учетной записи пользователя. API может всякий раз, когда захочет, вызывать API-интерфейсы Google / Microsoft.

Я добился успеха с помощью Google, используя поток кода авторизации:

  1. Из SPA перенаправление пользователя на https://accounts.google.com/o/oauth2/v2/auth с параметрами запроса response_type=code и access_type=offline
  2. Отправьте возвращенный код в API
  3. Вызов API https://oauth2.googleapis.com/token чтобы получить access_token и refresh_token
  4. Токены сохраняются в базе данных и могут использоваться всякий раз, когда этого хочет API.

==============

Microsoft имеет аналогичный поток авторизации (https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow ) но я не могу использовать authorization_code, полученный из SPA, в API из-за политик CORS. Я не использую коды PKCE, потому что токены извлекаются из API, которые используют client_id и client_secret.

=============

Я что-то упустил? Возможно ли вообще получить authorization_code из SPA и использовать его для генерации access_tokens и refresh_tokens из внешнего API?

Большое вам спасибо, извините за мой английский!

Ответ №1:

В SPA многие серверы авторизации и поставщики удостоверений не поддерживают запросы CORS, в таком случае ваш вариант — использовать поток неявного предоставления Azure AD, а не поток кода авторизации, вы можете получить токен доступа напрямую через /authorize конечную точку. Этот поток не предоставляет токены обновления, поэтому ваше приложение должно быть готово периодически обновлять эти токены.

Ссылка — платформа идентификации Microsoft и неявный поток предоставления