Comment écrire des filtres de recherche LDAP
Avis sur la plate-forme : Serveur et centre de données uniquement – Cet article ne s’applique qu’aux produits Atlassian sur les plates-formes serveur et centre de données.
But
Ce document explique comment construire un filtre plus sophistiqué pour les attributs de Filtre d’objet Utilisateur et de Filtre d’objet de groupe dans votre configuration LDAP pour les applications Atlassian.
Qu’est-ce qu’un filtre
Les filtres peuvent être utilisés pour restreindre le nombre d’utilisateurs ou de groupes autorisés à accéder à une application. En substance, le filtre limite la partie de l’arborescence LDAP à partir de laquelle l’application se synchronise.
Un filtre peut et doit être écrit pour l’appartenance à l’utilisateur et au groupe. Cela garantit que vous n’inondez pas votre application d’utilisateurs et de groupes qui n’ont pas besoin d’accès.
Solution
Lors de la construction d’un filtre, il est préférable de choisir un attribut commun de l’ensemble d’utilisateurs que vous souhaitez autoriser l’accès à l’application. C’est le plus souvent l’attribut qui désigne l’appartenance à un groupe ou une classe d’objets comme « Person »
L’attribut utilisé pour désigner l’appartenance à un groupe n’est pas commun à toutes les saveurs de LDAP. Des exemples de cet attribut peuvent être « groupMembership » ou « Member »
Comment faire correspondre plus d’un attribut ?
Par exemple, si mes utilisateurs se distinguent par deux attributs objectClass (l’un égal à ‘person’ et l’autre à ‘user’), voici comment je le correspondrais:
(&(objectClass=person)(objectClass=user))
Remarquez le symbole ampersand symbol '&'
au début. Traduit cela signifie: rechercher objectClass=person ET object=user.
Alternativement,
(|(objectClass=person)(objectClass=user))
Traduit cela signifie: rechercher objectClass=person OU object=user.
Le pipe symbol '|'
indique ‘OU’. Comme ce n’est pas un caractère XML spécial, il ne devrait pas avoir besoin d’échapper.
Caractères génériques
(&(objectClass=user)(cn=*Marketing*))
Cela signifie: recherchez toutes les entrées qui ont objectClass=user ET cn qui contient le mot « Marketing ».
Les caractères génériques ne sont pas pris en charge lorsqu’ils sont utilisés dans les filtres utilisant! opérateurs logiques (ou NON). Voir ci-dessous
Les services LDAP eux-mêmes ne prennent pas en charge les caractères génériques pour memberOf
attribute
et autres noms distinctifs lors de la configuration de LDAPFilter.
Comment faire correspondre 3 attributs ?
Ajoutez simplement une clause supplémentaire:
(&(objectClass=user)(objectClass=top)(objectClass=person))
Des clauses supplémentaires peuvent également être ajoutées pour plus de trois attributs.
Composants correspondants de Noms distingués
Comme Microsoft Active Directory n’implémente pas de correspondance extensible, les exemples suivants ne fonctionneront pas avec.
Vous pouvez faire correspondre une partie d’un DN, par exemple lorsque vous devez rechercher vos groupes dans deux sous-arbres de votre serveur.
(&(objectClass=group)(|(ou:dn:=Chicago)(ou:dn:=Miami)))
trouvera des groupes avec une composante OU de leur DN qui est « Chicago » ou « Miami ».
En utilisant ‘not’
Pour exclure des entités qui correspondent à une expression, utilisez ‘ !’.
Donc
(&(objectClass=group)(&(ou:dn:=Chicago)(!(ou:dn:=Wrigleyville))))
trouvera tous les groupes de Chicago à l’exception de ceux avec un composant Wrigleyville OU.
Notez les parenthèses supplémentaires : (!(<expression >))
Notez que si vous utilisez ‘not’ (ie. ‘!’pour exclure des objets) il doit être représenté comme l’entité’!’ dans votre fichier XML si vous utilisez Confluence 3.4 ou ci-dessous.
Pour Confluence 3.4 et ci-dessous, une fois que vous avez construit votre filtre de recherche à l’aide de ce document, vous devez échapper le symbole de l’esperluette et le symbole du point d’exclamation avant de l’ajouter à votre fichier XML. Ainsi, par exemple;
(&(objectClass=person)(!(objectClass=user)))
(&(objectClass=person)(!(objectClass=user)))
Reportez-vous à cette documentation externe sur d’autres caractères XML qui doivent être échappés.devient
Filtres d’échantillons
Ces filtres sont écrits pour Active Directory. Pour les utiliser pour quelque chose comme OpenLDAP, les attributs devront être modifiés.
Ceci synchronisera uniquement les utilisateurs du groupe ‘CaptainPlanet’ – ceci doit être appliqué au filtre d’objet utilisateur :
(&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=CaptainPlanet,ou=users,dc=company,dc=com))
Et cela recherchera les utilisateurs qui sont membres de ce groupe, directement ou via l’imbrication :
(&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=cn=CaptainPlanet,ou=users,dc=company,dc=com))
(&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=cn=CaptainPlanet,ou=users,dc=company,dc=com))
Important pour Active Directory d’avoir memberOf: 1.2.840.113556.1.4.1941 si vous souhaitez trouver des groupes imbriqués (ne remplacez pas la chaîne numérique) dans le groupe CaptainPlanet.
Cela recherchera les utilisateurs qui sont membres de l’un ou de l’ensemble des 4 groupes (feu, vent, eau, cœur)
(&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=cn=fire,ou=users,dc=company,dc=com)(memberOf=cn=wind,ou=users,dc=company,dc=com)(memberOf=cn=water,ou=users,dc=company,dc=com)(memberOf=cn=heart,ou=users,dc=company,dc=com)))
Ce document explique comment construire un filtre plus sophistiqué pour les attributs de Filtre d’objet Utilisateur et de filtre d’objet de groupe dans votre configuration LDAP pour les applications Atlassian.
Jira, Confluence, Bamboo, Bitbucket
Serveur
Leave a Reply