【发布时间】:2016-05-15 17:13:52
【问题描述】:
目前我正在尝试确定用户是否应该能够使用 LDAP 登录。我已经阅读了许多用 PHP 编写的 LDAP 连接,到目前为止一切正常,直到我想搜索用户是否属于某个组。
我目前必须连接到 LDAP 服务器的详细信息:
- DN:CN=PAY LDAP 用户,OU=pay,OU=Applications,OU=IT 特价,DC=域名,DC=be
- SAM:管理员
- 密码:密码
- 搜索 DN ADM:OU=OU GROUP,OU=AD,DC=domain,DC=be
- LDAP / GC 服务器:knt-adm-dc1.domain.be、knt-adm-dc2.domain.be
此代码虽然没有返回任何结果:
if($bind = ldap_bind($ldap, $username, $password)) {
$filter = "(samaccountname=".$user.")";
$attr = array("memberof");
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");
$entries = ldap_get_entries($ldap, $result);
ldap_unbind($ldap);
}
当我从搜索中省略 $attr 时,我确实得到了一个结果,但我似乎无法找到一种方法来确定该用户是否属于 ADMIN 组。
从我在网上看到的内容来看,memberof 属性应该用于查找用户是否属于某个组。
【问题讨论】:
-
有两种方法可以解决这个问题:读取用户本身的
memberof属性或读取组的member属性。请注意,内置组的行为可能与用户定义的组不同。另外 - 确保您绑定的用户具有读取此属性的权限。如果您拥有管理员凭据,您可以轻松测试这是否是访问控制问题。 -
据我所知,用户似乎没有 memberof 属性。每当我搜索 memberof 属性时,都不会返回任何内容。
-
您是否尝试过以管理员身份搜索?您是否尝试过使用 ldp.exe 之类的工具检查条目?
标签: php active-directory ldap