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 2007-10-26 09:47:58

abcd33
Member
Registered: 2007-09-27
Posts: 11

[0.7 rc1] Ldap intégration groupe en fonction de l'OU

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

#2 2007-10-26 10:22:09

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

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

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

#3 2007-10-26 11:03:34

gonzorro
Member
Registered: 2005-10-06
Posts: 431

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

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

#4 2007-10-26 12:14:09

abcd33
Member
Registered: 2007-09-27
Posts: 11

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

MoYo wrote:

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

#5 2007-10-26 12:48:55

wawa
GLPI-DEV
From: Montpellier / France
Registered: 2006-07-03
Posts: 6,019
Website

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

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

#6 2007-10-26 13:15:17

abcd33
Member
Registered: 2007-09-27
Posts: 11

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

wawa wrote:

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

#7 2007-10-26 13:23:59

wawa
GLPI-DEV
From: Montpellier / France
Registered: 2006-07-03
Posts: 6,019
Website

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

tu es sur quel ldap si c'est pas indiscret ? un AD , un openldap ?

Offline

#8 2007-10-26 14:02:09

wawa
GLPI-DEV
From: Montpellier / France
Registered: 2006-07-03
Posts: 6,019
Website

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

j'a intégré avec qq petites modifs,
tu peux le tester et me dire si ça fonctionne bien chez toi ?

Offline

#9 2007-10-28 23:40:10

wawa
GLPI-DEV
From: Montpellier / France
Registered: 2006-07-03
Posts: 6,019
Website

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

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

#10 2007-10-29 08:24:56

abcd33
Member
Registered: 2007-09-27
Posts: 11

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

Oui je suis sous AD.

Je vais tester ça au boulot et je remonte le résultat.

Offline

#11 2007-10-31 10:21:01

abcd33
Member
Registered: 2007-09-27
Posts: 11

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

OK ça fonctionne avec AD.

Offline

#12 2007-10-31 10:25:22

wawa
GLPI-DEV
From: Montpellier / France
Registered: 2006-07-03
Posts: 6,019
Website

Re: [0.7 rc1] Ldap intégration groupe en fonction de l'OU

ok MoYo tu peux fermer alors

Offline

Board footer

Powered by FluxBB