ADFS不返回域组及Get-ADUser异常问题排查求助
排查AD/ADFS组授权异常的建议
这问题确实够棘手的——用户明明在目标组里,但memberof属性不显示,ADFS还完全不返回任何组信息,同配置在别的环境又正常,大概率是AD内部的属性同步或权限类问题,给你列几个实际排查的方向:
揪出
memberof计数为1的"幽灵条目"
你看到measure-object显示计数1但没输出,很大可能是用户的memberof属性里残留了一个无效SID(比如已删除的组)。试试用这条命令解析:Get-ADUser username -Properties memberof | Select-Object -ExpandProperty memberof | ConvertFrom-ADName如果返回无法解析的SID,那就是这个无效条目导致了
memberof属性异常,甚至影响ADFS读取组信息。可以用ldp.exe连接AD手动清除该无效属性,或者用Set-ADUser username -Clear memberof重置后重新加组(先找测试用户验证)。检查AD复制与数据库一致性
这种单向的组成员显示异常,很多时候是AD复制出了问题:- 用
repadmin /showrepl查看所有域控制器的复制状态,重点排查用户所在DC和ADFS对接DC之间的链路是否有失败; - 运行
dcdiag /c /v全面检查AD健康状态,留意USN回滚、数据库错误这类会导致属性不同步的问题; - 用
nltest /dsgetdc:yourdomain确认ADFS当前绑定的DC,直接到该DC上查询用户信息,对比其他DC的结果,看是不是单DC数据异常。
- 用
验证ADFS依赖的
tokenGroupsUnfiltered属性
ADFS默认不是读取memberof,而是读取tokenGroupsUnfiltered来生成组声明。先在AD里验证这个属性是否正常:Get-ADUser username -Properties tokenGroupsUnfiltered | Select-Object -ExpandProperty tokenGroupsUnfiltered | ConvertFrom-ADSid- 如果这个属性里也没有目标组,问题肯定在AD这边(比如组作用域设置错误、用户权限继承被禁用);
- 如果属性里有组但ADFS没返回,就检查ADFS的声明规则:
- 打开ADFS管理控制台,查看Claims Provider Trust里的AD声明规则,是不是误加了过滤所有组的规则,或是自定义LDAP查询语句出错;
- 确认有没有启用"排除内置组"之类的设置,导致Domain Users也被过滤。
检查用户和组的权限与属性继承
- 在ADUC里打开用户对象属性,切换到"安全"选项卡,检查"高级"里的权限继承是否被禁用——如果禁用,可能导致用户无法读取自身
memberof属性,ADFS也无法获取; - 检查目标组的权限,确认ADFS服务账号有足够权限查询组信息,域用户也能正常读取组成员关系。
- 在ADUC里打开用户对象属性,切换到"安全"选项卡,检查"高级"里的权限继承是否被禁用——如果禁用,可能导致用户无法读取自身
尝试重置用户的组关联
找一个测试用户,先把他从所有组(包括Domain Users)中移除,再重新加入Domain Users和目标组,之后查询memberof和ADFS返回结果,看是否恢复正常。这能验证是不是用户对象的属性损坏导致的问题。
内容的提问来源于stack exchange,提问作者Spartenos
相关产品推荐
相关产品推荐

