Liens Rapides
Support technique

Toujours dans le but d’apporter des solutions efficaces et réactives à nos clients, nous nous donnons la possibilité de prendre la main directement sur leur poste, et ce quel qu’ils soient !

Consulter notre plaquette de présentation et nos conditions générales de vente Plaquette de présentation de VMR Global Solutions * Contacter nous pour toutes vos demandes de conception de PDF dynamique

Last @VMRGlobalSol Tweets
  • No Tweets Available
VMR Global Solutions | Astuce OpenLDAP : Des groupes dynamiques
1283
post-template-default,single,single-post,postid-1283,single-format-standard,ajax_fade,page_not_loaded,smooth_scroll,,wpb-js-composer js-comp-ver-3.7.4,vc_responsive

Astuce OpenLDAP : Des groupes dynamiques

09:00 10 January in Informations
0 Comments

Les groupes dynamiques en LDAP sont une fonctionnalité très intéressante, permettant de lister les membres d’un groupe par rapport à un filtre LDAP, ce qui évite de maintenir la liste des membres de manière statique.

Par exemple :

dn : cn=test,ou=groups,dc=example,dc=com
objectClass : groupOfURLs
objectClass : top
cn : test
memberURL : ldap :///ou=users,dc=example,dc=com ??one ?(description=*test*)

Ce groupe contiendra toutes les entrées de la branche ou=users,dc=example,dc=com possédant test dans l’attribut description.

Overlay

Dans OpenLDAP, les groupes dynamiques ne sont pas activés par défaut, il faut pour les utiliser charger l’overlay dynlist. Et pour utiliser la classe d’objet groupOfURLs, il faut également charger un schéma.

Cela peut-être fait simplement dans cn=config avec le LDIF suivant :

dn : cn=dyngroup,cn=schema,cn=config
objectClass : olcSchemaConfig
cn : dyngroup
olcObjectIdentifier : 0NetscapeRoot 2.16.840.1.113730
olcObjectIdentifier : 1NetscapeLDAP NetscapeRoot:3
olcObjectIdentifier : 2NetscapeLDAPattributeType NetscapeLDAP:1
olcObjectIdentifier : 3NetscapeLDAPobjectClass NetscapeLDAP:2
olcObjectIdentifier : 4OpenLDAPExp11 1.3.6.1.4.1.4203.666.11
olcObjectIdentifier : 5DynGroupBase OpenLDAPExp11:8
olcObjectIdentifier : 6DynGroupAttr DynGroupBase:1
olcObjectIdentifier : 7DynGroupOC DynGroupBase:2
olcAttributeTypes : 0( NetscapeLDAPattributeType:198 NAME ’memberURL’ DESC ’I
dentifies an URL associated with each member of a group. Any type of labeled
URL can be used.’ SUP labeledURI )
olcAttributeTypes : 1( DynGroupAttr:1 NAME ’dgIdentity’ DESC ’Identity to use
when processing the memberURL’ SUP distinguishedName SINGLE-VALUE )
olcAttributeTypes : 2( DynGroupAttr:2 NAME ’dgAuthz’ DESC ’Optional authoriza
tion rules that determine who is allowed to assume the dgIdentity’ EQUALITY a
uthzMatch SYNTAX 1.3.6.1.4.1.4203.666.2.7 X-ORDERED ’VALUES’ )
olcObjectClasses : 0( NetscapeLDAPobjectClass:33 NAME ’groupOfURLs’ SUP top S
TRUCTURAL MUST cn MAY ( memberURL $ businessCategory $ description $ o $ ou $
owner $ seeAlso ) )
olcObjectClasses : 1( DynGroupOC:1 NAME ’dgIdentityAux’ SUP top AUXILIARY MAY
( dgIdentity $ dgAuthz ) )

dn : olcOverlay=dynlist,olcDatabase=1bdb,cn=config objectClass : olcOverlayConfig objectClass : olcDynamicList olcOverlay : dynlist olcDlAttrSet : 0groupOfURLs memberURL uniqueMember

Comme vous êtes des lecteurs avisés, vous aurez noté qu’on peut utiliser d’autres classes d’objet que groupOfURLs, puisque cela dépend de la configuration de l’overlay dynlist (attribut olcDlAttrSet). Pour plus de détails, voir la page de manuel de l’overlay dynlist (man slapo-dynlist).

Tri sélectif

Cet overlay fonctionne bien sur des petits volumes mais les performances s’écroulent dès le le groupe dynamique doit contenir plusieurs milliers d’utilisateurs.

Le secret réside dans l’option sortvals (olcSortVals dans cn=config) qui active le tri des valeurs sur certains attributs. D’après le manuel :

olcSortVals <attr> […]
Specify a list of multi-valued attributes whose values will always be maintained in sorted order. Using
this option will allow Modify, Compare, and filter evaluations on these attributes to be performed more
efficiently. The resulting sort order depends on the attributes’ syntax and matching rules and may not
correspond to lexical order or any other recognizable order. This setting is only allowed in the frontend
entry.

Dans notre cas, nous allons trier les valeurs de l’attribut uniqueMember :

dn : olcDatabase=-1frontend,cn=config
changetype : modify
add : olcSortVals
olcSortVals : uniqueMember

Dès l’application de ce paramètre, l’affichage de groupes dynamiques de plusieurs milliers d’utilisateurs ne prendra que quelques secondes !

No Comments

Sorry, the comment form is closed at this time.