예제 #1
0
 if ($ds == "error_2") {
     returnmsg('danger', 'Test de connexion à l\'annuaire : ', $failed, 'Impossible d\'utiliser TLS');
 } else {
     if ($ds == "error_3") {
         returnmsg('danger', 'Test de connexion à l\'annuaire : ', $failed, 'Connexion établie mais l\'identification auprès du serveur a échoué');
     } else {
         if ($ds == "error_4") {
             returnmsg('danger', 'Test de connexion à l\'annuaire : ', $failed, 'Impossible d\'établir la connexion');
         } else {
             if (!$ds) {
                 echo encode_message_utf8($failed) . "</h3></div>";
             } else {
                 returnmsg('success', 'Test de connexion à l\'annuaire : ', $ok, '');
                 //echo encode_message_utf8("<h3>Test de recherche sur l'annuaire avec le chemin spécifié : ");
                 $result = "";
                 $result = grr_ldap_search_user($ds, $ldap_base, "objectClass", "*", $ldap_filter, "y");
                 if ($result == "error_1") {
                     $test_chemin = 'failed';
                     if ($ldap_filter == "") {
                         returnmsg('danger', 'Test de recherche sur l\'annuaire avec le chemin spécifié : ', $failed, '<b>Problème</b> : Le chemin que vous avez choisi <b>ne semble pas valide</b>.');
                     } else {
                         returnmsg('danger', 'Test de recherche sur l\'annuaire avec le chemin spécifié : ', $failed, '<b>Problème</b> : Le chemin et/ou le filtre additionnel que vous avez choisi <b>ne semblent pas valides</b>.');
                     }
                 } else {
                     if ($result == "error_2") {
                         $test_chemin = 'failed';
                         if ($ldap_filter == "") {
                             returnmsg('danger', 'Test de recherche sur l\'annuaire avec le chemin spécifié : ', $failed, '<b>Problème</b> : Le chemin que vous avez choisi semble valide mais la recherche sur ce chemin ne renvoie aucun résultat.');
                         } else {
                             returnmsg('danger', 'Test de recherche sur l\'annuaire avec le chemin spécifié : ', $failed, '<b>Problème</b> : Le chemin et le filtre additionnel que vous avez choisi semblent valides  mais la recherche sur ce chemin ne renvoie aucun résultat.');
                         }
예제 #2
0
function grr_verif_ldap($_login, $_password)
{
    global $ldap_filter;
    if ($_password == '') {
        return false;
    }
    include "config_ldap.inc.php";
    $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $ldap_login, $ldap_pwd, $use_tls);
    // Test with login and password of the user
    if (!$ds) {
        $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $_login, $_password, $use_tls);
    }
    if ($ds) {
        // Attributs testés pour egalite avec le login
        $atts = explode("|", Settings::get("ldap_champ_recherche"));
        //$atts = array('uid', 'login', 'userid', 'cn', 'sn', 'samaccountname', 'userprincipalname');
        //$login_search = ereg_replace("[^-@._[:space:][:alnum:]]", "", $_login);
        $login_search = preg_replace("/[^\\-@._[:space:]a-zA-Z0-9]/", "", $_login);
        // Tenter une recherche pour essayer de retrouver le DN
        reset($atts);
        while (list(, $att) = each($atts)) {
            $dn = grr_ldap_search_user($ds, $ldap_base, $att, $login_search, $ldap_filter);
            if ($dn == "error_1" or $dn == "error_2" or $dn == "error_3") {
                return $dn;
            } else {
                if ($dn) {
                    // on a le dn
                    if (@ldap_bind($ds, $dn, $_password)) {
                        @ldap_unbind($ds);
                        return $dn;
                    }
                }
            }
        }
        // Si echec, essayer de deviner le DN, dans le cas où il n'y a pas de filtre supplémentaires
        reset($atts);
        if (!isset($ldap_filter) or $ldap_filter = "") {
            while (list(, $att) = each($atts)) {
                $dn = $att . "=" . $login_search . "," . $ldap_base;
                if (@ldap_bind($ds, $dn, $_password)) {
                    @ldap_unbind($ds);
                    return $dn;
                }
            }
        }
        return false;
    } else {
        return false;
    }
}