需求:通过PHP代码,使用AD域超级管理员账号(administrator) 修改指定AD域下用户(如:张三)的用户密码。
代码如下:
$base_dn = "OU=叉叉公司,DC=chacha,DC=com";
$connect = ldap_connect("192.168.3.11") or die('连接失败!'); //连接服务器
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
$ldapbind = ldap_bind($connect, 'chacha\administrator', 'chacha123');
$search = ldap_search($connect, $base_dn, "(sn=张三)"); //根据uid获取到用户的信息
$dn = ldap_get_entries($connect, $search);
for ($i = 0; $i < $dn["count"]; $i++) { //从获取到的数组取出用户dn,没有用户dn修改不了密码。
$user_dn = $dn[$i]["dn"];
}
//$bind = ldap_bind($connect, $user_dn, $user_pass); //登录验证
$values["unicodePwd"] = "{SHA}" . base64_encode(pack("H*", sha1('chacha234'))); //密码sha1加密
$rs = ldap_mod_replace($connect, $user_dn, $values); //更新用户信息
if ($rs) {
$msg = "修改成功!";
} else {
$msg = "修改失败,请与XX联系!";
}
echo $msg;
ldap_close($connect); //关闭连接
问题:一直报错,修改不成功,Warning: ldap_mod_replace(): Modify: Server is unwilling to perform 。
请问各位大神,有谁知道怎么处理么?
遇到同样问题求解
使用网络搜索解决方案都是14年左右的问题,好老的方案。
– JimmyLzy 6年前