AccessDenied:多租户应用程序的令牌中需要存在 scp 或角色声明

时间:2021-02-04 15:44:47

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

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

我想知道我在这里做错了什么?我是否也需要为租户 B 设置权限/角色?

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

"{ “错误”: { "code": "拒绝访问", "message": "令牌中必须存在 scp 或角色声明。", “内部错误”:{ "日期": "2021-02-04T14:28:13", "请求 ID": "ca4565f7-aa56-4b00-9f46-09884ad39ff6", “客户端请求 ID”:“ca456ufo-ab5m-4b99-9f46-09pp4ad39ff6” } } }" Tennat A 的范围: enter image description here

2 个答案:

答案 0 :(得分:0)

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

<块引用>

管理员必须确认同意是整个问题,之后 确认管理员同意一切按预期工作。

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

答案 1 :(得分:0)

我找到了解决方案: 租户 B 的 admin 必须确认同意,在 Admin 确认同意后,一切都按预期进行。