当前位置: 首页 > 知识库问答 >
问题:

访问被拒绝:多租户应用程序的令牌中需要存在 scp 或角色声明

鞠凌龙
2023-03-14

我们在Azure AD中有一个多租户注册的应用程序,让我们称其为租户a,我们正在尝试通过图形API在没有用户的情况下访问资源。使用以下详细信息,如果我们尝试使用资源,例如在主租户(租户a)上创建文件或文件夹,我们成功获得令牌。但是,如果我们为另一个租户运行相同的代码,例如租户B(它是租户A的租户之一),我们会得到错误:“AccessDenied:令牌中需要存在scp或roles声明。”事实上,令牌中没有定义任何角色。

我想知道我在这里做错了什么?我还需要为tenantB设置权限/角色吗?

网址: https://login.microsoftonline.com//oauth2/v2.0/token 范围: https://graph.microsoft.com/.default grant_type: client_credentials client_id: client_secret:

共有2个答案

章飞章
2023-03-14

我找到了解决方案:租户 B 的管理员必须确认同意,在管理员确认同意后,一切都按预期工作。

郎永福
2023-03-14

您已经找到了解决方案,将其作为答案发布以结束线程:

管理员必须确认整个问题的同意,在确认管理员的同意后,所有工作都符合预期。

如你所想,当你在租户B中使用多租户应用时,它的所有权限仍然要获得租户B的管理员的同意。

 类似资料:
  • 使用此 URI,我正在尝试生成访问令牌 并且成功地生成了访问令牌。 我正在通过client_id、client_secret、grant_type和范围。 当我试图检查时https://jwt.io/#encoded-jwt我发现这是一个无效的签名。 当我试图通过执行以下调用访问此站点时 使用这些访问令牌,我会得到以下错误:“AccessDenied,scp或roles声明需要出现在令牌中。” 为

  • 我正试图获得一个访问令牌来上传文件中描述的大文件。 我使用客户端凭证授权流来根据文档获取访问令牌。我用那个流得到了一个访问令牌。 我尝试将该访问令牌与此 URI 一起使用: 但是它给我一个错误“拒绝访问scp或角色声明需要在令牌中出现” 我已经授予该应用程序的管理员权限。我已经在postman和编码中尝试了这个流程,但是都给出了相同的错误。

  • 我正在尝试构建一个应用程序,该应用程序使用Microsoft Graph自动创建和读取存储在SharePoint 365中的OneNotes中的页面。 只要我登录,我就可以使用 Graph 资源管理器成功执行此操作,但无法使用 Postman 中的持有者令牌使其工作 我得到的错误是:scp 或角色声明需要存在于令牌中 我成功地获得了一个访问令牌: 并传递grant_type、client_id、c

  • 我的应用程序在调用Sharepoint /sites/root时失败,并显示403: Forbidden消息。我的授权流程遵循以下步骤。 为了得到一个代币,我首先打电话到https://login.microsoftonline.com/common/adminconsent?client_id=XXX 这允许我使用管理员登录并发现tenant_id。如果接受,调用将返回查询参数 admin_co

  • 我正在尝试使用MS Graph API从OneDrive for Business获取文件/文件夹列表。我已经在 Graph 资源管理器中成功执行了所需的查询,现在正在继续在我的项目中实现。 我的应用是 Windows 服务,因此我使用此方法获取令牌 我已成功检索到令牌,但当我“获取”此URL时… …我得到了错误的回复: scp或角色声明需要出现在令牌中。 我来自服务器的令牌响应如下:

  • 我正在使用微软图形SDK为我的应用程序(不是用户)获取访问令牌,以便从共享点读取。我一直在关注这个文档,并发布了这个SO问题。链接的SO中的代码是相同的。我能够添加应用程序权限以及在Azure门户中授予它们(通过按下按钮)。问题是,返回使用的令牌中不包含任何角色/scp声明。因此,当使用令牌时,我收到“令牌中需要存在scp或角色声明”消息。 可以肯定的是,在获取访问令牌时,我传递的范围的唯一值是: