Понимание того, как области могут использоваться для авторизации пользователей в Azure AD - PullRequest
0 голосов
/ 03 октября 2019

При чтении о Azure AD и OAuth всегда возникают области авторизации. Однако я не понимаю, как их можно использовать в следующем сценарии:

То, что я настроил:

У меня зарегистрировано два приложения, одно - SPA, а другое - WEB API. Я использую поток неявных грантов в SPA, чтобы запросить токен доступа для WEB API. В приложении WEB API я зарегистрировал четыре области A, B, C и D.

Что такое сценарий:

Пользователь прибывает в мой SPA и перенаправляется в Azure AD. Клиент делает запрос на токен доступа, используя неявный поток. При настройке клиента, который выполняет фактический запрос к Azure AD, предоставляются области (A, B, C и D).

Что я не понимаю:

Когда пользователь прибывает вSPA области уже прописаны в клиенте SPA. Я хочу, чтобы разные пользователи могли получить доступ к различным областям через веб-API.

Мои вопросы:

  • Области релевантны только тогда, когда у вас несколько клиентских приложений, а несвязано с тем, когда у вас есть несколько реальных пользователей?
  • Если области не применимы к пользователю, какие существуют альтернативы?
  • Если области применимы и к пользователям, как их использовать?

1 Ответ

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

Насколько я понимаю, ваши вопросы относятся к области действия пользователя Microsoft Azure AD V2. И это мой ответ ниже:

  1. Если вы используете подписанного пользователя для получения токена доступа (пароля)поток), область действия (другими словами, разрешение токена доступа) все связано с пользователем, мы называем разрешения здесь как Делегированные разрешения . Если вы используете клиентское приложение для получения токена доступа (поток client_credentials), разрешение токена доступа связано с клиентским приложением, здесь мы называем это разрешение Разрешения приложения . Если вы хотите узнать больше об этом, пожалуйста, обратитесь к этому официальному документу . Итак, область действия в вашем сценарии касается пользователя, а не клиентских приложений, которые вы использовали для входа в систему.
  2. Не совсем ясно, по вашему вопросу, не могли бы вы рассказать мне больше о вашем требовании или сценарии?
  3. Если вы просто хотите вызвать API-интерфейсы Microsoft Graph или API-интерфейсы, связанные с Office, серверная сторона проверит для вас области действия в маркере доступа. Если маркер доступа не имеет области действия, требуемой API, вы получите сообщение об ошибке 403 с сообщением: «Недостаточно прав для завершения операции». Нет необходимости использовать его преднамеренно. Этот документ также упоминал об этом.

Основываясь на вашем описании, вы хотите знать: возможно ли, чтодинамически получать токен доступа с областями (или разрешениями) вместо областей с жестким кодом. Это возможно при использовании конечной точки Azure AD V2 (Каждое приложение Azure AD имеет конечные точки v1 и v2, v1 только для сценариев B2B и не поддерживает получение маркера доступа с динамическими разрешениями). И этот документ хорошо описал ваше требование.

Если есть что-то неясное или недоразумение, пожалуйста, дайте мне знать:)

...