Exemples d'Okta Expression Language
L'Okta Expression Language (EL) permet aux super administrateurs et aux administrateurs des certifications d'accès de référencer, transformer ou associer des attributs d'utilisateur et des informations concernant les groupes. Lors de la création ou de la modification d'une campagne de certification d'accès, vous pouvez utiliser les expressions d'Okta Expression Language pour faire ce qui suit :
- Limiter votre campagne à un sous-ensemble d'utilisateurs
- Personnaliser les réviseurs pour chaque utilisateur
Astuces
- Consultez la documentation relative au Okta Expression Language pour vous familiariser avec la syntaxe.
- Utilisez l'opérateur ternaire [Condition] ? [Value if TRUE] : [Value if FALSE] pour créer des conditions qui ont pour but de définir des réviseurs dynamiques.
- Assurez-vous que votre expression donne une valeur booléenne lors de la définition des utilisateurs :
- True (Vrai) pour inclure des utilisateurs.
- False (Faux) pour les exclure de la campagne.
- Effectuez les tâches suivantes lorsque vous définissez des réviseurs :
- Assurez-vous que votre expression détermine s'il faut utiliser l'identifiant de l'utilisateur ou le nom d'utilisateur d'un utilisateur Okta unique. Si ça n'est pas le cas, le système affecte le réviseur de secours défini dans le générateur de campagne à la révision de l'ensemble des éléments pour cet utilisateur.
- Lorsque vous créez vos expressions, il peut s'avérer utile de réfléchir à la logique liée au réviseur avec les termes IF/THEN pour chaque utilisateur. Par exemple, pour l'utilisateur A, si la condition P est True (Vrai), alors il faut affecter le réviseur B.
- Commencez avec des expressions simples. Ajoutez ensuite progressivement des conditions pour vous assurer que votre expression fonctionne correctement.
- Testez votre expression à l'aide de la fonctionnalité Preview (Prévisualiser) sur les panneaux Users (Utilisateurs) et Reviewers (Réviseurs).
- Servez-vous de n'importe quelle valeur contenue sur le profil d'un utilisateur et d'un groupe afin de réduire la portée de la campagne.
- Pour mentionner un groupe dans votre expression, utilisez le nom ou l'identifiant du groupe. Okta recommande d'utiliser l'identifiant du groupe, car il ne changera pas.
- Utilisez les symboles suivants pour indiquer un opérateur :
- && pour signifier Et opérateur.
- || pour signifier Ou opérateur.
- ! pour signifier Non opérateur.
Définir la portée de l'utilisateur
Utilisez l'Okta Expression Language pour limiter la portée de la campagne à un utilisateur selon les attributs de leur profil et l'appartenance à un groupe. Dans votre expression personnalisée, True (Vrai) doit inclure les utilisateurs et False (faux) doit les exclure de la campagne.
Assurez-vous que votre expression personnalisée donne une valeur booléenne : True (Vrai) doit inclure les utilisateurs et False (faux) doit les exclure de la campagne. Consultez la section Langage d'expression Okta pour obtenir de plus amples informations.
Exemples d'expressions
| Cas d'utilisation | Exemples d'expressions |
|---|---|
| Restreindre la campagne aux membres d'un groupe en particulier. | user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'})
ou user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) |
| Inclure tous les utilisateurs, sauf les membres d'un groupe en particulier. | !user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'}) ou !user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) |
| Inclure les utilisateurs membres des deux groupes. | user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) && user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'}) |
| Inclure seulement les utilisateurs membres d'au moins un des deux groupes. | user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) || user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'}) ou user.isMemberOf({'group.id': {'00gjitX9HqABSoqTB0g3', '00garwpuyxHaWOkdV0g4'}}) |
| Inclure uniquement les utilisateurs qui appartiennent à un domaine Realm spécifique dans la campagne. | user.realmId == "o4cbj6ybZl1QShj0g7" ou user.realmId == "guo4c8usniIlFgluO0g7" ou user.realmId == "guo4c7skrkbxDgJ140g7" Utilisez cette expression uniquement si la fonctionnalité domaine Realms est activée. |
| Inclure les utilisateurs qui sont membres d'un groupe, mais qui ne sont pas membres d'un autre groupe. | user.isMemberOf({'group.Comptee.name': 'West Coast Users', 'operator': 'EXACT'}) |
|
Inclure les utilisateurs dont le statut est Actif pour des campagnes. Cette expression n'inclut pas les utilisateurs dont le statut est Approvisionné ou Intermédiaire. |
user.status == 'ACTIVE' or user.status == 'PASSWORD_EXPIRED' or user.status == 'LOCKED_OUT' or user.status == 'RECOVERY' |
| Restreindre une campagne en fonction des attributs du profil de l'utilisateur (p. ex. : service, état, centre de coûts). | Pour les correspondances exactes, utilisez cette expression : user.profile.department == "Finance Department") Pour les correspondances partielles, utilisez cette expression : user.profile.department.contains(“Finance”) |
|
Associez les attributs du profil de l'utilisateur et les groupes afin de définir des expressions complexes qui vous permettront d'inclure les utilisateurs suivants :
|
(user.profile.department.contains("Communications") || (user.profile.department.contains("Communications") || user.profile.department == "Human Resources") && !user.isMemberOf({'group.profile.name': 'EMEA', 'operator': 'EXACT' }) && user.isMemberOf({'group.profile.name': {{"Interns", "Contractors", "Partners"}, 'operator': 'EXACT'}}) |
Définir des réviseurs dynamiques
Utilisez l'Okta Expression Language pour personnaliser le réviseur pour chaque utilisateur. Par exemple, si vous souhaitez que le responsable d'un utilisateur examine ses accès ou encore si vous voulez désigner un réviseur pour différentes équipes ou services. Avant de créer des expressions avec l'Okta Expression Language, consultez la section Astuces.
Assurez-vous que votre expression détermine s'il faut utiliser l'identifiant de l'utilisateur ou le nom d'utilisateur d'un utilisateur Okta unique. Si l'expression est invalide ou ne permet pas d'obtenir un utilisateur, alors le système assigne le réviseur de secours défini lors de la création de la campagne pour la révision de l'ensemble des éléments pour cet utilisateur.
Lorsque vous créez vos expressions, il peut s'avérer utile de réfléchir à la logique liée au réviseur avec les termes IF/THEN pour chaque utilisateur. Par exemple, pour l'utilisateur A, si la condition P est True (Vrai), alors il faut affecter le réviseur B.
Exemples d'expressions
| Cas d'utilisation | Exemples d'expressions |
|---|---|
| Affecter le responsable de l'utilisateur à chaque utilisateur. | user.profile.managerId |
| Affecter le responsable de l'utilisateur uniquement pour les utilisateurs qui disposent d'un certain attribut de profil (dans cet exemple, le service est le Service 1) et un réviseur spécifique à tous les autres utilisateurs. | user.profile.department == "Human Resources" ? user.profile.managerId : "jsmith@example.com" |
|
Définissez un propriétaire du groupe comme réviseur pour un groupe ayant au moins un propriétaire défini. |
user.findGroupAndGetOwners({'group.id': 'groupId'}, 'USER')[0] |
|
Définissez le propriétaire du groupe comme réviseur pour un groupe qui a un ou plusieurs propriétaires. |
user.findGroupAndGetOwners({'group.id': 'groupId'}, 'USER')[0] |
|
Affecter un réviseur aux utilisateurs membres d'un groupe en particulier. |
user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'}) ? "westcoastreviewer@example.com" : "otherreviewer@example.com" De plus, pour affecter le réviseur de secours aux utilisateurs qui ne font pas partie du groupe, utilisez cette expression : user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'}) ? "westcoastreviewer@example.com" ? null |
|
Affecter les réviseurs qui appartiennent à un domaine Realm spécifique |
user.realmId == "guo4c8usniIlFgluO0g7" ? "jane@gmail.com":(user.realmId == "guo4c8usniIlFgluO0g7" ? "joe@gmail.com":"joea@gmail.com") Utilisez cette expression uniquement si la fonctionnalité domaine Realms est activée. |
| Affecter un réviseur aux utilisateurs membres de deux groupes. Sinon, affecter le responsable de l'utilisateur. | (user.isMemberOf({'group.id': '00gjitX9HqABSoqTB0g3'}) && user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'})) ? 'groupreviewer@example.com' : user.profile.managerId |
| Affecter un réviseur aux utilisateurs membres d'au moins un des deux groupes. Sinon, affecter le réviseur de secours. | user.isMemberOf({'group.id': {'00gjitX9HqABSoqTB0g3', '00garwpuyxHaWOkdV0g4'}}) ? "groupreviewer@example.com" : null |
| Affecter un réviseur pour les utilisateurs qui sont membres d'un groupe, mais qui ne sont pas membres d'un autre. Sinon, affecter le responsable de l'utilisateur. | (user.isMemberOf({'group.profile.name': 'West Coast Users', 'operator': 'EXACT'}) && !user.isMemberOf({'group.id': '00garwpuyxHaWOkdV0g4'})) ? "groupreviewer@example.com" : user.profile.managerId |
Rubriques liées
Créer des campagnes de ressources
Créer des campagnes utilisateurs
