Résoudre les problèmes liés à Amazon Cognito - 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.

Résoudre les problèmes liés à Amazon Cognito

Ce chapitre propose des solutions aux problèmes courants que vous pouvez rencontrer lors de l'utilisation d'Amazon Cognito. Les implémentations d'Amazon Cognito peuvent être confrontées à divers défis en termes de flux d'authentification, de configuration de groupes d'utilisateurs et de configurations de fédération d'identités. Que vous développiez une nouvelle application ou que vous mainteniez une application existante, ce guide de dépannage vous aide à identifier et à résoudre rapidement les problèmes courants.

Erreurs de configuration de domaine personnalisé

Lorsque vous configurez des noms de domaine personnalisés dans Amazon Cognito, vous pouvez recevoir des messages d'erreur. Les erreurs courantes incluent les problèmes de validation, les problèmes de certificat ou les conflits de domaine.

Custom domain is not a valid subdomain

Cette erreur indique un problème de résolution DNS pour le domaine parent. Amazon Cognito ne prend pas en charge les domaines de premier niveau et exige que le domaine parent dispose d'un enregistrement DNS A à des fins de validation.

Problème

Cette erreur indique un problème de résolution DNS pour le domaine parent. Amazon Cognito ne prend pas en charge les domaines de premier niveau et exige que le domaine parent dispose d'un enregistrement DNS A à des fins de validation.

Solution
  • Créer un enregistrement A pour le domaine parent : vous devez créer un enregistrement A dans votre configuration DNS pour le domaine parent de votre domaine personnalisé.

    • Exemple : Si votre domaine personnalisé estauth.xyz.yourdomain.com, le domaine parent l'estxyz.yourdomain.com. Si vous souhaitez le configurer xyz.yourdomain.com en tant que domaine personnalisé, le parent estyourdomain.com.

    • Le domaine parent doit être résolu vers une adresse IP valide. S'il ne pointe pas vers une adresse IP réelle, vous pouvez utiliser une adresse IP fictive, telle que8.8.8.8.

  • Vérifier la propagation du DNS (facultatif mais recommandé) : pour vous assurer que votre fournisseur DNS a propagé la modification, vous pouvez exécuter une dig commande.

    • Si vous l'utilisez auth.xyz.yourdomain.com comme domaine personnalisé : dig A xyz.yourdomain.com +short

    • Si vous l'utilisez xyz.yourdomain.com comme domaine personnalisé : dig A yourdomain.com +short

    • La commande doit renvoyer l'adresse IP que vous avez configurée. Si ce n'est pas le cas, attendez que la modification soit complètement propagée.

  • Supprimer l'enregistrement A du domaine parent : après avoir créé le domaine personnalisé dans Amazon Cognito, vous pouvez supprimer l'enregistrement A que vous avez créé pour le domaine parent s'il s'agit d'un enregistrement fictif.

Pour plus d'informations, consultez la section Utilisation de votre propre domaine pour l'interface utilisateur hébergée.

Domain already associated with another user pool

Les noms de domaine personnalisés doivent être uniques dans toutes Comptes AWS les régions.

Problème

Les noms de domaine personnalisés doivent être uniques dans toutes Comptes AWS les régions.

Solution
  • Pour utiliser le nom de domaine d'un nouveau groupe d'utilisateurs, vous devez supprimer le domaine personnalisé du groupe d'utilisateurs auquel il est actuellement associé.

  • Patientez après la suppression : la suppression complète du domaine personnalisé du premier groupe d'utilisateurs prend du temps. La création d'un nouveau domaine personnalisé portant le même nom immédiatement après sa suppression peut toujours entraîner cette erreur. Patientez quelques minutes avant de réessayer.

One or more of the CNAMEs that you provided are already associated with a different resource

Lorsque vous créez un domaine personnalisé, Amazon Cognito crée une distribution Amazon AWS CloudFront gérée. Un nom de domaine ne peut être utilisé qu'avec une seule CloudFront distribution Amazon. Cette erreur se produit si le nom de domaine est déjà utilisé comme domaine alternatif pour une autre CloudFront distribution Amazon.

Problème

Lorsque vous créez un domaine personnalisé, Amazon Cognito crée une distribution Amazon AWS CloudFront gérée. Un nom de domaine ne peut être utilisé qu'avec une seule CloudFront distribution Amazon. Cette erreur se produit si le nom de domaine est déjà utilisé comme domaine alternatif pour une autre CloudFront distribution Amazon.

Solution
  • Option 1 : utilisez un autre nom de domaine pour votre domaine personnalisé Amazon Cognito.

  • Option 2 : Si vous utilisez le nom de domaine d'Amazon Cognito, ne l'utilisez pas avec une autre distribution Amazon CloudFront .

The specified SSL certificate doesn't exist

Amazon Cognito utilise Amazon CloudFront, qui exige que le certificat AWS Certificate Manager (ACM) se trouve en us-east-1 (Virginie du Nord) Région AWS, quelle que soit la région du groupe d'utilisateurs.

Problème

Amazon Cognito utilise Amazon CloudFront, qui exige que le certificat AWS Certificate Manager (ACM) se trouve en us-east-1 (Virginie du Nord) Région AWS, quelle que soit la région du groupe d'utilisateurs.

Solution
  • Vérifier la région du certificat : Vérifiez que le certificat ACM se trouve dans la us-east-1 région.

  • Vérifier la validité du certificat : assurez-vous que le certificat sélectionné n'est pas expiré.

  • Certificats importés : Si vous avez importé le certificat dans ACM, assurez-vous que :

    • Il a été délivré par une autorité de certification publique.

    • Elle inclut la chaîne de certificats appropriée.

  • AWS KMS Vérification des politiques : une deny déclaration explicite dans une stratégie AWS Key Management Service (AWS KMS) pour l'utilisateur ou le rôle IAM qui crée le domaine peut provoquer cette erreur. Plus précisément, vérifiez s'il y a des dénégations ou kms:DescribeKey des kms:CreateGrant kms:* actions explicites.

Invalid refresh tokenErreur

Problème

Vous recevez un Invalid refresh token message d'erreur lorsque vous essayez d'utiliser un jeton d'actualisation pour obtenir de nouveaux jetons d'accès et d'identification auprès de votre groupe d'utilisateurs Amazon Cognito à l'aide de l'opération InitiateAuth API AdminInitiateAuth or.

Solution

Mettez en œuvre les étapes de résolution des problèmes suivantes en fonction de la configuration de votre groupe d'utilisateurs et de l'utilisation de l'API :

  • Garantissez la cohérence de l'ID client de l'application : lorsque vous appelez l'InitiateAuthAPI AdminInitiateAuth or pour actualiser le jeton, vous devez utiliser exactement le même identifiant de client d'application que celui utilisé lors de l'authentification initiale qui a généré le jeton d'actualisation.

  • Confirmez l'appareil : si le suivi des appareils est activé sur votre groupe d'utilisateurs, mais que l'appareil de l'utilisateur n'a pas été confirmé, vous devez d'abord appeler l'ConfirmDeviceAPI. Une fois que l'utilisateur a confirmé son appareil, vous pouvez échanger le jeton d'actualisation.

  • Inclure la clé de l'appareil dans la demande d'actualisation : si le suivi des appareils est activé, incluez la clé de l'appareil unique sous forme de et AuthParameter lorsque vous utilisez le REFRESH_TOKEN_AUTH flux :

    { "AuthFlow": "REFRESH_TOKEN_AUTH", "AuthParameters": { "REFRESH_TOKEN": "example_refresh_token", "SECRET_HASH": "example_secret_hash", // Required if your app client uses a client secret "DEVICE_KEY": "example_device_key" } }
  • Utilisation USER_SRP_AUTH pour le suivi des appareils : si vous utilisez le suivi des appareils, le flux d'authentification initial doit êtreUSER_SRP_AUTH.

Pour de plus amples informations, veuillez consulter Utilisation d'appareils utilisateur dans votre groupe d'utilisateurs.

Erreurs de réponse SAML non valides dans la fédération

Les utilisateurs reçoivent diverses Invalid SAML response erreurs similaires lorsqu'ils tentent de se fédérer dans Amazon Cognito à l'aide de SAML 2.0. Ces erreurs peuvent survenir en raison de problèmes de mappage d'attributs, de problèmes de certificat ou d'incohérences de configuration.

Invalid user attributes: Required attribute

Problème

Il manque à un utilisateur une valeur pour un attribut requis dans votre groupe d'utilisateurs, ou l'IdP tente de supprimer ou de mettre à jour un attribut immuable.

Solution
  • Vérifiez les attributs requis définis dans la configuration de votre groupe d'utilisateurs.

  • À l'aide des outils de capture réseau de votre navigateur, récupérez la réponse SAML. Vous devrez peut-être effectuer un décodage d'URL et de base64. Vérifiez que l'attribut est présent dans l'assertion SAML.

  • Connectez-vous à votre fournisseur d'identité et vérifiez les attributs qu'il envoie à Amazon Cognito. Vérifiez que l'IdP est configuré pour envoyer l'attribut requis en utilisant le nom correct.

  • Pour les attributs immuables, exécutez la AWS CLI commande suivante pour les identifier : aws cognito-idp describe-user-pool --user-pool-id USER-POOL-ID --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'

  • Dans les mappages d'attributs SAML de votre IdP, supprimez tout mappage qui cible un attribut Amazon Cognito immuable. Vous pouvez également mettre à jour l'attribut de destination avec un autre attribut mutable.

Invalid SAML response received: SAML Response signature is invalid

Problème

Votre IdP a mis à jour son certificat de signature SAML, ce qui a entraîné une incompatibilité entre le certificat figurant dans la réponse SAML et le fichier de métadonnées stocké dans Amazon Cognito.

Solution
  1. Téléchargez le dernier fichier de métadonnées depuis votre IdP.

  2. Dans la console Amazon Cognito, accédez aux fournisseurs sociaux et externes de votre groupe d'utilisateurs, modifiez votre fournisseur SAML et remplacez le fichier de métadonnées existant par le fichier récemment téléchargé.

Audience restriction ou Application with identifier not found

Problème

Un ID d'entité incorrect est configuré dans votre IdP, ou l'assertion utilise le nom de ressource uniforme (URN) d'un autre groupe d'utilisateurs.

Solution
  1. Obtenez l'identifiant de votre groupe d'utilisateurs Amazon Cognito dans la section Vue d'ensemble de la console.

  2. Dans la console de gestion de votre IdP, mettez à jour l'ID d'entité dans l'application SAML pour votre groupe d'utilisateurs. Configurez l'ID d'entité pour qu'il corresponde au formaturn:amazon:cognito:sp:USER_POOL_ID. USER_POOL_IDRemplacez-le par l'ID du groupe d'utilisateurs de l'étape précédente.

An error was encountered with the requested page

Problème

L'URL d'Assertion Consumer Service (ACS) enregistrée auprès de votre IdP est mal configurée ou l'IdP n'envoie pas la réponse SAML à l'aide de la liaison POST requise.

Solution
  • Dans la console de gestion de votre IdP, mettez à jour l'application avec le format d'URL ACS correct, en vous assurant qu'elle utilise la HTTP POST liaison.

  • Format de domaine par défaut : https://cognito-idp.Region.amazonaws.com/your user pool ID/saml2/idpresponse

  • Format de domaine personnalisé : https://auth.example.com/saml2/idpresponse

Invalid relayState from identity provider

Problème

Le RelayState paramètre est manquant ou non valide, ou l'URL ne correspond pas entre l'IdP et Amazon Cognito.

Solution
  • Pour les flux initiés par le fournisseur de services (initiés par le SP) : lancez toujours l'authentification au point de /oauth2/authorize terminaison de votre groupe d'utilisateurs. Les assertions SAML qui ne renvoient pas RelayState les paramètres de la visite initiale de l'utilisateur sur Amazon Cognito ne sont pas des demandes valides initiées par le SP.

  • Pour les flux initiés par le fournisseur d'identité (initiés par l'IdP) : l'IdP doit inclure le RelayState paramètre avec l'assertion SAML envoyée au point de /saml2/idpresponse terminaison, en utilisant le format requis :. redirect_uri=REDIRECT_URI&state=STATE

Pour de plus amples informations, veuillez consulter Utilisation de fournisseurs d'identité SAML avec un groupe d'utilisateurs.

Les utilisateurs de connexion gérés ne peuvent pas sélectionner un facteur MFA

Problème

Les utilisateurs ne peuvent pas choisir leur méthode MFA préférée lorsqu'ils se connectent via une connexion gérée, ou ils ne sont pas invités à choisir la méthode MFA que vous attendez.

Solution

Amazon Cognito suit une logique spécifique pour déterminer les facteurs MFA disponibles pour les utilisateurs en fonction des paramètres du groupe d'utilisateurs, des attributs utilisateur et de la configuration de restauration du compte. Par exemple, les utilisateurs ne peuvent pas utiliser le MFA par e-mail si le courrier électronique est configuré comme principale méthode de récupération de compte.

Pour annuler la sélection du facteur MFA par défaut, vous pouvez implémenter l'une des approches suivantes :

  • Pour les applications publiques : à utiliser SetUserMFAPreferenceavec un jeton d'accès valide pour permettre aux utilisateurs de définir leurs propres préférences MFA

  • Pour les applications gérées par l'administrateur : à utiliser AdminSetUserMFAPreferenceavec les informations d' AWS identification pour configurer les préférences MFA de l'utilisateur

Les deux opérations vous permettent d'activer ou de désactiver les méthodes SMS, e-mail et MFA TOTP pour des utilisateurs individuels, et de définir une méthode comme méthode préférée.

Pour de plus amples informations, veuillez consulter Ajout de l’authentification MFA à un groupe d’utilisateurs.

Les utilisateurs sans mot de passe et avec clé d'accès ne peuvent pas utiliser le MFA

Problème

Les utilisateurs qui se connectent à l'aide de méthodes d'authentification sans mot de passe ou de clés d'accès ne peuvent pas ajouter ou utiliser l'authentification multifactorielle.

Solution

Il s'agit d'une limitation intentionnelle. Vous pouvez configurer votre groupe d'utilisateurs de manière à ce que les utilisateurs disposent de l'authentification MFA ou qu'ils se connectent sans mot de passe, mais pas les deux. La MFA n'est disponible que pour les flux d'authentification par mot de passe.

Pour plus d'informations, consultez Authentification avec des groupes d'utilisateurs.

Impossible de recevoir le code de réinitialisation du mot de passe par e-mail/SMS

Problème

Les utilisateurs ne peuvent pas recevoir de codes de vérification par e-mail ou SMS pendant le processus d'oubli du mot de passe.

Solution

Les codes de vérification peuvent ne pas être reçus pour diverses raisons. Suivez cette liste de contrôle pour résoudre le problème :

  • Vérifiez les dossiers de spam et de courrier indésirable de l'utilisateur.

  • Vérifiez que l'utilisateur existe dans le groupe d'utilisateurs.

  • Vérifiez que le statut de l'utilisateur ne l'est pasFORCE_CHANGE_PASSWORD. Dans ce cas, l'utilisateur a été créé par un administrateur et Amazon Cognito l'invitera à définir un mot de passe lorsqu'il se connectera avec son mot de passe temporaire.

  • Vérifiez que l'attribut e-mail ou numéro de téléphone de l'utilisateur a été vérifié.

  • Vérifiez la limite de dépenses de votre compte pour les SMS

  • Vérifiez votre quota d'envoi de messages Amazon Simple Email Service (Amazon SES).

  • Vérifiez si SMS et Amazon SES (si votre groupe d'utilisateurs est configuré pour envoyer des e-mails avec Amazon SES) ont été retirés du sandbox. S'ils n'ont pas été déplacés hors du bac à sable, les adresses e-mail ou les numéros de téléphone qui n'ont pas été vérifiés par Amazon SES ou ne AWS End User Messaging SMS pourront pas recevoir de codes de réinitialisation de mot de passe.

  • Si l'utilisateur possède un facteur MFA actif, vérifiez qu'il n'essaie pas de générer un message avec le même facteur. Par exemple, les utilisateurs dont l'authentification MFA par e-mail est active ne peuvent pas envoyer de codes de réinitialisation de mot de passe par e-mail.

Pour plus d’informations, consultez Paramètres d'e-mail pour les groupes d'utilisateurs Amazon Cognito et Paramètres des SMS pour les groupes d'utilisateurs Amazon Cognito.

Erreurs SECRET_HASH

Problème

Les demandes d'API d'authentification adressées aux clients de l'application avec des secrets clients renvoient des erreurs telles que An error occurred (NotAuthorizedException) when calling the ForgotPassword operation: Client 1example23456789 is configured with secret but SECRET_HASH was not received.

Solution

Votre application doit calculer le secret SECRET_HASH de l'utilisateur, du client de l'application et du client actuels. La méthode de calcul est la suivante :

Base64 ( HMAC_SHA256 ( "client secret", "Username" + "Client Id" ) )

Pour obtenir le secret du client, vous pouvez :

  1. Ouvrez la console Amazon Cognito et accédez à votre client d'application depuis le menu Clients de l'application. Dans la section Informations sur le client de l'application, recherchez le secret du client. Sélectionnez Afficher le secret du client pour faire apparaître le secret du client de votre application.

  2. Générez une DescribeUserPoolClientdemande. Le secret du client est inclus dans la réponse.

Pour de plus amples informations, veuillez consulter Calcul des valeurs de hachage secret.

La console Amazon Cognito choisit une configuration par défaut pour un nouveau groupe d'utilisateurs

Problème

Lorsque vous configurez un nouveau groupe d'utilisateurs dans la console, Amazon Cognito choisit plusieurs paramètres par défaut pour vous. Certains paramètres ne peuvent pas être modifiés une fois le groupe d'utilisateurs créé. Comment pouvez-vous faire des choix éclairés et comprendre ce qu'Amazon Cognito a sélectionné automatiquement ?

Solution

La nouvelle configuration du groupe d'utilisateurs dans la console Amazon Cognito est conçue pour les tests et le prototypage rapides. La console ne vous présente que les choix de configuration les plus critiques, à savoir ceux qui ne peuvent pas être modifiés après la création du groupe d'utilisateurs. Tous les autres paramètres configurés automatiquement par Amazon Cognito peuvent être modifiés ultérieurement.

Nous vous recommandons l'approche suivante :

  1. Utilisez la console pour créer des groupes d'utilisateurs de test pendant que vous affinez votre implémentation.

  2. Après avoir déterminé votre configuration de production, appliquez ces paramètres à vos groupes d'utilisateurs de test.

  3. Utilisez DescribeUserPooldes opérations DescribeUserPoolClientd'API pour générer des modèles JSON de votre configuration testée.

  4. Utilisez ces modèles avec des outils de déploiement tels que le AWS SDKs CDK ou l'API REST, ou CloudFormation pour créer vos ressources de production.

Pour de plus amples informations, veuillez consulter Démarrage avec les groupes d'utilisateurs.

Ressources supplémentaires pour la résolution des problèmes

Pour obtenir des conseils de dépannage supplémentaires et des solutions proposées par la communauté, vous pouvez également consulter les ressources externes suivantes :