Indique que l’échange de jetons en cours est refusé.Si la requête est refusée en raison d’un jeton du sujet non valide, nous recommandons d’utiliser plutôt api.access.rejectInvalidSubjectToken,
afin de distinguer les tentatives par force brute sur le jeton du sujet des autres motifs de refus de la requête.
Marque le jeton du sujet fourni dans la requête comme invalide. La requête sera alors
rejetée avec le code d’erreur “invalid_request”.Cette opération signale aux fonctionnalités Attack Protection qu’un jeton du sujet invalide a été fourni,
afin que des protections contre les attaques par force brute visant le jeton du sujet puissent être appliquées.
Une explication en langage clair du rejet de la requête d’échange de jeton.
exports.onExecuteCustomTokenExchange = async (event, api) => { try { // Valider le subject_token const subject_token = await validateToken(event.transaction.subject_token, jwksUri); // définir l'utilisateur pour la transaction api.authentication.setUserById(subject_token.id); } catch (error) { if (error.message === 'Invalid Token') { // Si le problème vient précisément du fait que le subject_token est invalide console.error('Invalid Token error'); api.access.rejectInvalidSubjectToken('Invalid subject_token'); } else { // s'il y a toute autre erreur inattendue, générer une erreur serveur throw error; } }};
Indiquez l’utilisateur correspondant au subject_token en fournissant le userId. La requête d’échange de jetons émettra des jetons pour cet utilisateur.
Il doit s’agir d’un utilisateur existant.
Remarque : Une seule des méthodes suivantes, api.authentication.setUserByConnection ou api.authentication.setUserById, doit être appelée par l’Action Custom Token Exchange.
Indiquez l’utilisateur correspondant au subject_token en fournissant une connexion et des attributs utilisateur.
La requête d’échange de jeton émettra des jetons pour cet utilisateur.Il peut s’agir d’un utilisateur existant ou d’un nouvel utilisateur. Si l’utilisateur n’existe pas, il sera créé.
La propriété user_id du user_profile sera utilisée pour déterminer si l’utilisateur existe déjà.Remarque : une seule des méthodes api.authentication.setUserByConnection ou api.authentication.setUserById doit être appelée par l’action Custom Token Exchange.
Les attributs du profil de l’utilisateur, y compris user_id et, éventuellement, d’autres attributs comme email, name, etc.Le champ user_id est requis et doit correspondre à l’identifiant unique de l’utilisateur dans la connexion;
il servira à déterminer si l’utilisateur existe ou s’il doit être créé. Pour un utilisateur existant, ce user_id
se trouve dans le tableau identities du profil utilisateur normalisé.Si l’utilisateur existe déjà, les attributs utilisateur suivants ne peuvent pas être mis à jour : email, email_verified, phone, phone_verified, username.
S’ils ne correspondent pas à ceux de l’utilisateur existant, une erreur sera renvoyée.
Indique si cette adresse courriel est vérifiée (true) ou non (false). L’utilisateur recevra un courriel de vérification après sa création si email_verified vaut false ou n’est pas spécifié.
Indique si l’utilisateur recevra un courriel de vérification après sa création (true) ou non (false). Remplace le comportement du paramètre email_verified.
Options permettant de contrôler le comportement de la commande setUserByConnection.
creationBehavior - Comportement à appliquer si aucun utilisateur avec le user_id spécifié n’existe dans la connexion.
Peut être ‘create_if_not_exists’, ce qui entraîne la création d’un nouvel utilisateur à partir des attributs utilisateur fournis;
ou ‘none’, auquel cas aucun utilisateur n’est créé et une erreur est renvoyée si aucun utilisateur n’existe.
updateBehavior - Comportement à appliquer si un utilisateur avec le user_id spécifié existe déjà dans la connexion.
Peut être ‘replace’, ce qui remplace les attributs de l’utilisateur existant par les attributs utilisateur spécifiés;
ou ‘none’, ce qui signifie que l’utilisateur existant ne sera pas modifié.
Comportement à appliquer si aucun utilisateur avec le user_id spécifié n’existe dans la connexion. Peut être ‘create_if_not_exists’, ce qui entraîne la création d’un nouvel utilisateur à partir des attributs utilisateur fournis; ou ‘none’, auquel cas aucun utilisateur n’est créé et une erreur est renvoyée si aucun utilisateur n’existe.Valeurs autorisées : create_if_not_exists, none
Comportement à appliquer si un utilisateur avec le user_id spécifié existe déjà dans la connexion. Peut être ‘replace’, ce qui remplace les attributs de l’utilisateur existant par les attributs utilisateur spécifiés; ou ‘none’, ce qui signifie que l’utilisateur existant ne sera pas modifié.Valeurs autorisées : none, replace
Set user by connection with full profile attributes
Définit l’acteur pour l’échange de jetons afin de représenter l’entité agissant au nom du sujet.
Doit être utilisée avec les commandes setUserById ou SetUserByConnection. L’appel à setActor est facultatif.
La réception d’un actor_token dans la requête ne produit pas automatiquement un claim act ; l’Action doit appeler explicitement cette méthode.
Les jetons d’actualisation ne sont pas émis lorsqu’un acteur est défini pour la transaction.
Objet imbriqué qui représente une chaîne de délégation. Jusqu’à 4 niveaux act supplémentaires sont autorisés
(5 acteurs au total, y compris l’acteur racine). Pour chaque niveau, le champ sub est obligatoire ; jusqu’à 5 propriétés
personnalisées supplémentaires (valeurs de type chaîne, booléen ou nombre) peuvent être fournies.
La valeur de la propriété de métadonnées. Elle peut être définie à null pour supprimer la
propriété de métadonnées.
exports.onExecuteCustomTokenExchange = async (event, api) => { // Valider le subject_token const subject_token = await validateToken(event.transaction.subject_token, jwksUri); // définir l'utilisateur pour la transaction api.authentication.setUserById(subject_token.id); // définir le groupe d'utilisateurs selon les informations contenues dans subject_token api.user.setAppMetadata('group', subject_token.group); return;};
La valeur de la propriété de métadonnées. Elle peut être définie à null pour supprimer la
propriété de métadonnées.
exports.onExecuteCustomTokenExchange = async (event, api) => { // Valider le subject_token const subject_token = await validateToken(event.transaction.subject_token, jwksUri); // définir l'utilisateur pour la transaction api.authentication.setUserById(subject_token.id); // définir le preferred_locale de l'utilisateur à partir des informations contenues dans le subject_token api.user.setUserMetadata('preferred_locale', subject_token.locale); return;};
Récupère une entrée décrivant une valeur mise en cache à la clé fournie,
si elle existe. Si une entrée est trouvée, la valeur mise en cache se trouve
dans la propriété value de l’objet renvoyé.
Stocke ou met à jour une valeur de chaîne dans le cache pour la clé spécifiée.Les valeurs stockées dans ce cache ont une portée limitée au Trigger dans lequel
elles sont définies. Elles sont soumises aux Actions Cache Limits.Les valeurs stockées de cette façon auront une durée de vie pouvant aller jusqu’à celle indiquée par
ttl ou expires_at. Si aucune durée de vie n’est spécifiée, une durée de vie
par défaut de 15 minutes sera utilisée. Les durées de vie ne peuvent pas dépasser la durée maximale
indiquée dans Actions Cache Limits.Important : Ce cache est conçu pour des données éphémères de courte durée. Des éléments peuvent ne pas être
disponibles dans des transactions ultérieures, même s’ils sont encore dans leur durée de vie spécifiée.
L’heure d’expiration absolue, en millisecondes depuis l’époque Unix.
Bien que les enregistrements mis en cache puissent être évincés plus tôt, ils ne
seront jamais conservés au-delà de la valeur expires_at fournie.Remarque : Cette valeur ne doit pas être fournie si une valeur a aussi
été fournie pour ttl. Si les deux options sont fournies, la date
d’expiration la plus rapprochée des deux sera utilisée.
La durée de vie de cette entrée de cache, en millisecondes.
Bien que les valeurs mises en cache puissent être évincées plus tôt, elles ne
seront jamais conservées au-delà de la valeur ttl fournie.Remarque : Cette valeur ne doit pas être fournie si une valeur a aussi
été fournie pour expires_at. Si les deux options sont fournies, la date
d’expiration la plus rapprochée des deux sera utilisée.