Vic*_*son 6 php ldap active-directory windows-server-2008-r2
得到错误:
服务器不愿意执行
同时通过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);
?>
Run Code Online (Sandbox Code Playgroud)
要通过LDAP在AD中设置密码,您需要做很多事情.
您需要使用SSL连接(ldaps://)
密码需要用引号括起来
(引用)密码需要以16位unicode(UTF-16LE)编码
假设您尝试设置的密码是普通的ascii字符,则可以通过在ascii字符串的每个字节后添加\ 000字节来完成unicode转换,如此代码示例所示.
所以你的例子看起来像:
$newpassword = "asdf1234";
$newpassword = "\"" . $newpassword . "\"";
$len = strlen($newpassword);
for ($i = 0; $i < $len; $i++) $newpass .= "{$newpassword{$i}}\000";
$user["unicodePwd"] = $newpass;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14377 次 |
| 最近记录: |