我越来越Your access token has expired. Please renew it before submitting the request.
当我打电话时https://graph.windows.net/myorganization/oauth2PermissionGrants?api-version=1.5
端点。
为了防止出现任何愚蠢的问题 - 是的,我知道使用Microsoft Graph
推荐代替Azure AD Graph
。我知道它并且我正在使用它。但对于我目前的情况,我需要准确地请求Azure AD Graph
.
测试案例:
- 我成功登录
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=....
并得到code
在回应中。
- 我兑换成功
code
并得到access_token
on https://login.microsoftonline.com/common/oauth2/v2.0/token
.
- 我成功向任何人提出请求
Microsoft Graph
端点(即https://graph.microsoft.com/education/me/classes
).
- I call
https://graph.windows.net/myorganization/oauth2PermissionGrants?api-version=1.5
.
- 我收到错误
Authentication_ExpiredToken
Your access token has expired. Please renew it before submitting the request.
- 我成功向任何人提出请求
Microsoft Graph
端点,所以access_token
已验证。
基于这篇文章:https://learn.microsoft.com/azure/active-directory/develop/active-directory-appmodel-v2-overview https://learn.microsoft.com/azure/active-directory/develop/active-directory-appmodel-v2-overview,我可以使用此访问令牌来访问两者Microsoft Graph API
也Azure AD Graph API
.
所以,我使用 v2.0 应该适用于:https://learn.microsoft.com/azure/active-directory/develop/active-directory-protocols-oauth-code https://learn.microsoft.com/azure/active-directory/develop/active-directory-protocols-oauth-code.
我做错了什么?
谢谢你!
用于调用 Microsoft Graph 的令牌不能用于调用 Azure AD Graph API。
当您查看 Azure AD 中的访问令牌时,有一个名为aud
代表“观众”。此属性告诉接收令牌的 API 该令牌的有效受众。
如果我拥有一个 API“WebAPI1”,并且我获得了一个令牌,其中受众是其他内容,例如“WebAPI2”,我应该拒绝该令牌,并且不向客户端提供对我的 API 的访问权限。此行为的原因应该是显而易见的,但如果不进行此检查,则会导致重大安全问题。
The aud
Microsoft Graph 的值为https://graph.microsoft.com/
而aud
对于 Azure AD Graph API 来说是https://graph.windows.net/
.
请求访问令牌时,您需要指定您想要使用令牌的特定资源scopes
范围。可以找到此信息和更多信息here https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-scopes.
这里的解决方案是为不同的 API 获取不同的访问令牌,您的问题应该得到解决。
让我知道这是否有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)