Importation d'utilisateurs dans des groupes d'utilisateurs avec un déclencheur Lambda de migration d'utilisateur - Amazon Cognito

Importation d'utilisateurs dans des groupes d'utilisateurs avec un déclencheur Lambda de migration d'utilisateur

Cette approche vous permet de migrer en toute transparence des utilisateurs de votre annuaire utilisateur existant vers des groupes d'utilisateurs quand ces utilisateurs se connectent pour la première fois avec votre application ou demandent la réinitialisation de leur mot de passe. Ajoutez une fonction Déclencheur Lambda de migration d'utilisateur dans votre groupe d'utilisateurs pour qu'elle reçoive des métadonnées sur les utilisateurs qui tentent de se connecter et renvoie les informations de profil utilisateur à partir d'une source d'identité externe. Pour obtenir plus d'informations et un exemple de code pour ce déclencheur Lambda, y compris les paramètres de demande et de réponse, consultez Paramètres du déclencheur Lambda Migration d'utilisateur.

Avant de commencer à migrer des utilisateurs, créez une fonction Lambda de migration d'utilisateur dans votre Compte AWS et définissez cette fonction Lambda comme déclencheur de migration d'utilisateur dans votre groupe d'utilisateurs . Ajoutez une politique d'autorisation à votre fonction Lambda pour autoriser uniquement le principal du compte de service Amazon Cognito,cognito-idp.amazonaws.com, à appeler la fonction Lambda, et cela uniquement dans le contexte de votre propre groupe d'utilisateurs. Pour plus d'informations, consultez Utilisation de stratégies basées sur les ressources pour AWS Lambda (stratégies de fonction Lambda).

Processus de connexion

  1. L'utilisateur ouvre votre application et se connecte avec l'API des groupes d'utilisateurs Amazon Cognito ou via l'interface utilisateur hébergée d'Amazon Cognito. Pour plus d'informations sur la façon de faciliter la connexion avec les API Amazon Cognito, consultez Intégration d'Amazon Cognito avec des applications web et mobiles.

  2. Votre application envoie le nom d'utilisateur et le mot de passe à Amazon Cognito. Si votre application dispose d'une interface utilisateur de connexion personnalisée que vous avez créée avec un kit AWS SDK, l'application doit utiliser InitiateAuth ou AdminInitiateAuth avec le flux USER_PASSWORD_AUTH ou ADMIN_USER_PASSWORD_AUTH. Lorsque votre application utilise l'un de ces flux, le kit SDK envoie le mot de passe au serveur.

    Note

    Avant d'ajouter un déclencheur de migration d'utilisateur, activez le flux USER_PASSWORD_AUTH ou ADMIN_USER_PASSWORD_AUTHdans les paramètres de votre client d'application. Vous devez utiliser ces flux à la place du flux USER_SRP_AUTH par défaut. Amazon Cognito doit envoyer un mot de passe à votre fonction Lambda afin qu'elle puisse vérifier l'authentification de votre utilisateur dans l'autre annuaire. Le protocole SRP occulte le mot de passe de votre utilisateur de votre fonction Lambda.

  3. Amazon Cognito vérifie si le nom d'utilisateur soumis correspond à un nom d'utilisateur ou à un alias dans le groupe d'utilisateurs. Vous pouvez définir l'adresse e-mail, le numéro de téléphone ou le nom d'utilisateur préféré de l'utilisateur comme alias dans votre groupe d'utilisateurs. Si l'utilisateur n'existe pas, Amazon Cognito envoie des paramètres, y compris le nom d'utilisateur et le mot de passe, à votre fonction Déclencheur Lambda de migration d'utilisateur.

  4. Votre fonction Déclencheur Lambda de migration d'utilisateur vérifie ou authentifie l'utilisateur avec votre annuaire utilisateur existant ou votre base de données utilisateur existante. La fonction renvoie les attributs utilisateur qu'Amazon Cognito stocke dans le profil de l'utilisateur dans le groupe d'utilisateurs. Vous pouvez renvoyer un paramètre username seulement si le nom d'utilisateur soumis correspond à un attribut d'alias. Si vous souhaitez que les utilisateurs continuent d'utiliser leurs mots de passe existants, votre fonction définit l'attribut finalUserStatus sur CONFIRMED dans la réponse Lambda. Votre application doit renvoyer tous les paramètres "response" présentés dans Paramètres du déclencheur Lambda Migration d'utilisateur.

    Important

    Ne consignez pas l'objet d'événement de demande entier dans votre code Lambda de migration d'utilisateur. Cet objet d'événement de demande inclut le mot de passe de l'utilisateur. Si vous ne nettoyez pas les journaux, les mots de passe apparaissent dans CloudWatch Logs.

  5. Amazon Cognito crée le profil utilisateur dans votre groupe d'utilisateurs et renvoie les jetons à votre client d'application.

  6. Votre application récupère les jetons, accepte l'authentification utilisateur et passe au contenu demandé.

Après avoir migré vos utilisateurs, utilisez USER_SRP_AUTH pour la connexion. Le protocole SRP (Secure Remote Password) n'envoie pas le mot de passe sur le réseau et présente des avantages de sécurité par rapport au flux USER_PASSWORD_AUTH que vous utilisez durant la migration.

En cas d'erreurs pendant la migration, y compris des problèmes liés à l'appareil client ou au réseau, votre application reçoit des réponses d'erreur de l'API des groupes d'utilisateurs Amazon Cognito. Dans ce cas, Amazon Cognito peut créer ou non le compte d'utilisateur dans votre groupe d'utilisateurs. L'utilisateur doit ensuite tenter de se connecter à nouveau. En cas d'échec répété de la connexion, essayez de réinitialiser le mot de passe de l'utilisateur avec le flux de mot de passe oublié dans votre application.

Le flux de mot de passe oublié appelle également votre fonction Déclencheur Lambda de migration d'utilisateur avec une source d'événement UserMigration_ForgotPassword. Comme l'utilisateur ne soumet pas de mot de passe lorsqu'il demande une réinitialisation de mot de passe, Amazon Cognito n'inclut pas de mot de passe dans l'événement envoyé à votre fonction Lambda. Votre fonction peut uniquement rechercher l'utilisateur dans votre annuaire utilisateur existant et renvoyer les attributs à ajouter au profil utilisateur dans votre groupe d'utilisateurs. Amazon Cognito reçoit la réponse de votre fonction et envoie à l'utilisateur un code de réinitialisation de mot de passe par e-mail ou SMS. Quand l'utilisateur valide ce code, il définit un nouveau mot de passe dans votre application. Si votre application possède une interface utilisateur personnalisée, créez des pages qui prennent en charge le flux de mot de passe oublié. L'interface utilisateur hébergée d'Amazon Cognito a des pages intégrées pour le flux de mot de passe oublié.