You are not logged in.
Pages: 1
Topic closed
Bonjour,
Ci-joint un petit patch pour la 0.7-rc1 pour l'intégration avec un annuaire LDAP.
Ce patch permet de faire correspondre un groupe GLPI avec l'OU dans lequel est placé la personne.
Pour l'uitilisation:
Dans Configuration -> Authentification, dans l'interface de configuration du serveur LDAP mette dn comme "Attribut utilisateur indiquant ses groupes".
Lors de la création d'un groupe mettre dn comme "Attribut utilisateur indiquant ses groupes" et dans "Valeur LDAP" mettre l'OU dans lequel doit être l'utilisateur.
Patch à appliquer sur le fichier inc/user.class.php:
@@ -505,6 +505,11 @@
// If the groups must be retrieve from the ldap user object
$sr = @ ldap_read($ds, $userdn, "objectClass=*", $group_fields);
$v = ldap_get_entries($ds, $sr);
+ for ($i=0;$i<count($v['count']);$i++) {
+ if (array_key_exists('dn',$v[$i]) ) {
+ $v[$i]['dn'] = array($v[$i]['dn'] );
+ }
+ }
}
}
//The groupes are retrived by looking into an ldap group object
@@ -534,10 +539,14 @@
foreach ($valattribute as $key => $val) {
if (is_array($val))
for ($i = 0; $i < count($val); $i++) {
- if (isset ($val[$i]))
+ if (isset ($val[$i])) {
+ if ($key=='dn') {
+ list($null,$val[$i]) = explode(",",$val[$i],2);
+ }
if ($group_found = array_search($val[$i], $groups[$key])) {
$this->fields["_groups"][] = $group_found;
}
+ }
}
}
}
Offline
a quoi sert le
list($null,$val[$i]) = explode(",",$val[$i],2);
??
MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI : Support Contribute References Freshmeat
Offline
Bonjour,
Très interessant car je recherche cette fonctionnalité
Je viens de me taper à lamain tous les groupes dans GLPI car je voulais justement reprendre l'organisation des OU de notre AD.
Sera t-elle intégré dans la prochaine RC ?
Merci
Offline
a quoi sert le
list($null,$val[$i]) = explode(",",$val[$i],2);
dans $val[$i] on récupère le dn entier, par exemple pour l'utilisateur toto:
uid=toto,ou=monOU,dc=ma,dc=racine
Cette ligne sert donc à supprimer la chaîne uid=toto,
Refléxion faîte il me semble qu'on pourrait faire cela dans la boucle au dessus:
+ for ($i=0;$i<count($v['count']);$i++) {
+ if (array_key_exists('dn',$v[$i]) ) {
+ list($null,$ou) = explode(",",$v[$i]['dn'],2);
+ $v[$i]['dn'] = array( $ou );
+ }
+ }
Mais ça je ne l'est pas testé, et puis on est vendredi à midi donc mon cerveau est peut être fatigué.
Last edited by abcd33 (2007-10-26 12:19:17)
Offline
salut abcd33, je vais regarder ton patch et le tester,
par contre dans la définition du groupe, on devrait pas plutôt appeler le param OU et pas DN ? car en fait, ce que tu vas checker c'est pas le dn mais l'ou non ? (ce qui revient à dire qur dans le tableau $v tu vas faire $v['ou'] au lieu de $v['dn']
qu'en penses tu ?
Offline
par contre dans la définition du groupe, on devrait pas plutôt appeler le param OU et pas DN ? car en fait, ce que tu vas checker c'est pas le dn mais l'ou non ? (ce qui revient à dire qur dans le tableau $v tu vas faire $v['ou'] au lieu de $v['dn']
Oui sémantiquement c'est plus cohérent, mais pour que le code soit correct il faut que la clé du tableau s'appelle 'dn'.
Mon idée était de faire le patch le plus léger possible (au cas où il ne serait pas accepté). Pour ne pas casser la sémantique autant garder le patch en deux morceaux alors.
Offline
tu es sur quel ldap si c'est pas indiscret ? un AD , un openldap ?
Offline
j'a intégré avec qq petites modifs,
tu peux le tester et me dire si ça fonctionne bien chez toi ?
Offline
bon voilà ça doit marcher avec Active Directory
donc pour que ça fonctionne, et que ça soit logique :
- Dans Configuration -> Authentification, dans l'interface de configuration du serveur LDAP mette dn comme "Attribut utilisateur indiquant ses groupes".
- Lors de la création d'un groupe mettre 'ou' comme "Attribut utilisateur indiquant ses groupes" et dans "Valeur LDAP" mettre l'OU dans lequel doit être l'utilisateur (en respectant la casse !).
à retester sur AD please
Offline
Oui je suis sous AD.
Je vais tester ça au boulot et je remonte le résultat.
Offline
OK ça fonctionne avec AD.
Offline
ok MoYo tu peux fermer alors
Offline
Pages: 1
Topic closed