如何在ADFS 4.0中为OpenID Connect服务器应用配置访问策略?
是的,你完全可以为AD FS中的服务器端(机密)应用定义这类访问策略
你的业务场景——仅允许指定AD DS用户组通过特定Client ID完成身份验证——是可以通过AD FS的内置功能实现的,下面分两种常用方法说明具体配置方式:
方法一:使用自定义颁发授权规则(适用于AD FS 2016及以上版本)
AD FS允许你通过编写自定义规则,同时校验用户组身份和客户端ID两个条件:
- 打开AD FS管理控制台,导航到应用程序 > 应用程序组,找到你的服务器应用所属的应用程序组,双击进入对应的客户端应用程序属性
- 切换到颁发授权规则标签页,点击「添加规则」
- 选择「发送声明使用自定义规则」,点击「下一步」
- 在规则文本框中输入类似以下的规则(替换成你的实际组SID和Client ID):
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value == "S-1-5-21-XXXXXX-XXXXXX-XXXXXX-XXXXXX"] && c:[Type == "client_id", Value == "your-target-client-id"] => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");
- 解释:这条规则会检查用户是否属于指定的AD DS安全组(通过组SID匹配),同时认证请求的客户端ID是否符合目标值,只有两个条件都满足时,才会颁发允许认证的声明。
方法二:使用可视化访问控制策略(适用于AD FS 2019及以上版本)
如果你的AD FS是2019或更新版本,推荐用更直观的访问控制策略来配置:
- 在AD FS管理控制台中,导航到访问控制策略,点击「新建访问控制策略」
- 为策略命名(比如「允许XX组访问ClientID为XXX的应用」),然后添加两个条件:
- 选择「用户必须属于一个或多个组」,点击「添加」并选择目标AD DS用户组
- 选择「客户端应用程序ID必须是」,输入你的目标Client ID
- 保存策略后,回到你的服务器应用的属性页面,切换到颁发授权规则标签页,选择「使用访问控制策略」,然后选中你刚创建的策略即可。
注意事项
- 确保AD FS已正确同步AD DS的用户组信息,用户的组声明能正常被AD FS获取
- 服务器应用(机密客户端)在发起认证请求时会携带
client_id参数,AD FS会将此参数作为client_id类型的声明传入规则引擎,所以可以直接在规则中引用 - 如果有多个独立应用需要不同的访问限制,只需为每个客户端单独配置对应的授权规则或访问控制策略即可
内容的提问来源于stack exchange,提问作者miha
相关产品推荐
相关产品推荐

