Можно ли получить область разрешений пользователя с помощью токена доступа Microsoft Graph API (а не области приложения)? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть приложение AAD со списком предоставленных делегированных разрешений. Например:

Directory.AccessAsUser.All
Directory.ReadWrite.All
Group.ReadWrite.All

В основном у пользователей нет таких разрешений. Я бы хотел скрыть для них некоторые элементы пользовательского интерфейса (например, группу редактирования)

Но в ответ с токеном доступа я получаю все области применения. И эта информация бесполезна. Я хочу, чтобы пользователи не получали ошибок типа «Недостаточно прав для завершения операции» .

Возможно ли это?

1 Ответ

0 голосов
/ 22 июня 2020

На основании комментария вы хотите получить некоторую информацию о потоке кода аутентификации при использовании Microsoft Graph.

См. Официальный документ: Получите доступ от имени пользователя в Microsoft Graph API.

Есть 2 основных шага:

Запрос авторизации :

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=offline_access%20user.read%20mail.read
&state=12345

Вы получите параметр code. Используйте его на втором этапе:

Запрос токена :

POST /{tenant}/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=user.read%20mail.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=JqQX2PNo9bpM0uEihUPzyrh    // NOTE: Only required for web apps

Затем вы получите токен доступа, который содержит делегированные разрешения.

Для как реализовать поток кода аутентификации в коде, см. Обзор SDK Microsoft Graph . Провайдер кода авторизации будет полезен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...