Я пытаюсь получить доступ к REST API Office365 с помощью OAuth2: http://msdn.microsoft.com/en-US/library/office/dn605901.aspx
Я выполнил все шаги, описанные здесь: http://blogs.msdn.com/b/exchangedev/archive/2014/03/25/using-oauth2-to-access-calendar-contact-and-mail.-api-in-exchange-online-in-office-365.aspx
У меня есть токен OAuth2 для ресурса "https://outlook.office365.com/
", но когда я пытаюсь получить доступ к API, я получаю следующую ошибку:
"The token has invalid value 'roles' for the claim type ''."
Мне удалось получить доступ к Windows Azure AD «Graph» API, используя ту же логику, и я не видел ничего, связанного с «претензией» нигде в документе. Я что-то упускаю ?
До сих пор я пытался добавить или удалить prompt=admin_consent из uri авторизации, что вызывает соответствующий диалог от Microsoft, но это ничего не меняет.
Я отправляю запрос на следующую конечную точку:
https://outlook.office365.com/EWS/OData/Me/Inbox/Messages
А это сырой ответ:
HTTP/1.1 401 Unauthorized
Cache-Control: private
Server: Microsoft-IIS/8.0
request-id: b5b3df59-c23d-4a47-83b7-79c2f7ed6211
Set-Cookie: ClientId=OGLQDFMY0KPSRZSMJBA; expires=Fri, 07-Aug-2015 14:00:33 GMT; path=/; HttpOnly
X-CalculatedBETarget: dm2pr0701mb1216.namprd07.prod.outlook.com
x-ms-diagnostics: 2000001;reason="The token has invalid value 'roles' for the claim type ''.";error_category="invalid_token"
X-DiagInfo: DM2PR0701MB1216
X-BEServer: DM2PR0701MB1216
X-AspNet-Version: 4.0.30319
Set-Cookie: exchangecookie=17695b411d96429b9a2e2db37905b856; expires=Fri, 07-Aug-2015 14:00:35 GMT; path=/; HttpOnly
Set-Cookie: [email protected]=u56Lnp2ejJqBnZqdm8zIm8bSzMnNyNLLz52a0sfGx8zSy8nHm53Myc+anMqcgZyTmomajZ6YmtGQkZKWnI2QjJCZi9GckJKBzc/Oy9LPxtLPyavOy8XPz8XMyg==; expires=Sat, 06-Sep-2014 14:00:35 GMT; path=/EWS; secure; HttpOnly
X-Powered-By: ASP.NET
X-FEServer: AMSPR02CA0019
WWW-Authenticate: Bearer client_id="00000002-0000-0ff1-ce00-000000000000", trusted_issuers="00000001-0000-0000-c000-000000000000@*", authorization_uri="https://login.windows.net/common/oauth2/authorize", error="invalid_token",Basic Realm="",Basic Realm=""
Date: Thu, 07 Aug 2014 14:00:34 GMT
Connection: close
Content-Length: 0
К вашему сведению, я разрабатываю приложение Symfony2, используя библиотеку «lusitanian/oauth» для OAuth с несколькими настройками для подключения к Azure AD.
Я буду очень благодарен за любую помощь, которую вы можете оказать :)
[ИЗМЕНИТЬ]
Между прочим, API отлично работает с базовой HTTP-аутентификацией, но это вынудило бы меня хранить все пароли пользователей в открытом виде в моей базе данных, что довольно ужасно.
Делегированные разрешения для Office 365 Exchange Online в серверной части Azure установлены на 3 (чтение контактов, календаря и почты).