我创建了一个示例Web应用程序,调用Web API并对Azure AD使用oAuth代码授予流.Application已在Azure AD中注册,我也通过Azure门户获得了所需的权限。一切似乎都按预期工作。
有两种许可选项
委派许可
申请许可
是否建议为您的应用程序使用混合类型的权限集(App +委托)?
如果我在代理和应用程序上对我的API提供类似的权限,哪个权限集优先?它是否取决于oAuth流量,例如代码授予或隐含?
在我的代码中,如何在访问同一资源时区分这些权限集。我想只调用用户上下文,甚至已经存在相同类型的应用程序权限?
答案 0 :(得分:3)
应用程序权限和委托权限完全相互独立。
当您遵循Client Credential Flow(也称为App Only Flow)时,应用权限适用。当您遵循此流程时,AAD将尝试根据应用程序注册中预定义的应用程序权限向客户端应用程序授予权限。这些权限将显示在role
声明中的仅应用程序令牌中。
在几乎所有其他流程中,涉及用户(On-Behalf-Of,Authorization Code Grant Flow,Implicit Grant Flow等等...)AAD将尝试根据客户端授予客户端权限已预定义的委托权限。这些权限将显示在scp
(范围)声明中的App +用户令牌中。
通过在获取资源的访问令牌时调整身份验证方法,您可以控制授予应用程序的权限类型。