Я пытаюсь получить доступ к API REST SharePoint [Online] из внешнего приложения. Я зарегистрировал его в Azure под учетной записью администратора и назначил ему соответствующие разрешения, делегированные пользователям (Office 365 SharePoint Online
).Azure AD OAuth Аутентификация с ADAL: что такое идентификатор ресурса?
Я использую ADAL.js, чтобы позвонить по телефону acquireToken
и использовать этот токен в своем заголовке Authorization
. Действительный вид лексема получает прилагается, но я получаю следующее сообщение об ошибке 401 в ответ:
Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown
Метод acquireToken() не принимать resource
параметров, а также от того, что я прочитал в Интернете , это значение для API-интерфейса SharePoint должно быть https://[tenant].sharepoint.com
, но это возвращает только токен-маркер-носитель null
.
То, что я делаю вместо этого (которое вызывает предыдущую ошибку 401), - это просто установить ресурс на идентификатор приложения, сгенерированный в Azure. Это заканчивается тем, что вы устанавливаете как токен в моем кеше localStorage. Таким образом, токен-носитель возвращает, но я получаю исключение.
Два вопроса:
Что такое строка ресурса, и то, что соответствующее значение для вызова на acquireToken(), видя, что вызов его с моим приложением ID (то же самое, я использую как идентификатор клиента в моей конфигурации ADAL) является единственным значением, которое успешно возвращает токен-носитель? Есть ли список правильных строк ресурсов для каждого API Microsoft? У меня возникли проблемы с поиском документации по этой теме.
Является ли проблема с моей конфигурацией на Azure?
Спасибо!
Вы когда-нибудь это понимаете? У меня такая же проблема. я вижу, что возвращался дополнительный заголовок ответа (x-ms-diagnostics: 3000003; reason = "Недопустимая аудитория Uri 'f8f8d2ad-7c9d-4aac-80eb-3f00a263c879'."; category = "invalid_client") – Russellg