疯狂的 LDAP (AD) 密码更新问题 (php)

Crazy LDAP (AD) password update problem (php)

我在通过 PHP ldap API.

更新 AD 用户的密码时遇到了一个疯狂的问题

这是我用来更新密码的函数(class 的一部分):

function updatePassword($newPassword){ // works only with LDAPS (LDAP WITH SSL/TLS ENCRYPTION)
    $newPassword = "\"". $newPassword. "\"";
    $newPassw = "";
    $len = strlen($newPassword);
    for($i = 0; $i < $len; $i++){
        $newPassw .= "{$newPassword{$i}}[=11=]0";
    }
    $newPassword = $newPassw;
    //$newPassword = mb_convert_encoding($newPassword, "UTF-16LE");
    $newEntry = array("unicodePwd" => $newPassword);
    $dn = $this->getUserInformation()["distinguishedname"];
    if(ldap_mod_replace($this->connection, $dn, $newEntry)){
        return true;
    }
    return ldap_error($this->connection);
}

用户更新密码后,新密码有效,但一段时间后,旧密码仍然有效。因此,用户可以使用他的新密码和旧密码登录到我们的 Web 应用程序并进入 windows...

有人知道或知道问题出在哪里吗?

(一些背景信息:

如果有人遇到同样的问题:

几天前我读了一篇文章,其中提到了所描述行为的原因 这是一项 Windows 广告“功能”,可在更改密码后使用户的旧密码在一小时内有效