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

Conseils

  • Consultez la documentation Okta Expression Language pour vous familiariser avec la syntaxe.
  • Utilisez l'opérateur ternaire [Condition] ? [Value if TRUE] : [Value if FALSE] pour générer 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 renvoie soit l'identifiant de l'utilisateur, soit 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é Prévisualiser sur les panneaux Identités et Réviseurs.
  • Servez-vous de n'importe quelle valeur contenue sur le profil d'un utilisateur et d'un groupe afin de réduire le périmètre de la campagne.
  • Pour faire référence à un groupe dans votre expression, utilisez le nom ou l'ID du groupe. Okta recommande d'utiliser l'identifiant du groupe, car il ne changera pas.
  • Utilisez les symboles suivants pour désigner un opérateur :
    • && pour signifier Et opérateur.
    • || pour signifier Ou opérateur.
    • ! pour désigner l'opérateur Non.

Définir le périmètre d'identité

Utilisez l'Okta Expression Language pour limiter le périmètre d'une campagne à certains utilisateurs selon les attributs de leur profil et leur 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 Okta Expression Language pour obtenir de plus amples informations.

Exemples d'expressions relatives au périmètre d'identité : attributs du profil utilisateur Okta

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 de certains groupes. !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"
Inclure les utilisateurs qui sont membres d'un groupe, mais pas d'un autre groupe. user.isMemberOf({'group.profile.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")

Utilisez une combinaison d'attributs de profil utilisateur et de groupes pour définir des expressions complexes qui vous permettront d'inclure les utilisateurs suivants :

  • Les utilisateurs qui font partie d'un service dont le nom contient le mot « communications » ou qui font partie du service des ressources humaines ; et
  • Les utilisateurs qui ne font pas partie d'un groupe EMEA ; et
  • Les utilisateurs qui font partie d'au moins un des trois groupes suivants : Stagiaires, Sous-traitants ou Partenaires.
(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'}})

Exemples d'expressions relatives au périmètre d'identité : attributs importés du profil utilisateur d'application

Vous pouvez utiliser les attributs importés du profil utilisateur d'application pour définir le périmètre d'identité d'une campagne de ressources uniquement si vous avez activé Certifier les comptes non gérés pour l'org, inclus dans le périmètre des ressources de la campagne des applications pour lesquelles la gestion des droits est activée, et activé l'option Examiner les droits.

Cas d'utilisation Exemple d'expression
Limitez une campagne aux utilisateurs ayant un attribut de profil utilisateur d'application importé spécifique. importedAppUser.profile.department == "Finance"
Limitez une campagne aux utilisateurs qui disposent d'un droit spécifique. importedAppUser.userEntitlements.contains("Admin")

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 renvoie soit l'identifiant de l'utilisateur, soit 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 relatives au périmètre du réviseur : attributs du profil utilisateur Okta

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")

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