收到错误:
服务器不愿意执行
通过PHP更改AD中的unicodePwd。但是,我可以搜索,添加,删除和修改用户的任何属性。
使用管理员帐户绑定和管理员拥有更改任何用户密码的完全权限。
这是我正在使用的代码:
<?php
$dn = "CN=Vishal Makwana,OU=Address Book,DC=example,DC=com";
$ad = ldap_connect("ldap://example.com")
or die("Couldn't connect to AD!");
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
$bd = ldap_bind($ad,"admin@example.com","admin1");
if($bd) {
echo "AD bind successfully";
}
else {
echo "Couldn't bind AD";;
}
$user["unicodePwd"] = "asdf1234";
$result = ldap_mod_replace($ad, $dn, $user);
if ($result) echo "User modified!"; else
echo "There was a problem!";
ldap_unbind($ad);
?>
答案 0 :(得分:9)
要通过LDAP在AD中设置密码,您需要做很多事情。
您需要使用SSL连接(ldaps://)
密码需要用引号括起来
(引用)密码需要以16位unicode(UTF-16LE)编码
假设您尝试设置的密码是普通的ascii字符,则可以通过在ascii字符串的每个字节后添加\ 000字节来完成unicode转换,如this code sample所示。
所以你的例子看起来像:
$newpassword = "asdf1234";
$newpassword = "\"" . $newpassword . "\"";
$len = strlen($newpassword);
for ($i = 0; $i < $len; $i++) $newpass .= "{$newpassword{$i}}\000";
$user["unicodePwd"] = $newpass;
答案 1 :(得分:2)
经过大量搜索并花费大量时间后,我终于可以使用LDAP库从PHP代码修改活动目录用户密码。
我们需要LDAP与PHP代码中的活动目录服务器的连接;并且您必须修改unicodePwd
字段。
ldap_connect(ldaps://IP, 636);
ldap_connect(ldaps://IP, 389);