Utilisation d'appareils utilisateur dans votre groupe d'utilisateurs - 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.

Utilisation d'appareils utilisateur dans votre groupe d'utilisateurs

Lorsque vous connectez les utilisateurs du groupe d'utilisateurs local à l'aide de l'API des groupes d'utilisateurs Amazon Cognito, vous pouvez associer les journaux d'activité de vos utilisateurs à partir des fonctionnalités de sécurité avancée à chacun de leurs appareils et, éventuellement, autoriser vos utilisateurs à passer l'authentification multifactorielle (MFA) à condition qu'ils utilisent un appareil approuvé. Amazon Cognito inclut une clé d'appareil dans la réponse à toute connexion qui ne comporte pas déjà d'informations d'appareil. La clé d'appareil est au format Region_UUID. Avec une clé d'appareil, une bibliothèque de mots de passe distants sécurisés (SRP, Secure Remote Password) et un pool d'utilisateurs qui permet l'authentification d'appareil, vous pouvez inviter les utilisateurs de votre application à faire confiance à l'appareil actuel et à ne plus leur demander de code MFA lors de la connexion.

Configuration des appareils mémorisés

Avec les groupes d'utilisateurs Amazon Cognito, vous pouvez associer les appareils de chacun de vos utilisateurs à un identifiant d'appareil unique : la clé d'appareil. Lorsque vous présentez la clé d'appareil et que vous procédez une authentification d'appareil au moment de la connexion, vous pouvez profiter des avantages de deux fonctionnalités.

  1. Avec les fonctionnalités de sécurité avancée, vous pouvez surveiller l'activité des utilisateurs sur des appareils spécifiques à des fins de sécurité et d'analyse. Lorsque les utilisateurs se connectent, votre application a la possibilité d'authentifier chaque utilisateur et son appareil, en ajoutant les informations d'appareil à leurs journaux d'activité.

  2. La mémorisation des appareils prend également en charge un flux d'authentification d'appareil approuvé, qui permet à vos utilisateurs de se connecter sans authentification MFA sur une période adaptée aux exigences de sécurité de votre application. Lorsque vous voulez réinviter utilisateur à soumettre un code MFA, vous pouvez modifier l'état mémorisé de son appareil.

    Les appareils mémorisés peuvent passer outre l'authentification MFA uniquement dans les groupes d'utilisateurs où l'authentification MFA est active.

Lorsque votre utilisateur se connecte avec un appareil mémorisé, vous devez procéder à une authentification d'appareil supplémentaire durant son flux d'authentification. Pour de plus amples informations, veuillez consulter Connexion avec un appareil.

Configurez votre groupe d'utilisateurs de sorte qu'il mémorise les appareils dans l'onglet Expérience de connexion de votre groupe d'utilisateurs, sous Suivi de l'appareil. Lorsque vous configurez la fonctionnalité de mémorisation des appareils via la console Amazon Cognito, vous disposez de trois options : Toujours, Acceptation de l'utilisateur et Non.

Ne pas mémoriser

Votre groupe d'utilisateurs n'invite pas les utilisateurs à mémoriser les appareils lorsqu'ils se connectent.

Toujours mémoriser

Lorsque votre application confirme l'appareil d'un utilisateur, votre groupe d'utilisateurs mémorise toujours l'appareil et ne renvoie pas de questions de sécurité MFA lors des futures connexions réussies de l'appareil.

Consentement de l'utilisateur

Lorsque votre application confirme l'appareil d'un utilisateur, votre groupe d'utilisateurs ne supprime pas automatiquement les questions de sécurité MFA. Vous devez inviter votre utilisateur à se décider quant à la mémorisation de l'appareil.

Lorsque vous sélectionnez Toujours mémoriser ou Consentement de l'utilisateur, Amazon Cognito génère une clé et un secret d'identification d'appareil chaque fois qu'un utilisateur se connecte depuis un appareil non identifié. La clé d'appareil est l'identifiant initial que votre application envoie à votre groupe d'utilisateurs lorsque votre utilisateur procède à l'authentification de l'appareil.

À chaque appareil utilisateur confirmé, que sa mémorisation soit automatique ou soumise au consentement de l'utilisateur, vous pouvez utiliser la clé et le secret d'identification d'appareil pour authentifier un appareil à chaque connexion utilisateur.

Vous pouvez également configurer les paramètres des appareils mémorisés pour votre groupe d'utilisateurs dans une demande d'API CreateUserPool ou UpdateUserPool. Pour en savoir plus, consultez la propriété DeviceConfiguration.

L'API des groupes d'utilisateurs Amazon Cognito propose d'autres opérations pour les appareils mémorisés.

  1. ListDevices et AdminListDevices renvoient la liste des clés d'appareils et leurs métadonnées pour un utilisateur.

  2. GetDevice et AdminGetDevice renvoie la clé et les métadonnées d'un seul appareil.

  3. UpdateDeviceStatus et AdminUpdateDeviceStatus définissent l'appareil d'un utilisateur comme étant mémorisé ou non mémorisé.

  4. ForgetDevice et AdminForgetDevice suppriment l'appareil confirmé d'un utilisateur de son profil.

Les opérations d'API dont le nom commence par Admin sont destinées à être utilisées dans des applications côté serveur et doivent être autorisées avec des informations d'identification IAM. Pour de plus amples informations, veuillez consulter Utilisation de l’API des groupes d’utilisateurs et des points de terminaison d’un groupe d’utilisateurs Amazon Cognito.

Obtention d'une clé d'appareil

Chaque fois que votre utilisateur se connecte avec l'API des groupes d'utilisateurs et n'inclut pas de clé d'appareil dans les paramètres d'authentification en tant que DEVICE_KEY, Amazon Cognito renvoie une nouvelle clé d'appareil dans la réponse. Dans votre application publique côté client, placez la clé d'appareil dans le stockage de l'application afin de pouvoir l'inclure dans les futures demandes. Dans votre application confidentielle côté serveur, définissez un cookie de navigateur ou un autre jeton côté client avec la clé d'appareil de votre utilisateur.

Pour que votre utilisateur puisse se connecter avec son appareil approuvé, votre application doit d'abord confirmer la clé de l'appareil et fournir des informations supplémentaires. Générez une demande ConfirmDevice à destination d'Amazon Cognito qui confirme l'appareil de votre utilisateur avec la clé de l'appareil, un nom convivial, un vérificateur de mot de passe et une valeur salt. Si vous avez configuré votre groupe d'utilisateurs pour l'authentification d'appareil par consentement, Amazon Cognito répond à votre demande ConfirmDevice par un message qui invite votre utilisateur à décider si l'appareil actuel doit être mémorisé. Répondez par la sélection de votre utilisateur dans une demande UpdateDeviceStatus.

Lorsque vous confirmez l'appareil de votre utilisateur mais que vous ne le définissez pas comme étant mémorisé, Amazon Cognito enregistre l'association mais procède à une connexion non basée sur l'appareil lorsque vous fournissez la clé de l'appareil. Les appareils peuvent générer des journaux utiles pour la sécurité des utilisateurs et la résolution des problèmes. Un appareil confirmé mais non mémorisé ne bénéficie pas de la fonctionnalité de connexion, mais de la fonctionnalité de journaux de surveillance de la sécurité. Lorsque vous activez les fonctionnalités de sécurité avancée pour votre client d'application et que vous encodez l'empreinte d'un appareil dans votre demande, Amazon Cognito associe les événements utilisateur à l'appareil confirmé.

Pour obtenir une nouvelle clé d'appareil
  1. Démarrez la session de connexion de votre utilisateur avec une demande d'API InitiateAuth.

  2. Répondez à toutes les questions de sécurité d'authentification avec RespondToAuthChallenge jusqu'à ce que vous receviez des jetons web JSON (JWT) qui marquent la fin de la session de connexion de votre utilisateur.

  3. Dans votre application, enregistrez les valeurs renvoyées par Amazon Cognito dans NewDeviceMetadata dans sa réponse RespondToAuthChallenge ou InitiateAuth : DeviceGroupKey et DeviceKey.

  4. Générez un nouveau secret SRP pour votre utilisateur : une valeur salt et un vérificateur de mot de passe. Cette fonction est disponible dans les kits SDK qui fournissent des bibliothèques SRP.

  5. Invitez votre utilisateur à saisir un nom d'appareil, ou générez-en un à partir des caractéristiques de l'appareil de votre utilisateur.

  6. Fournissez le jeton d'accès, la clé de l'appareil, le nom de l'appareil et le secret SRP de votre utilisateur dans une demande d'API ConfirmDevice. Si votre groupe d'utilisateurs est configuré pour Toujours mémoriser les appareils, l'enregistrement de votre utilisateur est terminé.

  7. Si Amazon Cognito a répondu à ConfirmDevice par "UserConfirmationNecessary": true, invitez votre utilisateur à décider si l'appareil doit être mémorisé. S'il affirme vouloir mémoriser l'appareil, générez une demande d'API UpdateDeviceStatus avec le jeton d'accès de votre utilisateur, la clé de l'appareil et "DeviceRememberedStatus": "remembered".

  8. Si vous avez donné instruction à Amazon Cognito de mémoriser l'appareil, à la prochaine connexion, une question de sécurité DEVICE_SRP_AUTH est présentée à l'utilisateur au lieu d'une question de sécurité MFA.

Connexion avec un appareil

Une fois que vous avez configuré la mémorisation de l'appareil d'un utilisateur, Amazon Cognito ne lui demande plus de soumettre de code MFA lorsqu'il se connecte avec la même clé d'appareil. L'authentification d'appareil remplace uniquement la question de sécurité d'authentification MFA par une question de sécurité d'authentification d'appareil. Vous ne pouvez pas connecter les utilisateurs uniquement avec l'authentification d'appareil. Votre utilisateur doit d'abord s'authentifier avec son mot de passe ou une question de sécurité personnalisée. Voici le processus d'authentification pour un utilisateur doté d'un appareil mémorisé.

Pour effectuer une authentification d'appareil dans un flux qui utilise des déclencheurs Lambda de question de sécurité d'authentification personnalisée, transmettez un paramètre DEVICE_KEY dans votre demande d'API InitiateAuth. Une fois que votre utilisateur a bien répondu à toutes les questions de sécurité et que CUSTOM_CHALLENGE renvoie un valeur true pour issueTokens, Amazon Cognito renvoie une dernière question de sécurité DEVICE_SRP_AUTH.

Pour vous connecter avec un appareil
  1. Récupérez la clé de l'appareil de votre utilisateur depuis le stockage client.

  2. Démarrez la session de connexion de votre utilisateur avec une demande d'API InitiateAuth. Attribuez à AuthFlow la valeur USER_SRP_AUTH, REFRESH_TOKEN_AUTH, USER_PASSWORD_AUTH ou CUSTOM_AUTH. Dans AuthParameters, ajoutez la clé d'appareil de votre utilisateur au paramètre DEVICE_KEY et incluez les autres paramètres obligatoires au flux de connexion que vous avez sélectionné.

    1. Vous pouvez également transmettre DEVICE_KEY dans les paramètres d'une réponse PASSWORD_VERIFIER à une question de sécurité d'authentification.

  3. Répondez aux questions de sécurité jusqu'à ce que vous receviez une question de sécurité DEVICE_SRP_AUTH dans la réponse.

  4. Dans une demande d'API RespondToAuthChallenge, envoyez un ChallengeName avec la valeur DEVICE_SRP_AUTH et des paramètres pour USERNAME, DEVICE_KEY et SRP_A.

  5. Amazon Cognito répond par une question de sécurité DEVICE_PASSWORD_VERIFIER. La réponse à cette question de sécurité comporte des valeurs pour SECRET_BLOCK et SRP_B.

  6. Avec votre bibliothèque SRP, générez et soumettez des paramètres PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK, TIMESTAMP, USERNAME et DEVICE_KEY. Soumettez-les dans une demande RespondToAuthChallenge supplémentaire.

  7. Complétez les autres questions de sécurité jusqu'à ce que vous receviez les jetons JWT de l'utilisateur.

Le pseudocode suivant montre comment calculer les valeurs de votre réponse à la question de sécurité DEVICE_PASSWORD_VERIFIER.

PASSWORD_CLAIM_SECRET_BLOCK = SECRET_BLOCK TIMESTAMP = Tue Sep 25 00:09:40 UTC 2018 PASSWORD_CLAIM_SIGNATURE = Base64(SHA256_HMAC(K_USER, DeviceGroupKey + DeviceKey + PASSWORD_CLAIM_SECRET_BLOCK + TIMESTAMP)) K_USER = SHA256_HASH(S_USER) S_USER = (SRP_B - k * gx)(a + ux) x = SHA256_HASH(salt + FULL_PASSWORD) u = SHA256_HASH(SRP_A + SRP_B) k = SHA256_HASH(N + g)

Affichage, mise à jour et oubli des appareils

Vous pouvez implémenter les fonctionnalités suivantes dans votre application avec l'API Amazon Cognito.

  1. Afficher les informations sur l'appareil actuel d'un utilisateur.

  2. Afficher la liste de tous les appareils de votre utilisateur.

  3. Oublier un appareil.

  4. Mettre à jour l'état mémorisé d'un appareil.

Les jetons d'accès qui autorisent les demandes d'API incluses dans les descriptions suivantes doivent inclure la portée aws.cognito.signin.user.admin. Amazon Cognito ajoute une demande pour cette portée à tous les jetons d'accès que vous générez avec l'API des groupes d'utilisateurs Amazon Cognito. Les IdP tiers doivent gérer séparément les appareils et l'authentification MFA pour leurs utilisateurs qui s'authentifient auprès d'Amazon Cognito. Dans l'interface utilisateur hébergée, vous pouvez demander la portée aws.cognito.signin.user.admin, mais l'interface utilisateur hébergée ajoute automatiquement les informations d'appareils aux journaux utilisateur de sécurité avancée et ne propose pas de mémoriser les appareils.

Affichage les informations sur un appareil

Vous pouvez demander les informations sur l'appareil d'un utilisateur pour déterminer s'il est toujours utilisé. Par exemple, vous pouvez souhaiter désactiver les appareils mémorisés qui n'ont pas été connectés depuis plus de 90 jours.

  • Pour afficher les informations de l'appareil de votre utilisateur dans une application cliente publique, soumettez la clé d'accès et la clé de l'appareil de votre utilisateur dans une demande d'API GetDevice.

  • Pour afficher les informations de l'appareil de votre utilisateur dans une application cliente confidentielle, signez une demande d'API AdminGetDevice avec des informations d'identification AWS et soumettez le nom d'utilisateur, la clé de l'appareil et le groupe d'utilisateurs de votre utilisateur.

Affichage de la liste de tous les appareils de votre utilisateur

Vous pouvez afficher la liste de tous les appareils de votre utilisateur ainsi que leurs propriétés. Par exemple, vous pouvez souhaiter vérifier que l'appareil actuel correspond à un appareil mémorisé.

  • Dans une application cliente publique, soumettez le jeton d'accès de votre utilisateur dans une demande d'API ListDevices.

  • Dans une application cliente confidentielle, signez une demande d'API AdminGetDevice avec des informations d'identification AWS et soumettez le nom d'utilisateur et le groupe d'utilisateurs de votre utilisateur.

Oubli d'un appareil

Vous pouvez supprimer la clé de l'appareil d'un utilisateur. Vous pouvez souhaiter le faire si vous constatez que votre utilisateur n'utilise plus un appareil ou si vous détectez une activité inhabituelle et souhaitez inviter un utilisateur à procéder à une nouvelle authentification MFA. Pour réenregistrer l'appareil ultérieurement, vous devez générer et stocker une nouvelle clé d'appareil.

  • Dans une application cliente publique, soumettez la clé de l'appareil et le jeton d'accès de votre utilisateur dans la demande d'API ForgetDevice.

  • Dans une application cliente confidentielle, soumettez la clé de l'appareil et le jeton d'accès de votre utilisateur dans la demande d'API AdminForgetDevice.