【发布时间】:2021-11-20 07:41:12
【问题描述】:
我正在尝试获取经过身份验证的用户所属的组列表。 Http 服务器是 Apache2,我正在绑定到 Active Directory 服务器。
据我所知,我能做到这一点的唯一方法是获取恰好在其member 属性中包含该用户的所有组。
通过这样做:
$groups = ldap_list($ldap, 'OU=Groups,DC=server,DC=com', '(objectClass=group)', ['cn']);
效果很好,我在$groups 中获得了所有组名。到目前为止一切顺利。
现在,在确保经过身份验证的用户(例如 userdp08)在几个的 member 属性中在以前列出的组中,我更改了过滤器:
$groups = ldap_list($ldap, 'OU=Groups,DC=server,DC=com',
'(&(member=userdp08)(objectClass=group))', ['cn']);
嗯,现在我没有得到任何组。如果 member 属性使用用户的完整 DN,我更改为:
$groups = ldap_list($ldap, 'OU=Groups,DC=server,DC=com',
'(&(member=CN=userdp08*)(objectClass=group))', ['cn']);
我已经尝试了所有这些过滤器,但无济于事:
'(&(member=*CN=userdp08*)(objectClass=group))'
'(&(member=*userdp08*)(objectClass=group))'
'(&(member=*08*)(objectClass=group))'
甚至这个也行不通:
'(objectClass=gro*)'
但是,如果我检索用户的完整 DN 并在完全匹配过滤器中使用它,我会正确获得相应的组。
我的问题是:似乎 子字符串过滤器 不起作用,是否有可能在 AD 配置中禁用它们?我的意思是,它们能以某种方式被禁用吗?
【问题讨论】:
标签: php active-directory ldap