我的应用程序在调用Sharepoint /sites/root时失败,并显示403: Forbidden消息。我的授权流程遵循以下步骤。
为了得到一个代币,我首先打电话到https://login.microsoftonline.com/common/adminconsent?client_id=XXX
这允许我使用管理员登录并发现tenant_id。如果接受,调用将返回查询参数 admin_consent = TRUE 和tenant_id。
然后,我用它进行第二次POST呼叫https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/令牌,请求中包含以下主体:client_id=XXX
注意:范围设置为默认(https://graph.microsoft.com/。默认)。我请求网站。ReadWrite.All是我注册应用程序时的一个应用程序权限,仅此而已。
答复是:
'token_type': 'Bearer',
'expires_in': 3599,
'ext_expires_in': 3599,
'access_token': 'eyJ0...' (deliberately masked)
然后,我尝试在带有/sites/rootendpoint的应用程序中使用它,并收到错误“scp或roles声明需要出现在令牌中”。当我使用https://jwt.io/#encoded-jwt,我看不到“roles”参数可见。
在Azure应用中,我可以看到应用程序确实被成功授予管理员访问权限,那么为什么我的令牌没有正确返回?我错过了什么?当然,通过用户 /adminconsent作为第一次API调用,我也不需要在Azure门户中手动授权?
编辑:大约50分钟后进行第二次API调用以获得新令牌,因为第一个令牌即将到期,这似乎行得通,我在解码的令牌中重新获得了“角色”。是graph api上的错误导致了这个问题吗?
"roles": [
"Sites.ReadWrite.All"
],
图形api上是否存在导致此问题的错误?
这不是一个错误,你所做的一切都是正确的,只是一个简单的延迟问题,当你请求令牌时,权限没有生效。
我正在尝试构建一个应用程序,该应用程序使用Microsoft Graph自动创建和读取存储在SharePoint 365中的OneNotes中的页面。 只要我登录,我就可以使用 Graph 资源管理器成功执行此操作,但无法使用 Postman 中的持有者令牌使其工作 我得到的错误是:scp 或角色声明需要存在于令牌中 我成功地获得了一个访问令牌: 并传递grant_type、client_id、c
我正试图获得一个访问令牌来上传文件中描述的大文件。 我使用客户端凭证授权流来根据文档获取访问令牌。我用那个流得到了一个访问令牌。 我尝试将该访问令牌与此 URI 一起使用: 但是它给我一个错误“拒绝访问scp或角色声明需要在令牌中出现” 我已经授予该应用程序的管理员权限。我已经在postman和编码中尝试了这个流程,但是都给出了相同的错误。
使用此 URI,我正在尝试生成访问令牌 并且成功地生成了访问令牌。 我正在通过client_id、client_secret、grant_type和范围。 当我试图检查时https://jwt.io/#encoded-jwt我发现这是一个无效的签名。 当我试图通过执行以下调用访问此站点时 使用这些访问令牌,我会得到以下错误:“AccessDenied,scp或roles声明需要出现在令牌中。” 为
我正在尝试使用MS Graph API从OneDrive for Business获取文件/文件夹列表。我已经在 Graph 资源管理器中成功执行了所需的查询,现在正在继续在我的项目中实现。 我的应用是 Windows 服务,因此我使用此方法获取令牌 我已成功检索到令牌,但当我“获取”此URL时… …我得到了错误的回复: scp或角色声明需要出现在令牌中。 我来自服务器的令牌响应如下:
我们在Azure AD中有一个多租户注册的应用程序,让我们称其为租户a,我们正在尝试通过图形API在没有用户的情况下访问资源。使用以下详细信息,如果我们尝试使用资源,例如在主租户(租户a)上创建文件或文件夹,我们成功获得令牌。但是,如果我们为另一个租户运行相同的代码,例如租户B(它是租户A的租户之一),我们会得到错误:“AccessDenied:令牌中需要存在scp或roles声明。”事实上,令牌
我正在使用微软图形SDK为我的应用程序(不是用户)获取访问令牌,以便从共享点读取。我一直在关注这个文档,并发布了这个SO问题。链接的SO中的代码是相同的。我能够添加应用程序权限以及在Azure门户中授予它们(通过按下按钮)。问题是,返回使用的令牌中不包含任何角色/scp声明。因此,当使用令牌时,我收到“令牌中需要存在scp或角色声明”消息。 可以肯定的是,在获取访问令牌时,我传递的范围的唯一值是: