Déclencheur Lambda avant génération de jeton - Amazon Cognito

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déclencheur Lambda avant génération de jeton

Comme Amazon Cognito appelle ce déclencheur avant la génération de jeton, vous pouvez personnaliser les revendications dans les jetons du groupe d’utilisateurs. Les fonctionnalités de base de la première version ou l’événement déclencheur avant la génération du jeton V1_0 vous permettent de personnaliser le jeton d’identité (ID). Dans les groupes d’utilisateurs dotés de fonctionnalités de sécurité avancées actives, vous pouvez générer la version 2 ou l’événement déclencheur V2_0 en personnalisant le jeton d’accès.

Amazon Cognito envoie un événement V1_0 en tant que demande à votre fonction avec les données qu’il inscrirait dans le jeton d’identification. Un événement V2_0 est une demande unique contenant les données qu’Amazon Cognito inscrirait à la fois dans les jetons d’identité et d’accès. Pour personnaliser les deux jetons, vous devez mettre à jour votre fonction afin d’utiliser la version du déclencheur la plus récente et envoyer les données des deux jetons dans la même réponse.

Ce déclencheur Lambda permet d’ajouter, de supprimer et de modifier certaines demandes relatives aux jetons d’identité et d’accès avant qu’Amazon Cognito ne les envoie à votre application. Pour utiliser cette fonction, associez une fonction Lambda à partir de la console des groupes d’utilisateurs Amazon Cognito ou mettez à jour votre groupe d’utilisateurs LambdaConfig via l’ AWS Command Line Interface (AWS CLI).

Versions de l’événement

Votre groupe d'utilisateurs peut fournir différentes versions d'un événement déclencheur antérieur à la génération du jeton à votre fonction Lambda. Un V1_0 déclencheur fournit les paramètres de modification des jetons d'identification. Un V2_0 déclencheur fournit les paramètres suivants.

  1. Les fonctions d'un V1_0 déclencheur.

  2. Possibilité de personnaliser les jetons d'accès.

  3. Possibilité de transmettre des types de données complexes aux valeurs de réclamation des identifiants et des jetons d'accès :

    • Chaîne

    • Nombre

    • Booléen

    • Tableau de chaînes, de nombres, de booléens ou d'une combinaison de ces éléments

    • JSON

Note

Dans le jeton d'identification, vous pouvez renseigner des objets complexes avec les valeurs des revendications, à l'exception dephone_number_verified, email_verifiedupdated_at, etaddress.

Les groupes d'utilisateurs fournissent V1_0 des événements par défaut. Pour configurer votre groupe d'utilisateurs afin d'envoyer un V2_0 événement, choisissez une version d'événement déclencheur des fonctionnalités de base et personnalisation du jeton d'accès lorsque vous configurez votre déclencheur dans la console Amazon Cognito. Vous pouvez également définir la valeur de LambdaVersion dans les LambdaConfigparamètres d'une requête UpdateUserPool ou d'une demande d'CreateUserPool API. Des frais supplémentaires s'appliquent à la personnalisation des jetons d'accès V2_0 lors d'événements. Pour plus d’informations, consultez Tarification d’Amazon Cognito.

Demandes et portées exclues

Amazon Cognito limite les demandes et les portées que vous pouvez ajouter, modifier ou supprimer dans les jetons d’accès et d’identité. Si votre fonction Lambda tente de définir une valeur pour l’une de ces demandes, Amazon Cognito émet un jeton contenant la valeur initiale de la réclamation, si elle figurait dans la demande.

Demandes partagées
  • acr

  • amr

  • at_hash

  • auth_time

  • azp

  • exp

  • iat

  • iss

  • jti

  • nbf

  • nonce

  • origin_jti

  • sub

  • token_use

Demandes de jetons d’identification
  • identities

  • aud

  • cognito:username

Demandes relatives aux jetons d’accès
  • username

  • client_id

  • scope

    Note

    Vous pouvez modifier les portées d’un jeton d’accès avec les valeurs de réponse scopesToAdd et scopesToSuppress, mais vous ne pouvez pas modifier directement la demande scope. Vous ne pouvez pas ajouter des portées commençant par aws.cognito, y compris la portée aws.cognito.signin.user.admin réservée aux groupes d’utilisateurs.

  • device_key

  • event_id

  • version

Vous ne pouvez pas ajouter ou annuler les demandes comportant les préfixes suivants, mais vous pouvez les supprimer ou les empêcher d’apparaître dans le jeton.

  • dev:

  • cognito:

Vous pouvez ajouter une demande aud aux jetons d’accès, mais sa valeur doit correspondre à l’ID client de l’application de la session en cours. Vous pouvez obtenir l’ID du client dans l’événement de demande à partir deevent.callerContext.clientId.

Personnalisation du jeton d’identité

Avec le déclencheur Lambda de la prégénération du jeton, vous pouvez personnaliser le contenu d’un jeton d’identité (ID) à partir de votre groupe d’utilisateurs. Le jeton d’identification fournit des attributs utilisateur provenant d’une source d’identité fiable pour la connexion à une application Web ou mobile. Pour plus d’informations sur les jetons d’identification, consultez Utilisation du jeton d'identification.

Les utilisations du déclencheur Lambda de prégénération du jeton avec un jeton d’identification sont les suivantes.

  • Lors de l’exécution, modifiez le rôle IAM que votre utilisateur demande à partir d’une réserve d’identités.

  • Ajoutez des attributs utilisateur provenant d’une source externe.

  • Ajoutez ou remplacez les valeurs d’attributs utilisateur existantes.

  • Supprimez la divulgation des attributs utilisateur qui, en raison des portées autorisées de votre utilisateur et de l’accès en lecture aux attributs que vous avez accordé à votre client d’application, seraient autrement transmis à votre application.

Personnalisation du jeton d’accès

Avec le déclencheur Lambda de la prégénération du jeton, vous pouvez personnaliser le contenu d’un jeton d’identité (ID) à partir de votre groupe d’utilisateurs. Le jeton d’accès autorise les utilisateurs à récupérer des informations à partir de ressources dont l’accès est protégé, telles que les opérations d’API autorisées par les jetons Amazon Cognito et les API tierces. Bien que vous puissiez générer des jetons d'accès pour une autorisation machine-to-machine (M2M) avec Amazon Cognito en accordant des informations d'identification client, les demandes M2M n'invoquent pas la fonction de déclenchement préalable à la génération des jetons et ne peuvent pas émettre de jetons d'accès personnalisés. Pour plus d’informations sur les jetons d’accès, consultez Utilisation du jeton d'accès.

Les utilisations du déclencheur Lambda de prégénération du jeton avec un jeton d’accès sont les suivantes.

  • Ajoutez ou supprimez les portées OAuth 2.0 de la demande scope. Par exemple, vous pouvez ajouter des portées à un jeton d’accès issu de l’authentification de l’API des groupes d’utilisateurs Amazon Cognito, qui attribue uniquement la portée aws.cognito.signin.user.admin.

  • Modifiez l’appartenance d’un utilisateur à des groupes de groupes d’utilisateurs.

  • Ajoutez des demandes qui ne figurent pas déjà dans un jeton d’accès Amazon Cognito.

  • Supprimez la divulgation de demandes qui seraient autrement transmises à votre application.

Pour prendre en charge la personnalisation de l’accès dans votre groupe d’utilisateurs, vous devez configurer le groupe d’utilisateurs pour générer une version mise à jour de la demande de déclenchement. Mettez à jour votre groupe d’utilisateurs comme indiqué dans la procédure suivante.

AWS Management Console
Pour prendre en charge la personnalisation du jeton d’accès dans un déclencheur Lambda de prégénération du jeton
  1. Accédez à la console Amazon Cognito, puis choisissez User Pools (Groupes d’utilisateurs).

  2. Choisissez un groupe d’utilisateurs existant dans la liste ou créez-en un.

  3. Si ce n’est pas déjà fait, activez les fonctionnalités de sécurité avancées dans l’onglet Intégration d’application.

  4. Choisissez l’onglet User pool properties (Propriétés du groupe d’utilisateurs) et localisez Lambda triggers (Déclencheurs Lambda).

  5. Ajoutez ou modifiez un déclencheur de prégénération de jetons.

  6. Choisissez une fonction Lambda sous Attribuer une fonction Lambda.

  7. Choisissez une Version de l’événement déclencheur des Fonctionnalités de base et de la personnalisation des jetons d’accès. Ce paramètre met à jour les paramètres de demande qu’Amazon Cognito envoie à votre fonction afin d’inclure des champs pour la personnalisation des jetons d’accès.

User pools API

Pour prendre en charge la personnalisation du jeton d’accès dans un déclencheur Lambda de prégénération du jeton

Générez une demande UpdateUserPoold'API CreateUserPoolou. Vous devez spécifier une valeur pour tous les paramètres auxquels vous ne voulez pas attribuer une valeur par défaut. Pour plus d’informations, consultez Mise à jour de la configuration d'un groupe d'utilisateurs.

Incluez le contenu suivant dans le paramètre LambdaVersion de votre demande. La valeur LambdaVersion de V2_0 oblige votre groupe d’utilisateurs à ajouter des paramètres pour la personnalisation des jetons d’accès. Pour appeler une version de fonction spécifique, utilisez un ARN de fonction Lambda avec une version de fonction comme valeur de LambdaArn.

"PreTokenGenerationConfig": { "LambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:MyFunction", "LambdaVersion": "V2_0" },

Sources du déclencheur Lambda avant la génération de jeton

Valeur triggerSource Événement
TokenGeneration_HostedAuth Appelé lors de l’authentification à partir de la page de connexion de l’interface utilisateur hébergée par Amazon Cognito.
TokenGeneration_Authentication Appelé lorsque les flux d’authentification d’utilisateur sont terminés.
TokenGeneration_NewPasswordChallenge Appelé après la création de l’utilisateur par un administrateur. Ce flux est appelé lorsque l’utilisateur doit changer un mot de passe temporaire.
TokenGeneration_AuthenticateDevice Appelé à la fin de l’authentification d’un dispositif d’utilisateur.
TokenGeneration_RefreshTokens Appelé lorsqu’un utilisateur tente d’actualiser les jetons d’identité et d’accès.

Paramètres du déclencheur Lambda avant la génération de jeton

La demande qu’Amazon Cognito transmet à cette fonction Lambda est une combinaison des paramètres ci-dessous et des paramètres courants qu’Amazon Cognito ajoute à toutes les demandes. Lorsque vous ajoutez un déclencheur Lambda de prégénération de jetons à votre groupe d’utilisateurs, vous pouvez choisir la version du déclencheur. Cette version détermine si Amazon Cognito transmet une demande à votre fonction Lambda avec des paramètres supplémentaires pour la personnalisation des jetons d’accès.

Version 1

Le jeton de version 1 peut définir l'appartenance à un groupe, les rôles IAM et les nouvelles réclamations sous forme de jetons d'identification.

{ "request": { "userAttributes": {"string": "string"}, "groupConfiguration": { "groupsToOverride": [ "string", "string" ], "iamRolesToOverride": [ "string", "string" ], "preferredRole": "string" }, "clientMetadata": {"string": "string"} }, "response": { "claimsOverrideDetails": { "claimsToAddOrOverride": {"string": "string"}, "claimsToSuppress": [ "string", "string" ], "groupOverrideDetails": { "groupsToOverride": [ "string", "string" ], "iamRolesToOverride": [ "string", "string" ], "preferredRole": "string" } } } }
Version 2

L'événement de demande de version 2 ajoute des champs qui personnalisent le jeton d'accès. Il ajoute également la prise en charge claimsToOverride des types de données complexes dans l'objet de réponse. Votre fonction Lambda peut renvoyer les types de données suivants sous la valeur de : claimsToOverride

  • Chaîne

  • Nombre

  • Booléen

  • Tableau de chaînes, de nombres, de booléens ou d'une combinaison de ces éléments

  • JSON

{ "request": { "userAttributes": { "string": "string" }, "scopes": ["string", "string"], "groupConfiguration": { "groupsToOverride": ["string", "string"], "iamRolesToOverride": ["string", "string"], "preferredRole": "string" }, "clientMetadata": { "string": "string" } }, "response": { "claimsAndScopeOverrideDetails": { "idTokenGeneration": { "claimsToAddOrOverride": { "string": [accepted datatype] }, "claimsToSuppress": ["string", "string"] }, "accessTokenGeneration": { "claimsToAddOrOverride": { "string": [accepted datatype] }, "claimsToSuppress": ["string", "string"], "scopesToAdd": ["string", "string"], "scopesToSuppress": ["string", "string"] }, "groupOverrideDetails": { "groupsToOverride": ["string", "string"], "iamRolesToOverride": ["string", "string"], "preferredRole": "string" } } } }

Paramètres de demande avant la génération de jeton

Name (Nom) Description Version minimale de l’événement déclencheur
userAttributes

Attributs du profil de votre utilisateur dans votre groupe d’utilisateurs.

1
groupConfiguration

Objet en entrée qui contient la configuration de groupe actuelle. L'objet inclut groupsToOverride, iamRolesToOverride et preferredRole.

1
groupsToOverride

Groupes du groupe d’utilisateurs dont votre utilisateur est membre.

1
iamRolesToRemplacer

Vous pouvez associer un groupe d'utilisateurs à un rôle AWS Identity and Access Management (IAM). Cet élément est une liste de tous les rôles IAM des groupes dont votre utilisateur est membre.

1
preferredRole

Vous pouvez définir une priorité pour les groupes de groupes d’utilisateurs. Cet élément contient le nom du rôle IAM du groupe ayant la priorité la plus élevée dans l’élément groupsToOverride.

1
clientMetadata

Une ou plusieurs paires clé-valeur que vous pouvez spécifier et fournir en tant qu'entrée personnalisée à la fonction Lambda pour le déclencheur avant la génération de jeton.

Pour transmettre ces données à votre fonction Lambda, utilisez le ClientMetadata paramètre dans les opérations AdminRespondToAuthChallengeet RespondToAuthChallengeAPI. Amazon Cognito n'inclut pas les données issues du ClientMetadata paramètre AdminInitiateAuthet des opérations d'InitiateAuthAPI dans la demande transmise à la fonction de pré-génération du jeton.

1
portées

Portées OAuth 2.0 de votre utilisateur. Les portées présentes dans un jeton d’accès sont les portées standard et personnalisées du groupe d’utilisateurs demandées par votre utilisateur et que vous avez autorisé votre client d’application à émettre.

2

Paramètres de réponse avant la génération de jeton

Name (Nom) Description Version minimale de l’événement déclencheur
claimsOverrideDetails Un conteneur pour tous les éléments d’un événement déclencheur V1_0. 1
claimsAndScopeOverrideDetails

Un conteneur pour tous les éléments d’un événement déclencheur V2_0.

2
idTokenGeneration

Les demandes que vous souhaitez remplacer, ajouter ou supprimer dans le jeton d’identification de votre utilisateur. Les valeurs de personnalisation du parent du jeton d’identification apparaissent uniquement dans les événements de la version 2, mais les éléments enfants apparaissent dans les événements de la version 1.

2
accessTokenGeneration

Les demandes que vous souhaitez remplacer, ajouter ou supprimer dans le jeton d’accès de votre utilisateur. Les valeurs de personnalisation du parent du jeton d’accès n’apparaissent que dans les événements de la version 2.

2
claimsToAddOrOverride

Carte d’une ou de plusieurs demandes et de leurs valeurs que vous souhaitez ajouter ou modifier. Pour les demandes associées au groupe, utilisez plutôt groupOverrideDetails.

Dans les événements de la version 2, cet élément apparaît à la fois sous accessTokenGeneration et idTokenGeneration.

1 *
claimsToSuppress

Liste des demandes que vous voulez qu’Amazon Cognito supprime. Si votre fonction supprime et remplace une valeur de revendication, Amazon Cognito supprime la revendication.

Dans les événements de la version 2, cet élément apparaît à la fois sous accessTokenGeneration et idTokenGeneration.

1
groupOverrideDetails

Objet en sortie qui contient la configuration de groupe actuelle. L’objet inclut groupsToOverride, iamRolesToOverride et preferredRole.

Votre fonction remplace l’objet groupOverrideDetails par l’objet que vous fournissez. Si vous fournissez un objet vide ou null dans la réponse, Amazon Cognito supprime les groupes. Pour laisser la configuration de groupe existante telle quelle, copiez la valeur de l’objet groupConfiguration de la demande dans l’objet groupOverrideDetails de la réponse. Ensuite, retransmettez-la au service.

Les jetons d’identification et d’accès Amazon Cognito contiennent tous les deux les demandes cognito:groups. Votre objet groupOverrideDetails remplace la demande cognito:groups dans les jetons d’accès et les jetons d’identification.

1
scopesToAdd

Liste des portées OAuth 2.0 que vous souhaitez ajouter à la demande scope du jeton d’accès de votre utilisateur. Vous ne pouvez pas ajouter de valeurs de portée contenant un ou plusieurs espaces vides.

2
scopesToSuppress

Liste des portées OAuth 2.0 que vous souhaitez supprimer de la demande scope du jeton d’accès de votre utilisateur.

2

* Les objets de réponse aux événements de la version 1 peuvent renvoyer des chaînes. Les objets de réponse aux événements de la version 2 peuvent renvoyer des objets complexes.

Exemple de version 2 d’un événement déclencheur avant le jeton : ajout et suppression de demandes, de champs d’application et de groupes

Cet exemple apporte les modifications suivantes aux jetons d’un utilisateur.

  1. Définit leur valeur family_name comme Doe dans le jeton d’identification.

  2. Évite que les demandes email et phone_number n’apparaissent dans le jeton d’identification.

  3. Définit leur demande de jeton d’identification cognito:roles sur "arn:aws:iam::123456789012:role\/sns_callerA","arn:aws:iam::123456789012:role\/sns_callerC","arn:aws:iam::123456789012:role\/sns_callerB".

  4. Définit leur demande de jeton d’identification cognito:preferred_role sur arn:aws:iam::123456789012:role/sns_caller.

  5. Ajoute les portées openid, email et solar-system-data/asteroids.add au jeton d’accès.

  6. Supprime les portées phone_number et aws.cognito.signin.user.admin du jeton d’accès. La suppression de phone_number empêche la récupération du numéro de téléphone de l’utilisateur à partir de userInfo. La suppression de aws.cognito.signin.user.admin empêche les demandes d’API de l’utilisateur de lire et de modifier son propre profil avec l’API des groupes d’utilisateurs Amazon Cognito.

    Note

    La suppression de phone_number des portées empêche uniquement la récupération du numéro de téléphone d’un utilisateur si les portées restantes du jeton d’accès incluent openid et au moins une autre portée standard. Pour plus d’informations, consultez À propos des portées.

  7. Définit leur demande de jeton d’identification et d’accès cognito:groups sur "new-group-A","new-group-B","new-group-C".

JavaScript
export const handler = function(event, context) { event.response = { "claimsAndScopeOverrideDetails": { "idTokenGeneration": { "claimsToAddOrOverride": { "family_name": "Doe" }, "claimsToSuppress": [ "email", "phone_number" ] }, "accessTokenGeneration": { "scopesToAdd": [ "openid", "email", "solar-system-data/asteroids.add" ], "scopesToSuppress": [ "phone_number", "aws.cognito.signin.user.admin" ] }, "groupOverrideDetails": { "groupsToOverride": [ "new-group-A", "new-group-B", "new-group-C" ], "iamRolesToOverride": [ "arn:aws:iam::123456789012:role/new_roleA", "arn:aws:iam::123456789012:role/new_roleB", "arn:aws:iam::123456789012:role/new_roleC" ], "preferredRole": "arn:aws:iam::123456789012:role/new_role", } } }; // Return to Amazon Cognito context.done(null, event); };

Amazon Cognito transmet les informations d’événement à votre fonction Lambda. Cette fonction renvoie alors le même objet d’événement à Amazon Cognito, avec d’éventuelles modifications dans la réponse. Dans la console Lambda, vous pouvez configurer un événement de test avec des données pertinentes pour votre déclencheur Lambda. Voici un événement de test pour cet exemple de code :

JSON
{ "version": "2", "triggerSource": "TokenGeneration_Authentication", "region": "us-east-1", "userPoolId": "us-east-1_EXAMPLE", "userName": "JaneDoe", "callerContext": { "awsSdkVersion": "aws-sdk-unknown-unknown", "clientId": "1example23456789" }, "request": { "userAttributes": { "sub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "cognito:user_status": "CONFIRMED", "email_verified": "true", "phone_number_verified": "true", "phone_number": "+12065551212", "family_name": "Zoe", "email": "Jane.Doe@example.com" }, "groupConfiguration": { "groupsToOverride": ["group-1", "group-2", "group-3"], "iamRolesToOverride": ["arn:aws:iam::123456789012:role/sns_caller1", "arn:aws:iam::123456789012:role/sns_caller2", "arn:aws:iam::123456789012:role/sns_caller3"], "preferredRole": ["arn:aws:iam::123456789012:role/sns_caller"] }, "scopes": [ "aws.cognito.signin.user.admin", "openid", "email", "phone" ] }, "response": { "claimsAndScopeOverrideDetails": [] } }

Exemple de version 2 d'un événement antérieur à la génération de jetons : ajout de revendications contenant des objets complexes

Cet exemple apporte les modifications suivantes aux jetons d’un utilisateur.

  1. Ajoute des revendications de types numérique, chaîne, booléen et JSON au jeton d'identification. Il s'agit de la seule modification que les événements déclencheurs de la version 2 mettent à la disposition du jeton d'identification.

  2. Ajoute des revendications de types numérique, chaîne, booléen et JSON au jeton d'accès.

  3. Ajoute trois étendues au jeton d'accès.

  4. Supprime les sub demandes email et contenues dans les jetons d'identification et d'accès.

  5. Supprime l'aws.cognito.signin.user.adminétendue du jeton d'accès.

JavaScript
export const handler = function(event, context) { var scopes = ["MyAPI.read", "MyAPI.write", "MyAPI.admin"] var claims = {} claims["aud"]= event.callerContext.clientId; claims["booleanTest"] = false; claims["longTest"] = 9223372036854775807; claims["exponentTest"] = 1.7976931348623157E308; claims["ArrayTest"] = ["test", 9223372036854775807, 1.7976931348623157E308, true]; claims["longStringTest"] = "\{\ \"first_json_block\": \{\ \"key_A\": \"value_A\",\ \"key_B\": \"value_B\"\ \},\ \"second_json_block\": \{\ \"key_C\": \{\ \"subkey_D\": [\ \"value_D\",\ \"value_E\"\ ],\ \"subkey_F\": \"value_F\"\ \},\ \"key_G\": \"value_G\"\ \}\ \}"; claims["jsonTest"] = { "first_json_block": { "key_A": "value_A", "key_B": "value_B" }, "second_json_block": { "key_C": { "subkey_D": [ "value_D", "value_E" ], "subkey_F": "value_F" }, "key_G": "value_G" } }; event.response = { "claimsAndScopeOverrideDetails": { "idTokenGeneration": { "claimsToAddOrOverride": claims, "claimsToSuppress": ["email","sub"] }, "accessTokenGeneration": { "claimsToAddOrOverride": claims, "claimsToSuppress": ["email","sub"], "scopesToAdd": scopes, "scopesToSuppress": ["aws.cognito.signin.user.admin"] } } }; console.info("EVENT response\n" + JSON.stringify(event, (_, v) => typeof v === 'bigint' ? v.toString() : v, 2)) console.info("EVENT response size\n" + JSON.stringify(event, (_, v) => typeof v === 'bigint' ? v.toString() : v).length) // Return to Amazon Cognito context.done(null, event); };

Amazon Cognito transmet les informations d’événement à votre fonction Lambda. Cette fonction renvoie alors le même objet d’événement à Amazon Cognito, avec d’éventuelles modifications dans la réponse. Dans la console Lambda, vous pouvez configurer un événement de test avec des données pertinentes pour votre déclencheur Lambda. Voici un événement de test pour cet exemple de code :

JSON
{ "version": "2", "triggerSource": "TokenGeneration_HostedAuth", "region": "us-west-2", "userPoolId": "us-west-2_EXAMPLE", "userName": "JaneDoe", "callerContext": { "awsSdkVersion": "aws-sdk-unknown-unknown", "clientId": "1example23456789" }, "request": { "userAttributes": { "sub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "cognito:user_status": "CONFIRMED" "email_verified": "true", "phone_number_verified": "true", "phone_number": "+12065551212", "email": "Jane.Doe@example.com" }, "groupConfiguration": { "groupsToOverride": ["group-1", "group-2", "group-3"], "iamRolesToOverride": ["arn:aws:iam::123456789012:role/sns_caller1"], "preferredRole": ["arn:aws:iam::123456789012:role/sns_caller1"] }, "scopes": [ "aws.cognito.signin.user.admin", "phone", "openid", "profile", "email" ] }, "response": { "claimsAndScopeOverrideDetails": [] } }

Exemple de version 1 d’un événement avant la génération du jeton : ajout d’une nouvelle demande et suppression d’une demande existante

Cet exemple utilise l’événement déclencheur version 1 avec une fonction Lambda de prégénération du jeton pour ajouter une nouvelle demande et en supprimer une existante.

Node.js
const handler = async (event) => { event.response = { claimsOverrideDetails: { claimsToAddOrOverride: { my_first_attribute: "first_value", my_second_attribute: "second_value", }, claimsToSuppress: ["email"], }, }; return event; }; export { handler };

Amazon Cognito transmet les informations d’événement à votre fonction Lambda. Cette fonction renvoie alors le même objet d’événement à Amazon Cognito, avec d’éventuelles modifications dans la réponse. Dans la console Lambda, vous pouvez configurer un événement de test avec des données pertinentes pour votre déclencheur Lambda. Un événement de test pour cet exemple de code est fourni ci-dessous. Comme l’exemple de code ne traite pas de paramètres de demande, vous pouvez utiliser un événement de test avec une demande vide. Pour plus d’informations sur les paramètres de demande communs, consultez Événement déclencheur Lambda d'un groupe d'utilisateurs.

JSON
{ "request": {}, "response": {} }

Exemple de version 1 d’un événement avant la génération du jeton : modification de l’appartenance de l’utilisateur au groupe

Cet exemple utilise l’événement déclencheur version 1 avec une fonction Lambda avant la génération du jeton pour modifier l’appartenance au groupe de l’utilisateur.

Node.js
const handler = async (event) => { event.response = { claimsOverrideDetails: { groupOverrideDetails: { groupsToOverride: ["group-A", "group-B", "group-C"], iamRolesToOverride: [ "arn:aws:iam::XXXXXXXXXXXX:role/sns_callerA", "arn:aws:iam::XXXXXXXXX:role/sns_callerB", "arn:aws:iam::XXXXXXXXXX:role/sns_callerC", ], preferredRole: "arn:aws:iam::XXXXXXXXXXX:role/sns_caller", }, }, }; return event; }; export { handler };

Amazon Cognito transmet les informations d’événement à votre fonction Lambda. Cette fonction renvoie alors le même objet d’événement à Amazon Cognito, avec d’éventuelles modifications dans la réponse. Dans la console Lambda, vous pouvez configurer un événement de test avec des données pertinentes pour votre déclencheur Lambda. Voici un événement de test pour cet exemple de code :

JSON
{ "request": {}, "response": {} }