我正在尝试使用 OAuth2 访问 Office365 REST API: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-交换-online-in-office-365.aspx
我有一个用于资源“ https://outlook.office365.com/
”的 OAuth2 令牌,但是当我尝试访问 API 时出现以下错误:
"The token has invalid value 'roles' for the claim type ''."
我成功地设法使用相同的逻辑访问 Windows Azure AD“图形”API,并且我在文档中的任何地方都没有看到任何与“声明”相关的内容。我错过了什么吗?
到目前为止,我已经尝试在授权 uri 中添加或删除 prompt=admin_consent ,这会触发来自微软的正确对话框,但这并没有改变任何东西。
我正在向以下端点发送请求:
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: X-BackEndCookie=OrganizationAnchor@cleverage.onmicrosoft.com=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
仅供参考,我正在使用 OAuth 的“lusitanian/oauth”库开发一个 Symfony2 应用程序,并进行一些调整以连接到 Azure AD。
我将非常感谢任何人可以提供的帮助:)
[编辑]
顺便说一句,该 API 可以与 Basic HTTP Auth 一起正常工作,但它会迫使我将所有用户的密码以明文形式存储在我的数据库中,这非常可怕。
Azure 后端中 Office 365 Exchange Online 的委派权限设置为 3(读取联系人、日历和邮件)