コード例 #1
0
ファイル: connect_sql.php プロジェクト: loorenzooo/aslfc
function spip_connect_ldap($serveur = '')
{
    include_spip('auth/ldap');
    return auth_ldap_connect($serveur);
}
コード例 #2
0
ファイル: ldap.php プロジェクト: genma/spip_ynh
/**
 * Fonction de modification du mot de passe
 *
 * On se bind au LDAP cette fois sous l'identite de l'utilisateur, car le
 * compte generique defini dans config/ldap.php n'a generalement pas (et
 * ne devrait pas avoir) les droits suffisants pour faire la modification.
 * @param $login
 * @param $new_pass
 * @param $id_auteur
 * @param string $serveur
 * @return bool
 *  informe du succes ou de l'echec du changement du mot de passe
 */
function auth_ldap_modifier_pass($login, $new_pass, $id_auteur, $serveur = '')
{
    if (is_null($new_pass) or auth_ldap_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') {
        return false;
    }
    if (!($ldap = auth_ldap_connect($serveur))) {
        return '';
    }
    $link = $ldap['link'];
    include_spip("inc/session");
    $dn = session_get('ldap_dn');
    if ('' == $dn) {
        return false;
    }
    if (!ldap_bind($link, $dn, session_get('ldap_password'))) {
        return false;
    }
    $encoded_pass = "******" . base64_encode(pack("H*", md5($new_pass)));
    $success = ldap_mod_replace($link, $dn, array('userPassword' => $encoded_pass));
    return $success;
}
コード例 #3
0
ファイル: ldap.php プロジェクト: rhertzog/lcs
/**
 * Retrouver un login, et verifier son pass si demande par $checkpass
 *
 * @param string $login
 * @param sring $pass
 * @param bool $checkpass
 * @return string
 *	le login trouve ou chaine vide si non trouve
 */
function auth_ldap_search($login, $pass, $checkpass=true, $serveur=''){
	// Securite anti-injection et contre un serveur LDAP laxiste
	$login_search = preg_replace("/[^-@._\s\d\w]/", "", $login); 
	if (!strlen($login_search) OR ($checkpass AND !strlen($pass)) )
		return '';

	// verifier la connexion
	if (!$ldap = auth_ldap_connect($serveur))
		return '';

	$ldap_link = $ldap['link'];
	$ldap_base = $ldap['base'];
	$desc = $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;

	$logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);

	// Tenter une recherche pour essayer de retrouver le DN
	foreach($logins as $att) {
		$result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
		$info = @ldap_get_entries($ldap_link, $result);
			// Ne pas accepter les resultats si plus d'une entree
			// (on veut un attribut unique)

		if (is_array($info) AND $info['count'] == 1) {
			$dn = $info[0]['dn'];
			if (!$checkpass) return $dn;
			if (@ldap_bind($ldap_link, $dn, $pass)) return $dn;
		}
	}

	if ($checkpass AND !isset($dn)) {
		// Si echec, essayer de deviner le DN
		foreach($logins as $att) {
			$dn = "$att=$login_search, $ldap_base";
			if (@ldap_bind($ldap_link, $dn, $pass))
				return "$att=$login_search, $ldap_base";
		}
	}
	return '';
}