You are not logged in.
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
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
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
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
Il n'y aura plus qu'à tester la prochaine version.
Merci bcp.
Clément.
Offline
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