我连接,进行验证甚至更新,如dyplayName和ipphone。但是当我尝试更新unicodePwd时,我收到了错误:
53 - 服务器不愿意执行
当我尝试以下代码时:
function hash_password( $newPassword ) {
$newPassword = "\"" . $newPassword . "\"";
$len = strlen( $newPassword );
$newPassw = "";
for ( $i = 0; $i < $len; $i++ ) {
$newPassw .= "{$newPassword {$i}}\000";
}
$userdata["unicodePwd"] = $newPassw;
return $userdata;
}
public function _login($pwd) {
$link = ldap_connect('123.123.123.123');
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($link, LDAP_OPT_REFERRALS, 0);
if (!(@ldap_bind($link, 'company\\' . $user_ldap, $pwd_ldap))) {
//show error
}
$filter = "(samaccountname=" . $user . ")";
$result = ldap_search($link, $ldap_dn, $filter);//, $attrs);
$entries = ldap_get_entries($link, $result);
$dn = $entries[0]["dn"];
$entry = $this->hash_password($pwd);
if (ldap_modify($link,$dn,$entry) === false){
// show error
// It always hit this part on the code
}
ldap_close($link);
}
我尝试了其他加密格式,我在互联网上找到了,没有用。还尝试了没有加密的密码,没有结果。
如何更改已过期/必须在下次登录时更改的用户的当前密码?
答案 0 :(得分:0)
您需要使用secured connection to modify a password。
在致电ldap_bind()
之前添加以下内容:
ldap_start_tls($link);
即使您没有尝试更改密码,这也是一个好主意,否则您的绑定操作是明文并且可以被嗅探。