You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2008-01-07 16:21:22

clement.diebold
Member
Registered: 2008-01-07
Posts: 2

Cas + Ldap

Bonjour et bonne année,

Merci à tous les contributeurs et développeurs de GLPI.

Je voudrais faire suite au sujet http://glpi-project.org/forum/viewtopic.php?pid=26354, et à l'intégration du code dans la version 0.7 de glpi.

Déjà le code pour importer automatiquement les données d'un serveur LDAP après l'authentification CAS est commenté.

Ensuite j'ai trouvé une erreur dans le fichier login.php

Ancien code :

$identificat->user->fields['auth_method'] = AUTH_CAS;

    // if LDAP enabled too, get user's infos from LDAP
    //If the user is already in database, let's check if he there's a dictory reported in id_auth, to get his personal informations  
/*    if ($user_present && !empty($identificat->auth_methods["ldap"][$identificat->user->fields["id_auth"]])) {
        $ldap_method = $identificat->auth_methods["ldap"][$identificat->user->fields["id_auth"]];
        $ds = connect_ldap($ldap_method["ldap_host"], $ldap_method["ldap_port"], $ldap_method["ldap_rootdn"], $ldap_method["ldap_pass"], $ldap_method["ldap_use_tls"]);
        if ($ds) {
            $user_dn = ldap_search_user_dn($ds, $ldap_method["ldap_basedn"], $ldap_method["ldap_login"], $user, $ldap_method["ldap_condition"]);
            if ($user_dn) {
                $identificat->user->getFromLDAP($ldap_method["ldap_host"], $ldap_method["ldap_port"], $user_dn, $ldap_method["ldap_rootdn"], $ldap_method["ldap_pass"], $ldap_method['ldap_fields'], $user, "", $ldap_method["ldap_use_tls"]);
            }
        }
    }
*/

Nouveau code :

$identificat->user->fields['auth_method'] = AUTH_CAS;
$identificat->user->fields['id_auth'] = 1;

       // if LDAP enabled too, get user's infos from LDAP
       //If the user is already in database, let's check if he there's a dictory reported in id_auth, to get his personal informations
       if (!$user_present && !empty($identificat->auth_methods["ldap"][$identificat->user->fields["id_auth"]])) {
               $ldap_method = $identificat->auth_methods["ldap"][$identificat->user->fields["id_auth"]];
               $ds = connect_ldap($ldap_method["ldap_host"], $ldap_method["ldap_port"], $ldap_method["ldap_rootdn"], $ldap_method["ldap_pass"], $ldap_method["ldap_use_tls"]);
               if ($ds) {
                       $user_dn = ldap_search_user_dn($ds, $ldap_method["ldap_basedn"], $ldap_method["ldap_login"], $user, $ldap_method["ldap_condition"]);
                       if ($user_dn) {
                               $identificat->user->getFromLDAP($ldap_method, $user_dn, $ldap_method["ldap_rootdn"], $ldap_method["ldap_pass"]);
                       }
               }
       }

Il y avait une erreur au niveau de l'appel de la fonction getFromLDAP (qui a du changé dans la version 7.0).

J'ai également fait pointer l'id_auth sur 1 pour qu'il pointe sur les infos de mon serveur ldap (il faudrait faire une boucle pour lire les infos de plusieurs serveurs ldap).

Clément.

Offline

#2 2008-01-07 19:46:53

MoYo
GLPI - Lead
From: Poitiers
Registered: 2004-09-13
Posts: 14,513
Website

Re: Cas + Ldap

le code est commenté tout simplement car il n'est plus fonctionnel du tout.
Nous aurions même du le supprimer.
Vu que l'on peut définir plusieurs serveurs LDAP différents il n'est plus utilisable tel quel simplement.

Une solution beaucoup plus simple est efficace est de créer un plugin pour vos besoins particuliers.
Il y a des hooks au niveau de l'authentification exprès pour cela.
Dans mon souvenir il y avait même un début de plugin correspondant a celui-ci mais je ne sais pas ce qu'il est devenu.


MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI :    Support     Contribute     References     Freshmeat

Offline

#3 2008-01-08 20:07:24

MoYo
GLPI - Lead
From: Poitiers
Registered: 2004-09-13
Posts: 14,513
Website

Re: Cas + Ldap

J'ai repensé à ma réponse et je vais me contredire tout de suite.

Je pense que nous avons fait une erreur / un oubli à ce niveau là.
En effet nous sommes passés en multi-LDAP mais on aurait très bien pu définir un annuaire LDAP lié à l'auth CAS (ce que vous faites dans votre code en mettant id_auth = 1)

Bref je confirme globalement l'application de votre patch. Nous allons essayer de remédier à cela pour la version 0.71.


MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI :    Support     Contribute     References     Freshmeat

Offline

#4 2008-01-08 20:59:50

MoYo
GLPI - Lead
From: Poitiers
Registered: 2004-09-13
Posts: 14,513
Website

Re: Cas + Ldap

je viens de commité une correction complète sur la branche 0.70 bugfixes :
https://dev.indepnet.net:8080/glpi/changeset/6310


MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI :    Support     Contribute     References     Freshmeat

Offline

#5 2008-01-09 10:38:39

clement.diebold
Member
Registered: 2008-01-07
Posts: 2

Re: Cas + Ldap

Il n'y aura plus qu'à tester  la prochaine version.

Merci bcp.

Clément.

Offline

#6 2008-03-27 11:31:38

jmdumont
Member
From: Lyon
Registered: 2005-06-02
Posts: 95

Re: Cas + Ldap

bonjour,

je reviens sur ce sujet car avec authentification CAS et paramétrage ldap, j'ai 2 soucis :

1- les données de l'utilisateur ne se remplissaient pas dans glpi à partir d'un annuaire ldap
j'ai décelé un soucis dans login.php
ligne origine :
                              $identificat->user->getFromLDAP($ds,$ldap_method, $user_dn, $ldap_method["ldap_rootdn"], $ldap_method["ldap_pass"]);
l'appel à la fonction getFromLDAP semble incorrecte par rapport au nombre de paramètres :
j'ai modifié en
                              $identificat->user->getFromLDAP($ldap_method, $user_dn, $ldap_method["ldap_rootdn"], $ldap_method["ldap_pass"]);

et cela fonctionne.

2- en revanche, les groupes ne se mettent pas à jour.
et je n'ai pas trouvé ce qui coinçait (à noter qu'en authentification ldap pure, cela fonctionne)

si quelqu'un a une idée ?
merci
jmd

Offline

Board footer

Powered by FluxBB