在 Azure 中授予管理员同意
Posted
技术标签:
【中文标题】在 Azure 中授予管理员同意【英文标题】:Grant Admin Consent in Azure 【发布时间】:2022-01-17 12:24:10 【问题描述】:我们有一个客户端应用程序,它调用 Web API,而后者又调用 Microsoft Graph。 我在 Azure 门户中阅读了有关授予管理员许可的文档,但我仍然害怕按下该按钮,因为我不了解一些概念:
-
在应用 A 的页面上授予管理员同意是否允许应用 A 访问其所有必需的范围,或允许其他应用访问在“公开 API”中定义的应用 A 范围?
我是否需要授予管理员对客户端应用程序和 Web API 的同意?或者我必须只为 Web API 授予它,并使客户端应用程序预授权?
“授予管理员同意”是否允许应用程序自行调用 Microsoft Graph,绕过代表流程?例如,Web API 是否可以在不需要用户访问令牌的情况下调用 Microsoft Graph?
如果我们向 AD 添加新用户,是否需要再次按“授予管理员同意”?
“应用注册”和“企业应用”页面上的“授予管理员同意”有什么区别吗?
【问题讨论】:
【参考方案1】:在应用程序 A 的页面上授予管理员同意允许应用程序 A 访问其所有必需的范围,或允许其他应用程序访问 访问应用程序 A 范围,在“公开 API”中定义?
管理员同意允许应用 A 在其 API 权限页面上使用所有委派和应用权限,不授予其他应用对应用 A 的权限。
我是否需要授予管理员对客户端应用程序和 Web API 的同意?或者我必须只为 Web API 授予它,并制作客户端应用程序 预授权?
您最有可能应该授予两者。 根据第一个答案,授予客户同意不会给予例如MS Graph 访问 API 应用程序。 如果客户端是 API 应用程序的“已知客户端”(添加到清单中的 knownClientApplications 属性),则会提示用户同意。 这对于多层多租户应用很有用,但在您的场景中可能没有用。
“授予管理员同意”是否允许应用程序自行调用 Microsoft Graph,绕过代表流程?例如,可以网络 API 调用 Microsoft Graph 无需用户访问令牌?
仅当您授予它应用程序权限时。 委派权限始终需要用户上下文来调用 API。
如果我们向 AD 添加新用户,是否需要再次按“授予管理员同意”?
没有。 在委派权限的情况下,管理员同意会创建一个具有 null principalId 的 OAuth2PermissionGrant 对象。 这使其适用于当前和未来的所有用户。
“应用注册”和“企业应用”页面上的“授予管理员同意”有什么区别吗?
我从未在企业应用程序页面中使用过,所以我不能确定。 但我猜这是同一回事。 权限始终授予服务主体(企业应用程序)而不是应用程序注册。 当您在应用注册中单击授予管理员同意时,它会在您的租户中修改其服务主体的实体。
【讨论】:
谢谢!是的,我之前使用过“knownClientApplications”来获得联合同意,但我们了解到我们想要删除不必要的同意页面。这样,Grant Admin Consent 就可以完美地为我们工作。再次感谢您的解释!以上是关于在 Azure 中授予管理员同意的主要内容,如果未能解决你的问题,请参考以下文章