【发布时间】:2018-08-17 22:56:21
【问题描述】:
当我调用https://graph.windows.net/myorganization/oauth2PermissionGrants?api-version=1.5 端点时,我收到了Your access token has expired. Please renew it before submitting the request.。
为了防止出现任何愚蠢的问题 - 是的,我知道建议使用 Microsoft Graph 而不是 Azure AD Graph。我知道它并且我正在使用它。但对于我目前的情况,我需要准确地请求Azure AD Graph。
测试用例:
- 我成功登录
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=....并在响应中得到code。 - 我成功兑换
code并在https://login.microsoftonline.com/common/oauth2/v2.0/token上得到access_token。 - 我成功地向任何
Microsoft Graph端点(即https://graph.microsoft.com/education/me/classes)发出请求。 - 我打电话给
https://graph.windows.net/myorganization/oauth2PermissionGrants?api-version=1.5。 - 我收到错误
Authentication_ExpiredTokenYour access token has expired. Please renew it before submitting the request. - 我成功地向任何
Microsoft Graph端点发出请求,所以access_token是有效的。
根据这篇文章:https://docs.microsoft.com/azure/active-directory/develop/active-directory-appmodel-v2-overview,我可以使用这个访问令牌来访问Microsoft Graph API 和Azure AD Graph API。
所以,我正在使用 v2.0,它应该适用于那些:https://docs.microsoft.com/azure/active-directory/develop/active-directory-protocols-oauth-code。
我做错了什么?
谢谢!
【问题讨论】:
-
嗯,我找不到您可以将令牌用于两个 API 的信息。我也没有读到任何提到你可以使用 v2 的 Azure AD Graph :) OAuth 权限授予应该可以从 MS Graph 的 beta 端点获得,所以你需要访问它吗?
-
来自docs.microsoft.com/en-us/azure/active-directory/develop/… Active Directory (Azure AD) 使用 OAuth 2.0 使您能够授权访问 Azure AD 租户中的 Web 应用程序和 Web API。本指南与语言无关,描述了如何在不使用我们的任何开源库的情况下发送和接收 HTTP 消息。
-
我不想使用 beta 端点。我想使用 msdn.microsoft.com/en-us/library/azure/ad/graph/api/…。
-
该文档适用于 v1。您正在使用 v2。
-
好吧,我还没有尝试过 :) 两个 API 之间确实有一些范围重叠,但通常每个 API 都需要一个令牌,因为令牌中的受众设置为始终以一个 API 为目标。跨度>
标签: azure oauth-2.0 azure-active-directory access-token