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.

Dernière modification de cette page le 28 mai 2008

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