Problème groupes entre LDAPAdmin et OpenLDAP

99 views
Skip to first unread message

Julien Sabatier

unread,
Jan 18, 2016, 11:16:04 AM1/18/16
to georchestra-dev
Bonjour,

J'ai constaté un problème sur un groupe de notre LDAPAdmin : 

Dans LDAPAdmin j'ai un groupe (MOD_OPENADS) qui contient 73 utilisateurs (MOD_OPENADS (73) dans le menu de droite)

Or en utilisant la requete  :

ldapsearch -Q -Y EXTERNAL -Hldapi:/// -b "ou=users,dc=georchestra,dc=org" "(&(objectClass=inetOrgPerson)(memberOf=cn=MOD_OPENADS,ou=groups,dc=georchestra,dc=org))"

Dans mon OpenLDAP, il me retourne : 

# numResponses: 66
# numEntries: 65

Une idée d'où peut provenir cet écart ?

Pierre Mauduit

unread,
Jan 18, 2016, 11:40:53 AM1/18/16
to georche...@googlegroups.com

> Une idée d'où peut provenir cet écart ?

Utilises-tu l'overlay memberOf ? D'après:

https://raw.githubusercontent.com/georchestra/LDAP/15.06/georchestra-memberof.ldif

et

http://linux.die.net/man/5/slapo-memberof

Dangling à ignore et RefInt à false peuvent donc causer des désynchros entre les
attributs. Historiquement il me semble que l'on préconnisait ce mode de
fonctionnement car nous ne voulions une synchro que dans un sens (groupe ->
utilisateuri mais pas l'inverse), mais je n'ai plus les idées très claires la
dessus.

Par ailleurs si tu es passé sur la branche master de geOrchestra, c'est
groupOfMembers qui est utilisé au lieu de groupOfNames.

-- Pierre

Julien Sabatier

unread,
Jan 19, 2016, 3:27:06 AM1/19/16
to georchestra-dev
Oui j'ai bien activé l'overlay memberOf sinon mon ldap search ne pourrait pas fonctionner vu qu'il utilise celui-ci dans ses conditions.

En revanche je n'ai aucune configuration concernant memberof dans /usr/share/slapd/slapd.conf.

Penses-tu qu'il me faille rajouter ceci pour résoudre le problème ?

memberof-dangling error
memberof-refint true

Ou bien chercher une condition qui vérifie l'appartenance au niveau du groupe plutôt que de l'utilisateur (si c'est possible) ?

Julien Sabatier

unread,
Jan 19, 2016, 3:58:46 AM1/19/16
to georchestra-dev
Le problème semble être que plus aucun des mes groupes ne se synchronise avec memberOf :

J'ai créé un groupe TMP_OPENADS auquel j'ai ajouté les 73 utilisateurs de MOD_OPENADS, mais si je lance cette requête : 

ldapsearch -Q -Y EXTERNAL -Hldapi:/// -b "ou=users,dc=georchestra,dc=org" "(&(objectClass=inetOrgPerson)(memberOf=cn=TMP_OPENADS,ou=groups,dc=georchestra,dc=org))"

j'ai :

result: 0 Success

Pourtant cela fonctionnait bien jusqu'à maintenant :/ 
C'est assez embêtant car je ne peux plus ajouter d'utilisateurs à notre logiciel d'urbanisme qui ce base sur cet attribut memberOf

Par ailleurs si tu es passé sur la branche master de geOrchestra, c'est 
groupOfMembers qui est utilisé au lieu de groupOfNames.

Je suis sur la branche 15.06 car ce problème est sur mon serveur de prod 

Pierre Mauduit

unread,
Jan 19, 2016, 4:09:59 AM1/19/16
to georche...@googlegroups.com
Julien Sabatier a écrit :
> Le problème semble être que plus aucun des mes groupes ne se synchronise avec
> memberOf :
>
> J'ai créé un groupe TMP_OPENADS auquel j'ai ajouté les 73 utilisateurs de
> MOD_OPENADS, mais si je lance cette requête : 
>
>
> ldapsearch -Q -Y EXTERNAL -Hldapi:/// -b "ou=users,dc=georchestra,dc=org" "
> (&(objectClass=inetOrgPerson)(memberOf=cn=TMP_OPENADS,ou=groups,dc=
> georchestra,dc=org))"
>
>
> j'ai :
>
>
> result: 0 Success

C'est étrange de passer par l'authentification EXTERNAL / le socket UNIX de
slapd pour consulter ton annuaire, que se passe-t'il si tu utilises l'accès
"classique" réseau ? (en supprimant le -Y EXTERNAL -Hldapi:///, et en utilisant
uniquement -Hldap:///). l'accès EXTERNAL est généralement utilisé pour
l'administration du serveur LDAP (création de base, chargement d'overlays,
définition de droits, ...).

Par ailleurs, il me semble que l'attribut 'member' sur les utilisateurs est un
attribut "externe" non présent dans le requétage par défaut, tu devrais essayer
d'ajouter '*' '+' (avec les quotes) en fin de ta commande, afin de demander la
récupération de tous les attributs (y compris externes). Enfin, je pense que
c'est (member=cn=TMP_OPENADS,ou=groups,dc=georchestra,dc=org) et non pas
memberOf dans ta commande.

-- Pierre

Julien Sabatier

unread,
Jan 19, 2016, 4:26:22 AM1/19/16
to georchestra-dev
C'est étrange de passer par l'authentification EXTERNAL / le socket UNIX de slapd pour consulter ton annuaire, que se passe-t'il si tu utilises l'accès "classique" réseau ? (en supprimant le -Y EXTERNAL -Hldapi:///, et en utilisant 
uniquement -Hldap:///). l'accès EXTERNAL est généralement utilisé pour l'administration du serveur LDAP (création de base, chargement d'overlays, définition de droits, ...). 
Par ailleurs, il me semble que l'attribut 'member' sur les utilisateurs est un attribut "externe" non présent dans le requétage par défaut, tu devrais essayer d'ajouter '*' '+' (avec les quotes) en fin de ta commande, afin de demander la 
récupération de tous les attributs (y compris externes). 

J'ai testé avec :

ldapsearch -H ldap:/// -D "cn=admin,dc=georchestra,dc=org" -W -b "ou=users,dc=georchestra,dc=org" "(&(objectClass=inetOrgPerson)(memberOf=cn=TMP_OPENADS,ou=groups,dc=georchestra,dc=org))" '*' '+'
ldapsearch -H ldap:/// -D "cn=admin,dc=georchestra,dc=org" -W -b "ou=users,dc=georchestra,dc=org" "(&(objectClass=inetOrgPerson)(member=cn=TMP_OPENADS,ou=groups,dc=georchestra,dc=org))" '*' '+'

Mais toujours le même résultat avec 0 correspondances.

 Enfin, je pense que c'est (member=cn=TMP_OPENADS,ou=groups,dc=georchestra,dc=org) et non pas memberOf dans ta commande.

Je pense que c'est bien memberOf car si je lance la requete : 

ldapsearch -Q -Y EXTERNAL -Hldapi:/// -b "ou=users,dc=georchestra,dc=org" "(&(objectClass=inetOrgPerson)(member=cn=MOD_OPENADS,ou=groups,dc=georchestra,dc=org))" '*' '+'

Je n'ai aucune correspondance, mais avec :

 ldapsearch -Q -Y EXTERNAL -Hldapi:/// -b "ou=users,dc=georchestra,dc=org" "(&(objectClass=inetOrgPerson)(memberOf=cn=MOD_OPENADS,ou=groups,dc=georchestra,dc=org))" '*' '+'

J'en ai 65 (au lieu de 73). 

Julien Sabatier

unread,
Jan 19, 2016, 8:16:26 AM1/19/16
to georchestra-dev
J'ai finalement réussi à corriger le problème via plusieurs manips, je ne sais pas laquelle a réglé le problème : 

Ajout de l'overlay refint : 

# module{1}, config
dn: cn=module{1},cn=config
objectClass: olcModuleList
cn: module{1}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}memberof
olcModuleLoad: {1}refint

Avec le ldif  : 

dn: cn=module{1},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: {1}refint

Activation de refint dans memberOf : 

# {1}memberof, {1}mdb, config
dn: olcOverlay={1}memberof,olcDatabase={1}mdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {1}memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfMembers
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
 
Via le ldif : 

dn: olcOverlay={1}memberof,olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcMemberOfRefInt
olcMemberOfRefInt: TRUE

Puis suppression et recréation des tous mes groupes, pour cela : 

ldapsearch -H ldap://localhost:389 -xLLL -D "cn=admin,dc=georchestra,dc=org" -W -b "ou=groups,dc=georchestra,dc=org" > /tmp/groups.ldif
ldapdelete -D "cn=admin,dc=georchestra,dc=org" -W "ou=groups,dc=georchestra,dc=org" -r
ldapadd -D "cn=admin,dc=georchestra,dc=org" -W -f /tmp/groups.ldif

Voilà, si jamais ça peut servir à d'autres, pensez bien à modifier les LDIF pour correspondre à votre configuration LDAP (le mdb utilisé n'est pas toujours le 1). 
Reply all
Reply to author
Forward
0 new messages