Аутентификация Azure AD OAuth с помощью ADAL: какой идентификатор ресурса?

Я пытаюсь получить доступ к REST API SharePoint [Online] из внешнего приложения. Я зарегистрировал его в Azure под учетной записью администратора и назначил ему соответствующие разрешения, делегированные пользователем (Office 365 SharePoint Online).

Я использую ADAL.js для вызова acquireToken и использую этот токен в моем заголовке Authorization. Прилагается действительный токен, но в ответе появляется следующая ошибка 401:

Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown

Метод AcquaToken () принимает параметр resource, и из того, что я читал в Интернете, это значение для API SharePoint должно быть https://[tenant].sharepoint.com, но оно возвращает только токен носителя null.

Вместо этого я делаю (что вызывает предыдущую ошибку 401) просто устанавливаю для ресурса идентификатор приложения, созданный в Azure. В конечном итоге это устанавливается как токен в моем кеше localStorage. Токен на предъявителя действительно возвращается, но я получаю исключение.

Два вопроса:

  1. Что такое строка ресурса и какое значение следует вызывать в AcquaToken (), поскольку вызов ее с идентификатором моего приложения (то же самое, что я использую в качестве идентификатора клиента в моей конфигурации ADAL) является единственным значением, которое возвращает токен на предъявителя успешно? Есть ли список подходящих строк ресурсов для каждого Microsoft API? У меня возникли проблемы с поиском документации по этой теме.

  2. Проблема с моей конфигурацией в Azure?

Спасибо!


person John V    schedule 06.02.2017    source источник
comment
Вы когда-нибудь в этом разбирались? У меня такая же проблема. Я вижу, что был возвращен дополнительный заголовок ответа (x-ms-diagnostics: 3000003; причина = Недопустимая аудитория Uri 'f8f8d2ad-7c9d-4aac-80eb-3f00a263c879'.; category = invalid_client)   -  person Russellg    schedule 10.07.2017


Ответы (1)


Чтобы использовать REST SharePoint в Интернете, мы можем использовать REST службы обнаружения для поиска конечной точки службы SharePoint. Все идентификаторы ресурса службы можно найти в serviceResourceId ответа.

Вы также можете рассмотреть возможность использования Microsoft Graph, который предоставляет несколько API из Office 365 и другого облака Microsoft. услуги через одну конечную точку.

Подробнее о REST API службы обнаружения вы можете обратиться к здесь.

person Fei Xue - MSFT    schedule 07.02.2017