Amélioration de la prise en compte de LDAP

All contributions published for previous SPIP versions

Code work in progress

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.

updated on 28 May 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.

    Reply to this 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!

    Reply to this message

  • Bonjour,

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

    Merci !

    Reply to this 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é !

      ????

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom