Graph API 403 Forbidden-令牌中必须包含scp或角色声明

时间:2020-09-09 17:33:29

标签: sharepoint azure-active-directory microsoft-graph-api sharepoint-api

调用Sharepoint / sites / root时,我的应用失败,并显示403:禁止消息。我的授权流程遵循以下步骤here

要获得令牌,我首先致电 https://login.microsoftonline.com/common/adminconsent?client_id=XXX&redirect_uri=XXX&state=12345

这使我可以与管理员登录并发现tenant_id。如果接受,该调用将返回查询参数admin_consent = TRUE和tenant_id。

然后,我使用它在请求中的以下正文中对https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token进行第二次POST调用: client_id = XXX&grant_type = client_credentials&client_secret = XXX&scope = https%3A%2F%2Fgraph.microsoft.com%2F.default

注意:范围设置为默认(https://graph.microsoft.com/.default)。注册应用程序时,我正在请求将Sites.ReadWrite.All作为应用程序权限。

答复为:

'token_type': 'Bearer',
'expires_in': 3599,
'ext_expires_in': 3599,
'access_token': 'eyJ0...' (deliberately masked)

然后,我尝试在/ sites / root端点的应用程序中使用它,并收到错误消息“令牌中需要存在scp或角色声明”。当我使用https://jwt.io/#encoded-jwt解码令牌时,看不到'roles'参数可见。

在Azure应用程序中,我可以看到该应用程序确实已被成功授予管理员访问权限,所以为什么我的令牌没有正确返回?我想念什么?当然,由用户/ adminconsent作为第一个API调用,我也不需要在Azure门户中手动授权吗?

编辑:由于第一个令牌即将到期,因此在大约50分钟后进行第二次API调用以获取新令牌,我似乎在解码的令牌中返回了“角色”。图表api上是否存在导致此问题的错误?

"roles": [
    "Sites.ReadWrite.All"
],

1 个答案:

答案 0 :(得分:0)

图形api上是否存在导致此问题的错误?

这不是错误,您所做的一切都是正确的,只是一个简单的延迟问题,当您请求令牌时权限未生效。

相关问题