PHP и OPENLDAP, невозможно изменить пароль с истекшим сроком действия: неверные учетные данные - PullRequest
0 голосов
/ 17 марта 2020

Я настроил свой OPENLDAP ($ OpenLDAP: slapd 2.4.44) с политикой passowod, как показано ниже:

dn: cn=DefaultPPolicy,ou=Policies,cn=Manager,dc=mydomain,dc=com
 cn: DefaultPPolicy
 objectClass: pwdPolicy
 objectClass: device
 objectClass: top
 pwdAttribute: userPassword
 passwordExp: ON
 pwdMaxAge: 2592000
 pwdExpireWarning: 2160000
 pwdInHistory: 3
 pwdCheckQuality: 1
 pwdMinLength: 8
 pwdMaxFailure: 3
 pwdLockout: TRUE
 pwdLockoutDuration: 30
 pwdGraceAuthNLimit: 0
 pwdFailureCountInterval: 0
 pwdMustChange: TRUE
 pwdAllowUserChange: TRUE
 pwdSafeModify: FALSE
 pwdReset: TRUE

Теперь я написал эту PHP функцию для обновления пароля.

function checkPassword($username, $password){
    include '../conf/config.inc.php';
    $ldap_Userdn = getUserDN($username);

    if($ldap_Userdn!=""){
        $ldap_con = ldap_connect($ldap_hostname,$ldap_port);
        ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);

        if(ldap_bind($ldap_con, $ldap_Userdn, $password)){
                $authenticated = true;
            } else  {
                $authenticated = false;
                define('LDAP_OPT_DIAGNOSTIC_MESSAGE', 0x0032);
                ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
                ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);

                $auth_error = ldap_error($ldap_con) . '<br />' . ldap_get_option($ldap_con, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error);

                echo "<br/><br/>extended_error: " . $extended_error;
                echo "<br/><br/>auth_error: " . $auth_error;

                if ($errno == 532){
                    echo "<br/><br/>-----------Unable to login: Password expired.---------<br/><br/>";
                }
            }        
    } else {
        echo "<br/>Error to find user DN";
    }

    return $authenticated;
    ldap_close($ldap_con);  
}

Но когда срок действия пароля истек, я всегда получал эту ошибку:

Ошибка 49 - неверные учетные данные

...