具有范围的 Azure AD 应用程序权限

Posted

技术标签:

【中文标题】具有范围的 Azure AD 应用程序权限【英文标题】:Azure AD application permission with scopping 【发布时间】:2020-12-01 16:04:03 【问题描述】:

根据以下文章,我们可以从 Exchange Online 中确定 AzureAD Graph API 权限范围。

https://docs.microsoft.com/en-us/graph/auth-limit-mailbox-access

我们在 AzureAD 中分配了以下权限。但是,Calendars.ReadWrite“应用程序权限”仅适用于会议室邮箱帐户。因此该应用程序将只能读取/写入房间邮箱日历。

有人可以回答下面的问题吗?

我不是范围组的成员,如果我使用应用程序令牌,我是否能够访问我的日历(请注意,AzureAD 中已授予 calendars.ReadWrite.Shared 委派权限)

【问题讨论】:

【参考方案1】:

不,如果您使用应用程序令牌,并且您不在范围组中,应用程序将无法访问您的日历。

calendars.ReadWrite.Shared 委派权限不会对客户端凭据流生效。只有当你使用user token (auth code flow)而不是application token (client credential flow)时才会生效。

【讨论】:

我可以在请求委派权限时使用用户令牌吗?我可以使用任何示例 Graph API 代码吗? @POSHGuy 是的。您可以使用具有委派权限的用户令牌来访问您的日历。在此处查看示例:developer.microsoft.com/en-us/graph/get-started 和 docs.microsoft.com/en-us/graph/tutorials。例如,如果您需要 ASP.NET 核心示例,请在此处找到:docs.microsoft.com/en-us/graph/tutorials/aspnet-core @POSHGuy 有更新吗?如果我的回答对你有帮助,你可以接受它作为答案。谢谢。 我使用用户令牌进行了测试。但是我收到一条错误消息,说我不是角色组的一部分。这意味着我应该成为范围组的成员才能获得令牌。。 @POSHGuy 抱歉,我可能对您的问题“请求委派权限时可以使用用户令牌吗?”有误解。尽管您使用的是用户令牌,但您仍然需要遵循应用程序访问策略。

以上是关于具有范围的 Azure AD 应用程序权限的主要内容,如果未能解决你的问题,请参考以下文章

旧版Azure AD应用程序注册中的“授予权限”按钮与新体验中的“授予管理员同意”有何不同?

是否可以仅请求用户已在 Azure AD OAuth2 隐式流中同意的范围的子集?

Azure AD,客户端机密应用程序调用具有自定义应用程序 ID URI 的 web api,返回 401

来自不同租户的 Azure AD 同意

使用Azure AD时的VueJS用户权限

Azure AD 身份提供程序中的 VSO 范围