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 des paramètres pour les éléments suivants.
-
Les fonctions d'un
V1_0
déclencheur. -
Possibilité de personnaliser les jetons d'accès.
-
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_verified
updated_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 CreateUserPool APIdemande UpdateUserPool or. 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
etscopesToSuppress
, mais vous ne pouvez pas modifier directement la demandescope
. Vous ne pouvez pas ajouter des portées commençant paraws.cognito
, y compris la portéeaws.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:
Le IAM rôle revendique cognito:roles
et cognito:preferred_role
est lié à des groupes de groupes d'utilisateurs par défaut. Pour supprimer ces allégations, supprimez cognito:groups
dans l'claimsToSuppress
objet.
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 Comprendre le jeton d'identité (ID).
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 IAM rôle que votre utilisateur demande à un pool 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 autorisées par le jeton Amazon Cognito et celles de tiers. API APIs 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 Comprendre le 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 des portées OAuth 2.0 dans la
scope
réclamation. Par exemple, vous pouvez ajouter des étendues à un jeton d'accès issu de l'authentification des API groupes d'utilisateurs Amazon Cognito, qui attribue uniquement l'étendue.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.
Ressources supplémentaires
Rubriques
- Sources du déclencheur Lambda avant la génération de jeton
- Paramètres du déclencheur Lambda avant la génération de jeton
- 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
- Exemple de version 2 d'un événement antérieur à la génération de jetons : ajout de revendications contenant des objets complexes
- 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
- Exemple de version 1 d’un événement avant la génération du jeton : modification de l’appartenance de l’utilisateur au groupe
Sources du déclencheur Lambda avant la génération de jeton
triggerSource valeur | É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.
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 |
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 IAM rôles 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 IAM rôle du groupe ayant la priorité la plus élevée dans l' |
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 du |
1 |
portées |
Les champs d'application 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 |
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 Dans les événements de la version 2, cet élément apparaît à la fois sous |
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 |
1 |
groupOverrideDetails |
Objet en sortie qui contient la configuration de groupe actuelle. L’objet inclut Votre fonction remplace l’objet Les jetons d’identification et d’accès Amazon Cognito contiennent tous les deux les demandes |
1 |
scopesToAdd |
Liste des étendues OAuth 2.0 que vous souhaitez ajouter à la |
2 |
scopesToSuppress |
Liste des champs d'application OAuth 2.0 que vous souhaitez supprimer de la |
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.
-
Définit leur valeur
family_name
commeDoe
dans le jeton d’identification. -
Évite que les demandes
email
etphone_number
n’apparaissent dans le jeton d’identification. -
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"
. -
Définit leur demande de jeton d’identification
cognito:preferred_role
surarn:aws:iam::123456789012:role/sns_caller
. -
Ajoute les portées
openid
,email
etsolar-system-data/asteroids.add
au jeton d’accès. -
Supprime les portées
phone_number
etaws.cognito.signin.user.admin
du jeton d’accès. La suppression dephone_number
empêche la récupération du numéro de téléphone de l’utilisateur à partir deuserInfo
. La suppression deaws.cognito.signin.user.admin
empêche API l'utilisateur de demander à lire et à modifier son propre profil auprès des groupes d'utilisateurs Amazon Cognito. APINote
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 incluentopenid
et au moins une autre portée standard. Pour de plus amples informations, veuillez consulter À propos des portées. -
Définit leur demande de jeton d’identification et d’accès
cognito:groups
sur"new-group-A","new-group-B","new-group-C"
.
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 :
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.
-
Ajoute des allégations de nombre, de chaîne, de booléen et de JSON type 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.
-
Ajoute des revendications de type nombre, chaîne, booléen et JSON type au jeton d'accès.
-
Ajoute trois étendues au jeton d'accès.
-
Supprime les
sub
demandesemail
et contenues dans les jetons d'identification et d'accès. -
Supprime l'
aws.cognito.signin.user.admin
étendue du jeton d'accès.
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 :
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.
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.
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.
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 :