【问题标题】:Update password on active directory using PHP使用 PHP 更新活动目录上的密码
【发布时间】:2017-10-05 18:18:32
【问题描述】:

我连接、验证甚至更新,例如 dyplayName 和 ipphone。但是当我尝试更新 unicodePwd 时,我收到了错误:

53 - 服务器不愿意执行

当我尝试以下代码时:

function hash_password( $newPassword ) {
    $newPassword = "\"" . $newPassword . "\"";
    $len = strlen( $newPassword );
    $newPassw = "";
    for ( $i = 0; $i < $len; $i++ ) {
        $newPassw .= "{$newPassword {$i}}\000";
    }
    $userdata["unicodePwd"] = $newPassw;
    return $userdata;
}

public function _login($pwd) {
    $link = ldap_connect('123.123.123.123');
    ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($link, LDAP_OPT_REFERRALS, 0);
    if (!(@ldap_bind($link, 'company\\' . $user_ldap, $pwd_ldap))) {
        //show error
    }
    $filter = "(samaccountname=" . $user . ")";
    $result = ldap_search($link, $ldap_dn, $filter);//, $attrs);
    $entries = ldap_get_entries($link, $result);
    $dn = $entries[0]["dn"];

    $entry = $this->hash_password($pwd);

    if (ldap_modify($link,$dn,$entry) === false){
        // show error 
        // It always hit this part on the code
    }
    ldap_close($link);
}

我尝试了其他加密格式,我在互联网上找到的,没有一个有效。也试过不加密的密码,没有结果。

如何更改已过期/必须在下次登录时更改的用户的当前密码?

【问题讨论】:

  • 顺便说一句,我知道错误 53 代表什么:“表示由于服务器定义的限制,LDAP 服务器无法处理请求。返回此错误的原因如下:添加条目请求违反服务器的结构规则...或...修改属性请求指定用户无法修改的属性...或...密码限制阻止操作...或...连接限制阻止操作。” -source。我只是不知道如何解决/修复它
  • 我用于测试的密码是 Mars2022(最少 6 个字符,1 个大写,1 个小写,1 个数字)
  • 查看日志,了解您的 AD 服务器拒绝它的原因。
  • @Sammitch 当我使用LDAP_OPT_DIAGNOSTIC_MESSAGE 时出现错误“0000001F: SvcErr: DSID-031A12D2,问题 5003 (WILL_NOT_PERFORM),数据 0”
  • 您的 AD 服务器的日志。

标签: php active-directory ldap password-encryption change-password


【解决方案1】:

您需要使用secured connection to modify a password

在调用ldap_bind()之前添加以下内容:

ldap_start_tls($link);

即使您不尝试更改密码,这也是一个好主意,否则您的绑定操作是明文并且可以被嗅探。

【讨论】:

  • 它给了我以下信息:TLS error -8179:Peer's Certificate issuer is not recognized.。和 PHP 警告:Message: ldap_start_tls(): Unable to start TLS: Connect error
猜你喜欢
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多