Amélioration de la prise en compte de LDAP

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Attention, cette contribution est EN CHANTIER : elle n’est peut-être pas fonctionnelle.

Si vous essayez de vous connecter à un serveur LDAP recent (version 3 du protocole LDAP), il se peut que votre connexion à LDAP ne se fasse pas. Dans ce cas, effectuez l’installation de SPIP avec LDAP comme d’habitude, puis éditez le fichier ecrire/inc_connect.php3 et remplacez la fonction spip_connect_ldap par celle-ci :

function spip_connect_ldap() {
    /* Connexion au serveur LDAP */
    if (!$GLOBALS['ldap_link'] = @ldap_connect("<nom_du_serveur>","389")) {
        die("Impossible de trouver le serveur LDAP.<br>\n");
    }
    /* !! Spécifier à PHP d'utiliser la version 3 du protocole !! */
    @ldap_set_option( $GLOBALS['ldap_link'], LDAP_OPT_PROTOCOL_VERSION, 3 );
    /* Ouverture d'une session sur la connexion en cours */
    if (!@ldap_bind($GLOBALS['ldap_link'])) {
        die("Connexion LDAP : Echec. Essayez de raffraichir cette page.<br>\n");
    }
    return $GLOBALS['ldap_link'];
}

En remplaçant <nom_du_serveur> par le host de votre serveur (copier/coller de l’ancienne fonction).

Si le bind ne fonctionne pas la première fois (message « Connexion LDAP : Echec... »), raffraichissez.

Remarque : si vous vous connectez à un serveur LDAP qui utilise la version 3 du protocole, vous devez utiliser une version recente du module LDAP pour PHP. La version fournie par EasyPHP 1.6, par exemple, ne fonctionne pas.

Discussion

4 discussions

  • 1
    ThomasFromParis

    Une erreur s’est glissée dans la fonction ci-dessus :

    la ligne

    @ldap_set_option( $conn, LDAP_OPT_PROTOCOL_VERSION, 3 ) ;

    doit devenir

    @ldap_set_option( $GLOBALS[’ldap_link’], LDAP_OPT_PROTOCOL_VERSION, 3 ) ;

    pour que cela fonctionne.

    Répondre à ce message

  • Bonjour,
    Je viens d’installer SPIP 1.92d sur notre serveur intranet et decide d’utiliser Ldap.
    L’installation de ldap s’est bien passe mais, excusez-moi mon ignorance, je ne vois aucune difference. Comment faire pour activer l’authentification (afficher le formulaire login/password) ? Faut-il que je modifie qqch dans le squelette ?
    Merci beaucoup !

    Répondre à ce message

  • Bonjour,

    avec cette modification, l’identification LDAP marche de nouveau sur le site intranet de mon association.

    Merci !

    Répondre à ce message

  • 1
    Heitz Alex.

    A noter qu’il est nécessaire, dans le cas d’un annuaire LDAP de type Active Directory tournant sous Windows Server 2003, d’utiliser en supplément le paramètre suivant :
    @ldap_set_option($GLOBALS['ldap_link'], LDAP_OPT_REFERRALS, 0);

    Sous peine d’avoir droit à des erreurs de type « Operations error » via ldap_error.

    • Ma connexion au LDAP, fonctionne , néanmoins il me répond toujours password erroné !

       ????

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom

Dernière modification de cette page le 28 mai 2008