OpenLdap赢得';t检索用户密码


OpenLdap won't retrieve the userpassword

我的问题是,当我尝试检索属性"userPassword"的值时,它不起作用。我在PHP下工作,问题是当我打开Phpldapadmin时,属性存在,我可以看到它,但当我尝试使用这行代码检索它时,它不会起作用。

$sr = ldap_search($ds,"ou=people,dc=powerm,dc=com","uid=".$login);
$data = ldap_get_entries($ds,$sr);
$password = $data[0]["userpassword"][0];
$displayName = $data[0]["displayname"][0];
$num_tel =$data[0]["mobile"][0];
$mail =$data[0]["mail"][0]

除了用户密码之外,其他属性都可以正常工作

有人能帮忙吗?

谢谢。

尝试指定要显式返回的属性。

$dn = 'ou=people,dc=powerm,dc=com';
$filter = 'uid=' . $login;
$attrs = ['displayname', 'userpassword', 'mobile', 'mail'];
$sr = ldap_search($ds, $dn, $filter, $attrs);

目录可能被配置为不返回此安全敏感属性,除非您明确要求它。

也可能是该属性需要特殊权限才能访问它——您是否在代码中使用与phpLDAPAdmin中相同的凭据连接到数据库?

服务器也可以配置为不返回密码,除非它是通过加密连接启动的——使用传递给ldap_connect()ldaps:// URL或使用ldap_start_tls()