Azure 委派和应用程序权限优先级

标签 azure azure-active-directory

我创建了一个示例 Web 应用程序,调用 Web API 并使用针对 Azure AD 的 oAuth 代码授权流。应用程序已在 Azure AD 中注册,并且我也通过 Azure 门户授予了所需的权限。一切似乎都按预期进行。

有两个权限选项

  • 委托(delegate)权限

  • 应用程序权限

是否建议您的应用程序使用混合类型的权限集(App + delegate)?

如果我在委托(delegate)和应用程序上向我的 API 授予类似类型的权限,则哪个权限集将优先?它是否取决于 oAuth 流程,例如代码授予还是隐式?

在我的代码中,如何在访问相同资源时区分这些权限集。即使相同类型的应用程序权限已经存在,我也只想调用用户上下文?

最佳答案

应用程序权限和委派权限完全相互独立。

当您遵循Client Credential Flow时,应用程序权限适用。 (也称为仅应用程序流程)。当您遵循此流程时,AAD 将尝试根据其在应用程序注册中预定义的应用程序权限向客户端应用程序授予权限。这些权限将显示在角色声明中的仅应用程序 token 中。

在几乎所有其他涉及用户的流程中( On-Behalf-OfAuthorization Code Grant FlowImplicit Grant Flow 等...),AAD 将尝试根据其预定义的委派权限向客户端授予权限。这些权限将出现在 scp(范围)声明中的 App+User token 中。

您可以通过在获取资源的访问 token 时调整身份验证方法来控制授予应用程序的权限类型。

关于Azure 委派和应用程序权限优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46373986/

相关文章:

c# - 使 Microsoft Azure Graph Client for .net 发出 $expand

php - 如何使用客户端证书而不是 secret (PHP) 让 OpenID Connect 工作?

asp.net-core - 使用 ASPNET Core 2 从企业代理后面通过 Azure AD 进行身份验证

azure - Ansible如何从字典列表中查找字典

node.js - 解析 Azure 函数中的 URL

Azure 自动缩放不起作用

Azure Key Vault 事件 - 是否可以订阅事件网格主题(不是系统事件网格主题)?

编辑 list 以启用 availableToOtherTenants 后出现 Azure AD 错误

node.js - Azure DevOps - npm 安装失败并降级 python 版本

Lucene.net 的 Azure 库错误。创建 write.lock 后找不到文件