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 des utilisateurs du groupe d'utilisateurs local aux groupes d'utilisateurs Amazon CognitoAPI, vous pouvez associer les journaux d'activité de vos utilisateurs issus des fonctionnalités de sécurité avancées à chacun de leurs appareils et, éventuellement, autoriser vos utilisateurs à ignorer l'authentification multifactorielle (MFA) s'ils utilisent un appareil fiable. 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) et un pool d'utilisateurs permettant l'authentification des appareils, vous pouvez inviter les utilisateurs de votre application à faire confiance à l'appareil actuel et à ne plus leur demander de MFA code 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 fiable, dans lequel vos utilisateurs peuvent choisir de se connecter sans MFA attendre plus tard, en fonction des exigences de sécurité de votre application ou des préférences de vos utilisateurs. Par exemple, votre application peut inviter vos utilisateurs à faire confiance à un appareil pendant 30, 60 ou 90 jours. Vous pouvez enregistrer cette date dans un attribut personnalisé et, à cette date, modifier l'état mémorisé de leur appareil. Vous devez ensuite demander à nouveau à votre utilisateur de soumettre un MFA code et de configurer l'appareil pour qu'il soit à nouveau mémorisé après une authentification réussie.

    Les appareils mémorisés ne peuvent être remplacés MFA que dans les groupes d'utilisateurs MFA actifs.

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 se souvient toujours de l'appareil et ne se retrouvera pas face à des MFA problèmes lors de futures connexions réussies à l'appareil.

Consentement de l'utilisateur

Lorsque votre application confirme l'appareil d'un utilisateur, votre groupe d'utilisateurs ne supprime pas automatiquement MFA les défis. 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 CreateUserPooldemande ou. UpdateUserPoolAPI Pour plus d'informations, consultez la DeviceConfigurationpropriété.

Les groupes d'utilisateurs Amazon Cognito proposent des API opérations supplémentaires pour les appareils mémorisés.

  1. ListDeviceset AdminListDevicesrenvoie une liste des clés de l'appareil et de leurs métadonnées pour un utilisateur.

  2. GetDeviceet AdminGetDevicerenvoyez la clé de l'appareil et les métadonnées pour un seul appareil.

  3. UpdateDeviceStatuset AdminUpdateDeviceStatusdéfinissez l'appareil d'un utilisateur comme mémorisé ou non mémorisé.

  4. ForgetDeviceet AdminForgetDevicesupprimez l'appareil confirmé d'un utilisateur de son profil.

APIles opérations dont le nom commence par Admin sont destinées à être utilisées dans les applications côté serveur et doivent être autorisées à l'aide IAM d'informations d'identification. Pour de plus amples informations, veuillez consulter Utilisation des groupes d'utilisateurs API et du serveur d'autorisation.

Obtention d'une clé d'appareil

Chaque fois que votre utilisateur se connecte aux groupes d'utilisateurs sans API inclure de clé d'appareil dans les paramètres d'authentificationDEVICE_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. Envoyez une ConfirmDevicedemande à Amazon Cognito pour confirmer l'appareil de votre utilisateur à l'aide de la clé de l'appareil, d'un nom convivial, d'un vérificateur de mot de passe et d'un sel. 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 en indiquant la sélection de votre utilisateur dans une UpdateDeviceStatusdemande.

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 par une InitiateAuthAPIdemande.

  2. Répondez à tous les défis d'authentification RespondToAuthChallengejusqu'à ce que vous receviez des jetons JSON Web (JWTs) 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 SRP secret pour votre utilisateur : un sel et un vérificateur de mot de passe. Cette fonction est disponible dans les SRP bibliothèques SDKs qui fournissent des informations.

  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 SRP secret de votre utilisateur dans une ConfirmDeviceAPIdemande. 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'ils affirment vouloir se souvenir de l'appareil, générez une UpdateDeviceStatusAPIdemande avec le jeton d'accès, la clé de l'appareil et"DeviceRememberedStatus": "remembered".

  8. Si vous avez demandé à Amazon Cognito de se souvenir de l'appareil, la prochaine fois qu'ils se connecteront, ils seront confrontés à un MFA défi au lieu d'un DEVICE_SRP_AUTH défi.

Connexion avec un appareil

Une fois que vous avez configuré l'appareil d'un utilisateur pour qu'il soit mémorisé, Amazon Cognito n'exige plus qu'il soumette de MFA code lorsqu'il se connecte avec la même clé d'appareil. L'authentification des appareils remplace uniquement le défi MFA -authentication par un défi d'authentification des appareils. 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 l'authentification des appareils dans un flux utilisant des déclencheurs Lambda du défi d'authentification personnalisé, transmettez un DEVICE_KEY paramètre dans votre InitiateAuthAPIdemande. 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 par une InitiateAuthAPIdemande. 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 RespondToAuthChallengeAPIdemande, envoyez un ChallengeName de DEVICE_SRP_AUTH et des paramètres pour USERNAMEDEVICE_KEY, etSRP_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 SRP bibliothèque, générez et soumettez des PASSWORD_CLAIM_SIGNATUREPASSWORD_CLAIM_SECRET_BLOCK,TIMESTAMP,USERNAME, et des DEVICE_KEY paramètres. Soumettez-les dans une demande RespondToAuthChallenge supplémentaire.

  7. Terminez des défis supplémentaires jusqu'à ce que vous receviez celui de l'utilisateurJWTs.

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 Amazon CognitoAPI.

  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 API demandes décrites dans les descriptions suivantes doivent inclure le aws.cognito.signin.user.admin champ d'application. Amazon Cognito ajoute une réclamation pour cette étendue à tous les jetons d'accès que vous générez avec les groupes d'utilisateurs Amazon Cognito. API IdPs Les tiers doivent gérer séparément les appareils et MFA les 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 GetDeviceAPIdemande.

  • Pour afficher les informations de l'appareil de votre utilisateur dans une application client confidentielle, signez une AdminGetDeviceAPIdemande avec des informations d' AWS identification 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 ListDevicesAPIdemande.

  • Dans une application client confidentielle, signez une AdminListDevicesAPIdemande avec des informations d' AWS identification 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 le faire lorsque vous constatez que votre utilisateur n'utilise plus d'appareil, ou lorsque vous détectez une activité inhabituelle et que vous souhaitez inviter un utilisateur à terminer à MFA nouveau. 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é d'appareil et le jeton d'accès de votre utilisateur ForgetDeviceAPIsur demande.

  • Dans une application client confidentielle, soumettez la clé d'appareil et le jeton d'accès de votre utilisateur sur demande. AdminForgetDeviceAPI