我面临的情况是我的 .NET Core 应用程序 (Azure Web API) 将通过两种方式访问:
我正在使用 Microsoft Identity Web 在中间件级别通过 AD 授权和验证请求。然后我想在我的控制器方法中做额外的授权来检查以下内容:
流程 #1 有效,但如果我通过点击令牌配置 -> 添加组声明 -> 安全组 -> 作为访问令牌中的角色声明发出组 来启用流程 #2,那么应用程序角色在访问令牌内的客户端凭据流中不再可用(如下面的屏幕截图所示),大概是因为它用安全组(应用程序不存在)覆盖了角色声明。
这样做的正确方法是什么,或者以不同的方式实现等效的情况? 要求是区分应用程序 A 可以调用的控制器方法访问,例如一个只读端点 1,但不能调用写端点 2,而应用程序 B 可以调用写端点 2。同样的区分也应该对基于 AD 组的用户进行。
答案 0 :(得分:0)
您可以在您的令牌中include a groups
claim。您只需要修改应用程序清单中的“groupMembershipClaims”字段:
"groupMembershipClaims": "SecurityGroup"
然后令牌将包含用户所属的组的 ID,如下所示:
{
"groups": ["{group_id}"]
}
此方法不会覆盖 roles
声明。因此,对于委派权限(用户)流程,您现在需要改为检查 groups
声明。