/** * Prueft ob der User im LDAP angelegt ist * @param $username UID des Users * @return boolean true wenn vorhanden, sonst false */ public function UserExternalExists($username) { // Alle vorhandenen LDAP Server nacheinander durchlaufen // bis einer passt. foreach ($this->ldap_config as $ldap) { $ldap_obj = new ldap(); // Verbindung zum Server if ($ldap_obj->connect($ldap['LDAP_SERVER'], $ldap['LDAP_PORT'], $ldap['LDAP_BIND_USER'], $ldap['LDAP_BIND_PASSWORD'], $ldap['LDAP_STARTTLS'])) { // User suchen if ($userdn = $ldap_obj->GetUserDN($username, $ldap['LDAP_BASE_DN'], $ldap['LDAP_USER_SEARCH_FILTER'])) { $ldap_obj->unbind(); return true; } } $ldap_obj->unbind(); } return false; }
/** * Aendert das Passwort im LDAP * @param $passwort_alt Altes (aktuelles) Passwort * @param $passwort_neu neues Passwort * @param $uid UID * @return true wenn erfolgreich sonst false */ function change_password($passwort_alt, $passwort_neu, $uid) { $ldap = new ldap(); // Normalen Bind zum LDAP Server if ($ldap->connect()) { // DN des Users holen if ($user_dn = $ldap->GetUserDN($uid)) { $ldap->unbind(); $ldap = new ldap(); // Bind des User mit alten Passwort if ($ldap->connect(LDAP_SERVER_MASTER, LDAP_PORT, $user_dn, $passwort_alt, LDAP_STARTTLS)) { // Passwort verschlüsseln //SSHA $salt = substr(pack('H*', hash('sha1', substr(pack('h*', hash('md5', mt_rand())), 0, 8) . $passwort_neu)), 0, 4); $encrypted = base64_encode(pack('H*', hash('sha1', $passwort_neu . $salt)) . $salt); $ssha_password = '******' . $encrypted; // LM und NT //$hash = new Crypt_CHAP_MSv2(); //$hash->password = $passwort_neu; // $lm_password = strtoupper(bin2hex($hash->lmPasswordHash())); //$nt_password = strtoupper(bin2hex($hash->ntPasswordHash())); // Neues Passwort setzen $data = array(); $data['userPassword'] = $ssha_password; // $data['sambaLMPassword']=$lm_password; //$data['sambaNTPassword']=$nt_password; //$data['sambaPwdLastSet']=time(); //$data['sambaPwdMustChange']=2147483647; // 2038-01-19 04:14:07 if ($ldap->Modify($user_dn, $data)) { return true; } else { return false; } } else { return $ldap->errormsg; } } else { return $ldap->errormsg; } } else { return $ldap->errormsg; } }