Module dynlist
Ce module permet la gestion d'attributs dynamiques listant les groupes d'un utilisateur sur la base de sa présence dans de son DN dans un attribut listant les membres au niveau des groupes. Ce module peut-être utilisé à la place du module memberof dans un contexte de serveurs utilisant une réplication syncrepl.
Contrairement au module memberof, un attribut est requis au niveau de l'objet utilisateur pour stocker l'URI de recherche des groupes d'un utilisateur. Cet attribut doit donc être prévu dans votre schéma LDAP dans votre classe d'objet utilisateur. Par ailleurs, cet attribut doit forcément hériter de l'attribut labeledURI.
Exemple de définition d'un attribut pour stocker l'URI de recherche des groupes d'un utilisateur :
( 1.3.6.1.4.1.10650.3.987512.31 NAME 'zioMemberOfURI' DESC 'Dynamic memberOf URI' SUP labeledURI )
( 1.2.840.113556.1.2.102 NAME 'memberOf' DESC 'Group that the entry belongs to' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' EQUALITY distinguishedNameMatch )
Il est par ailleurs à noter que dans les premières versions disponibles d'OpenLDAP 2.5, il y avait une nette perte de performances lorsque ce module était activé par rapport à la version 2.4. Ces problèmes furent en grandes partie corrigés dans la version 2.5.17 d'OpenLDAP (disponible en backports sur le dépôt Easter-eggs).
Installation
Il faut d'abord charger le module dynlist :
ldapmodify -Y EXTERNAL -H ldapi:/// << EOF dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: dynlist EOF
Il faut charger également le schéma LDAP propre à ce module (fourni par le paquet Debian slapd) :
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dyngroup.ldif
Il faut ensuite activer ce module pour votre database :
ldapadd -Y EXTERNAL -H ldapi:/// << EOF dn: olcOverlay=dynlist,olcDatabase={1}mdb,cn=config objectClass: olcOverlayConfig objectClass: olcDynamicList olcOverlay: dynlist olcDlAttrSet: zioPersonne zioMemberOfURI memberOf EOF
unable to find AttributeDescription #0 “memberOf”
, vous pouvez charger le overlay memberof
ou bien ajouter le schéma LDAP suivant : dn: cn=memberof,cn=schema,cn=config cn: memberof objectClass: olcSchemaConfig olcAttributeTypes: {0}( 1.2.840.113556.1.2.102 NAME 'memberOf' DESC 'Group that the entry belongs to' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )