You need to enable JavaScript to run this app. 如何通过ADFS声明释放Active Directory中标记为机密的属性
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ADFS声明释放Active Directory中标记为机密的属性

机密属性标记下ADFS无法释放Employee-Number属性的解决方案

根因说明

  • UAC过滤令牌影响:属于Domain Admins组的账户以服务身份运行时,默认生成过滤后的访问令牌,会移除Domain Admins组的SID。你手动交互式验证时使用的是提升后的完整令牌,因此可读取机密属性,但ADFS服务进程运行时的令牌被过滤,无法通过机密属性的权限校验。
  • ADFS默认查询上下文偏差:ADFS内置的LDAP属性读取规则,默认优先使用ADFS服务器的计算机账户而非配置的服务账号执行AD查询,该计算机账户默认不属于Domain Admins组,无机密属性读取权限。

当你将SearchFlags重置为0、取消属性的机密标记后,普通标准用户/计算机账户即拥有该属性的默认读取权限,因此Claim可正常释放。

前置验证流程

调整配置前先定位实际触发原因:

  1. 打开ADFS服务器的服务管理器,定位adfssrv服务,查看其配置的登录身份
    • 若登录身份为网络服务/本地系统:实际执行LDAP查询的是ADFS服务器的计算机账户(格式为ADFS服务器主机名$)
    • 若登录身份为独立域账号:可在对应身份的进程下执行whoami /groups,确认是否真的包含Domain Admins组的SID
  2. 用实际执行查询的身份,通过ldp.exe工具连接AD,尝试读取测试用户的Employee-Number属性,确认是否复现读取失败的问题

推荐配置方案(不降低系统安全水位)

无需依赖Domain Admins组的继承权限,直接给执行LDAP查询的主体显式授予属性读取权限即可:

  • 若ADFS使用计算机账户查询:打开ADSI Edit,定位到Employee-Number属性的权限配置,在DACLs中添加该ADFS服务器的计算机账户,授予读取该属性的允许权限,确保无对应的拒绝权限项
  • 若ADFS使用独立服务账号查询:直接给该服务账号本身授予Employee-Number的读取权限,无需将其加入高权限组
  • 若需要最小化权限范围:可在ADFS的Claim规则配置中,显式指定一个专门的低权限域账号作为LDAP绑定账号,仅给该账号授予Employee-Number的读取权限

临时测试用备选方案

若需临时验证逻辑、不要求安全水位,可调整ADFS服务器的UAC配置,让服务进程获取未过滤的管理员令牌:

  1. 打开本地安全策略,定位到本地策略 > 安全选项
  2. 修改用户账户控制:管理员批准模式中管理员的提升权限提示的行为为不提示,直接提升
  3. 重启adfssrv服务后再验证Claim释放效果

内容的提问来源于stack exchange,提问作者Systemspoet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 17:54:08