Okta Expression Language et crochets d'événement

Version de l'accès anticipé. Consultez la section Activer les fonctionnalités en libre-service.

Utilisez les expressions Okta Expression Language pour identifier uniquement certains événements qui déclenchent des crochets d'événement Okta. Lors de la création ou de la modification d'un crochet d'événement, vous pouvez utiliser les expressions Okta Expression Language pour effectuer les tâches suivantes :

  • Définir un filtre pour autoriser un sous-ensemble d'événements qui sont déclenchés par un crochet d'événement.

  • Réduire les incidents liés au service Web externe qui gère votre crochet d'événement.

Pour en savoir plus sur Okta Expression Language, consultez Aperçu de Okta Expression Language.

Informations de configuration

  • Assurez-vous que votre expression donne une valeur booléenne lors de la définition du filtre de votre crochet d'événement.

  • Commencez avec des expressions simples, puis ajoutez progressivement des conditions. Cette approche permet de vous assurer que votre expression fonctionne correctement.

Champs de filtre pris en charge

Les crochets d'événement peuvent uniquement filtrer les événements en fonction des données contenues dans les champs suivants :

Champ pris en charge (interface utilisateur simple)

Champ pris en charge (Langage d'expression)

eventType

event.eventType

outcome.reason

event.outcome.reason

outcome.result

event.outcome.result

actor.id

event.actor.id

actor.type

event.actor.type

actor.alternateId

event.actor.alternateId

actor.displayName

event.actor.displayName

changesAttributes

event.debugData.changedAttributes

target.id

event.target.?[id ]

target.type

event.target.?[type ]

target.alternateId

event.target.?[alternateId ]

target.displayName

event.target.?[displayName ]

Opérateurs

  • eq désigne l'opérateur d'égalité.

  • ne désigne l'opérateur d'inégalité.

  • && désigne l'opération Et.

  • || désigne l'opérateur Ou.

Définir les conditions de groupe

Utilisez Okta Expression Language pour définir une liste de groupes pouvant activer un crochet d'événement. Assurez-vous que votre expression donne une valeur booléenne : True pour inclure des groupes ou False pour empêcher l'activation du crochet d'événement.

L'exemple suivant utilise Okta Expression Language pour activer un crochet d'événement pour un groupe appelé Commercial:

event.target.?[type eq 'UserGroup' && displayName eq 'Sales'].size()> 0

Copier
...
"target": [
{
"id": "00gsnc3qy7Uy6JZfy0h7",
"type": "UserGroup",
"alternateId": "unknown",
"displayName" : "Sales"
}
],
...

Utilisez les types d'événements suivants avec des conditions de groupe :

  • group.user_membership.add

  • group.user_membership.remove

  • group.lifecycle.create

  • group.lifecycle.delete

  • group.profile.update

  • group.privilege.revoke

  • group.privilege.grant

  • system.import.group.create

  • system.import.group.delete

Exemples d'expressions

Cas d'utilisation Exemple d'expression
Activer un crochet d'événement pour des noms de groupes spécifiques event.target.?[type eq 'UserGroup' && displayName eq 'Sales'].size()> 0 || event.target.?[type eq 'UserGroup' && displayName eq 'Marketing'].size()> 0
Activer un crochet d'événement pour des identifiant de groupes spécifiques event.target.?[type eq 'UserGroup' && id eq '00gsnc3qy7Uy6JZfy0h7'].size()> 0 || event.target.?[type eq 'UserGroup' && id eq '032gs2nc3qy7Uy6JZfasd3'].size()> 0
Utilisez les attributs de l'utilisateur et les groupes afin de définir des expressions complexes (ajout d'un utilisateur spécifique à un groupe spécifique, par exemple) event.target.?[type eq 'User' && id eq '00usnklbd0FFDxYadmin0h7'].size()>0 && event.target.?[type eq 'UserGroup' && displayName eq 'Admin'].size()> 0

Définir des conditions d'application

Utilisez Okta Expression Language pour définir une liste d'applications qui peuvent activer un crochet d'événement. Assurez-vous que votre expression personnalisée donne une valeur booléenne : True pour inclure des applications ou False pour empêcher l'activation du crochet d'événement.

L'exemple suivant utilise Okta Expression Language pour activer un crochet d'événement pour une application de signet nommée My Company Bookmark App :

event.target.?[type eq 'AppInstance' && alternateId eq 'My Company Bookmark App'].size()> 0

Copier
...
"target": [
{
"id": "0oat26meilfdn0Em90h7",
"type": "AppInstance",
"alternateId": "MY Company Bookmark App",
"displayName": "Bookmark App"
},
...

Utilisez les types d'événements suivants avec des conditions d'application :

  • application.lifecycle.create

  • application.lifecycle.update

  • application.lifecycle.delete

  • application.lifecycle. activer

  • application.lifecycle.deactivate

  • application.user_membership.add

  • application.user_membership.remove

  • application.user_membership.change_password

  • application.provision.user.sync

  • app.oauth2.as.consent.grant

Exemples d'expressions

Cas d'utilisation Exemple d'expression
Activer un crochet d'événement pour des noms d'application spécifiques event.target.?[type eq 'AppInstance' && alternateId eq 'My Company Bookmark App'].size()> 0 || event.target.?[type eq 'AppInstance' && alternateId eq 'My OIDC App'].size()> 0
Activer un crochet d'événement pour des identifiants d'application spécifiques event.target.?[type eq 'AppInstance' && id eq '00gsnc3qy7Uy6JZfy0h7'].size()> 0 || event.target.?[type eq 'AppInstance' && id eq '032gs2nc3qy7Uy6JZfasd3'].size()> 0
Utilisez les attributs de l'utilisateur et les groupes afin de définir des expressions complexes (ajout d'un utilisateur spécifique à une application pécifique, par exemple) event.target.?[type eq 'User' && id eq '00usnklbd0FFDxYadmin0h7'].size()>0 && (event.target.?[type eq 'AppInstance' && alternateId eq 'My Admin App'].size() > 0

Définir les conditions du profil utilisateur

Utilisez Okta Expression Language pour définir une liste d'attributs du profil utilisateur activant un crochet d'événement. Assurez-vous que votre expression donne une valeur booléenne : True pour inclure des applications ou Falsez pour empêcher l'activation de l'appel d'événement.

L'exemple suivant utilise Okta Expression Language pour activer un crochet d'événement pour un utilisateur dont l'adresse e-mail a été mise à jour :

event.debugData.changedAttributes.contains('email')

Copier
..
"debugContext": {
"debugData": {
"requestId": "XyMjlc1OvvWkZPMA7QazbAAFIs",
"threatSuspected": "false",
"requestUri": "/api/v1/ users/00ut27as6fbC0K3rS0h7",
"changedAttributes": "email",
"targetEventHookIds": " whot1dekaabE2suVh0h7",
"url": "/api/v1/users/00ut27as6fbC0K3rS0h7?
}
},
...

Ce qui suit représente le type d'événement le plus courant pour les conditions de profil :

  • user.account.update_profile

Exemples d'expressions

Cas d'utilisation Exemple d'expression
Activer un crochet d'événement lorsque des attributs spécifiques du profil utilisateur sont mis à jour event.debugData.changedAttributes.contains('email') || event.debugData.changedAttributes.contains('manager') || event.debugData.changedAttributes.contains('department')

Définir des conditions de connexion

Utilisez Okta Expression Language pour définir des conditions de connexion spécifiques activant un crochet d'événement. Assurez-vous que votre expression donne une valeur booléenne : True pour inclure des applications ou False pour empêcher l'activation du crochet d'événement.

Cette liste fournit les options de résultat disponibles : SUCCESS, FAILURE, SKIPPED, UNKNOWN, CHALLENGE, DENY.

L'exemple suivant utilise Okta Expression Language pour activer un crochet d'événement en lien avec la connexion d'un utilisateur :

event.outcome.result eq 'SUCCESS'

L'exemple suivant utilise Okta Expression Language pour activer un crochet d'événement en cas d'échec de la connexion d'un utilisateur :

event.outcome.result eq 'FAILURE'

Ce qui suit représente le type d'événement le plus courant pour une condition de connexion :

  • user.session.start

Exemples d'expressions

Cas d'utilisation Exemple d'expression
Activer un crochet d'événement en cas de connexion réussie event.outcome.result eq'SUCCESS'

Activer un crochet d'événement en cas d'échec de connexion

event.outcome.result eq'FAILURE'

Activer un crochet d'événement pour l'adresse e-mail d'un utilisateur spécifique

event.actor.alternateId eq 'myAdmin@company.com'

Activer un crochet d'événement pour un identifiant d'utilisateur spécifique

event.actor.id eq '00usnklbd0FFDxYadmin0h7'

Activer un crochet d'événement en cas d'échec des tentatives de connexion d'un utilisateur spécifique

event.actor.alternateId eq 'myAdmin@company.com' &&

event.outcome.result eq'FAILURE'

Définir les conditions des facteurs MFA

Utilisez Okta Expression Language pour définir une liste de facteurs MFA qui peuvent activer un crochet d'événement. Assurez-vous que votre expression donne une valeur booléenne : True pour inclure des applications ou False pour empêcher l'activation du crochet d'événement.

L'exemple suivant utilise Okta Expression Language pour activer un crochet d'événement lorsqu'une question de sécurité est définie comme un facteur MFA :

event.outcome.reason.contains( 'SECURITY_QUESTA')

Utilisez les types d'événements suivants avec les conditions de facteur :

  • user.mfa.factor.activate

  • user.mfa.factor.deactivate

Exemples d'expressions

Cas d'utilisation Exemple d'expression

Activer un crochet d'événement pour une configuration de facteur MFA spécifique. Voici les types de facteur disponibles :

  • SECURITY_QUESTION

  • SMS_FACTOR

  • CALL_FACTOR

  • OKTA_VERIFY_PUSH

  • EMAIL_FACTOR

  • OKTA_SOFT_TOKEN

  • SECURID_FACTOR

  • YUBIKEY_OTP_FACTOR

  • DUO_SECURITY

event.outcome.reason.contains('SECURITY_QUESTION')

Rubriques liées

Vérifier un crochet d'événement

Crochets d'événement

Prévisualiser un appel d'événement