Sanity Check API Microsoft Graph и создание токена OAuth от Postman

Я кодирую против Microsoft Graph API и пытаюсь доказать возможность создания токена OAuth. Я использую Postman, и мое приложение размещено на Azure Active Directory. Я столкнулся с проблемой в Postman при попытке передать правильное Scopes - я пытаюсь передать User.read, однако Postman не создает токен.

Мои настройки:

URL-адрес авторизации: https://login.windows.net/{my_tenent}/oauth2/authorize

URL-адрес доступа: https://login.windows.net/{my_tenent}/oauth2/token

Область действия: User.readAll

Являются ли эти значения правильными для передачи для создания токена OAuth?


person jdave    schedule 01.02.2017    source источник


Ответы (3)


Похоже, вы смешиваете конечные точки v1 и v2 здесь. Я написал руководство по Microsoft v2 Endpoint Primer, которое может вам помочь.

URI для аутентификации с v2 должен быть https://login.microsoftonline.com/common/oauth2/v2.0/, а не https://login.windows.net/{my_tenent}/oauth2/authorize.

При запросе областей с помощью Graph обязательно используйте полный URI, а не только само имя области. Например, user.read следует запрашивать как https://graph.microsoft.com/user.read. Несколько областей действия разделены пробелами, поэтому запросы user.read и mail.read будут отформатированы как "https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read.

Если вы предпочитаете использовать конечную точку v1, вы не запрашиваете области в рамках рабочего процесса OAUTH. В версии 1 области определяются в Azure Active Directory при регистрации приложения.

Если вы не уверены, что использовать, взгляните на Выбор между конечными точками Azure AD и Azure AD версии 2.0. В общем, я склонен рекомендовать версию 2, поскольку она в конечном итоге заменит устаревшую реализацию версии 1. Однако существуют некоторые более старые API (EWS, SfB и т. д.), которые на данный момент поддерживают только v1, поэтому в некоторых случаях выбор делается за вас.

person Marc LaFleur    schedule 02.02.2017

Настроили ли вы приложение для запроса разрешений к Microsoft Graph?

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-integrating-applications

Раздел «Разрешения для других приложений». Вы должны статически выбрать области, с которыми ваше приложение будет вызывать Microsoft Graph, если только вы не используете конечную точку версии 2, которая поддерживает динамическое согласие.

Позвольте мне знать, если это помогает!

person Shawn Tabrizi    schedule 01.02.2017

Я боролся с этой же проблемой почти день, прежде чем, наконец, понял это. Вот настройки, которые работают для меня:

  • Имя токена: [все, что вы хотите]
  • URL-адрес аутентификации: https://login.windows.net/common/oauth2/authorize?resource=https://graph.microsoft.com
  • URL-адрес токена доступа: https://login.windows.net/common/oauth2/token?resource=https://outlook.office365.com/ (хотя я не думаю, что обновление работает)
  • Идентификатор клиента: [идентификатор клиента вашего приложения]
  • Секрет клиента: [секрет клиента вашего приложения]
  • Прицел: у меня тут куча прицелов, но они, кажется, игнорируются. Области должны быть установлены в консоли приложения
  • Тип гранта: Код авторизации
  • Установите флажок «Запрашивать токен доступа локально»

Если все работает, вы должны получить экран входа в систему, когда вы нажмете «Запросить токен».

person wharding28    schedule 01.02.2017
comment
Причина, по которой Scope игнорируется, заключается в том, что вы звоните в более старую конечную точку v1. Области определяются только динамически с помощью конечной точки v2. - person Marc LaFleur; 02.02.2017