![](/img/trans.png)
[英]Change Password in Active Directory using LDAP/PHP/IIS/SSL
[英]PHP - LDAP change user passwords in Active Directory without using administrator account
我正在构建使用LDAP针对MS Active Directory进行身份验证的应用程序。 我们有一个密码政策,其中用户密码会过期。
如何通过PHP中的ldap在不使用AD管理员的情况下设置用户密码?
我见过很多方法,但所有方法都使用管理员帐户,从我的角度来看,这是一种安全风险。
unicodePwd
属性的文档描述了两种更改密码的方法:
如果我对您的理解正确,那么您将避免使用选项2。因此,诀窍将是在同一请求中发送“添加”和“删除”请求。 为此,您可以使用ldap_modify_batch
。 实际上,在文档页面本身上有一个示例 :
<?php
function adifyPw($pw)
{
return iconv("UTF-8", "UTF-16LE", '"' . $pw . '"');
}
$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=ad,dc=example,dc=com";
$modifs = [
[
"attrib" => "unicodePwd",
"modtype" => LDAP_MODIFY_BATCH_REMOVE,
"values" => [adifyPw("Tr0ub4dor&3")],
],
[
"attrib" => "unicodePwd",
"modtype" => LDAP_MODIFY_BATCH_ADD,
"values" => [adifyPw("correct horse battery staple")],
],
];
ldap_modify_batch($connection, $dn, $modifs);
请注意,您可能必须通过安全连接(LDAPS,通常在端口636上)进行连接,AD才能允许此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.