繁体   English   中英

使用 windows 服务器 2008 中的 PHP 更改 LDAP 用户密码

[英]Change LDAP user password using PHP in windows server 2008

我想让我的活动目录用户使用 PHP 代码从链接表单更改他们的密码。 当我使用 ldap_modify function 时,它会更改邮件但从未更改密码,但它会回复成功消息。 我用它来加密密码:

  $encoded_newPassword = "{SHA}" . base64_encode( pack( "H*", sha1( $newPassword ) ) );

要更改密码,您需要遵循unicodePwd属性文档中描述的过程和格式。 您必须在同一个请求中执行两项操作:

  • 包含旧密码的删除操作,以及
  • 包含新密码的添加操作

并且两个密码都必须采用特定格式。

要在 PHP 中执行此操作,请使用ldap_modify_batch ldap_modify_batch的文档中有一个如何更改密码的示例

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM