簡體   English   中英

使用PHP更新活動目錄上的密碼

[英]Update password on active directory using PHP

我連接,進行驗證,甚至進行更新,例如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);
}

我嘗試了其他在互聯網上找到的加密格式,但沒有用。 還嘗試了密碼,沒有加密,沒有結果。

如何更改已過期/必須在下次登錄時更改的用戶的當前密碼?

您需要建立安全連接才能修改密碼

在調用ldap_bind()之前添加以下內容:

ldap_start_tls($link);

即使您不嘗試更改密碼,這也是一個好主意,否則您的綁定操作是明文並且可以被嗅探。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM