Passer au contenu

Comment résoudre les erreurs de réponse SAML non valides que les utilisateurs reçoivent lorsqu'ils se fédèrent dans Amazon Cognito ?

Lecture de 8 minute(s)
0

Je souhaite résoudre les erreurs que les utilisateurs reçoivent lorsqu'ils se fédèrent dans Amazon Cognito avec SAML 2.0.

Résolution

Vérifier les réponses SAML

Dans votre navigateur, vérifiez la réponse SAML que votre fournisseur d'identité (IdP) a envoyée à Amazon Cognito.

Remarque : L'élément SAMLResponse contient une réponse codée en base64. Si des caractères en pourcentage (%) apparaissent dans les données utiles, la réponse est codée en URL et en base64. Dans ce cas, décodez l'URL sur la valeur SAMLResponse, puis appliquez le décodage base64.

Vérifier vos mappages d'attributs

« The attribute is required »

Le message d’erreur suivant s’affiche :

« Invalid SAML response received: Invalid user attributes: <attribute_name>: The attribute is required »

Pour résoudre ce problème, procédez comme suit :

  1. Ouvrez la console Amazon Cognito.
  2. Dans le volet de navigation, choisissez Groupes d'utilisateurs, puis sélectionnez votre groupe d'utilisateurs.
  3. Sous Expérience d'inscription, notez les attributs requis que vous avez configurés.
  4. Vérifiez si vous avez configuré des mappages d'attributs pour votre groupe d'utilisateurs. Si vous n'avez pas mappé vos attributs, spécifiez des mappages d'attributs.
  5. Récupérez la réponse SAML dans votre navigateur.
  6. Dans le champ AttributeStatement, vérifiez si l'IdP inclut les attributs requis.
  7. Dans la configuration de mappage des attributs de votre IdP, confirmez que vous avez configuré votre IdP pour envoyer les attributs requis avec les mappages appropriés.

Remarque : Votre IdP peut utiliser des noms simples pour les mappages d'attributs, tels qu'une adresse e-mail ou un format d'URL. Un exemple de nom d'attribut au format URL est http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress.

« Required attribute cannot be deleted »

Le message d’erreur suivant s’affiche :

« Invalid SAML response received: Invalid user attributes: <attribute_name>: Required attribute cannot be deleted »

Cette erreur se produit lorsque l'IdP définit un attribut obligatoire sur null, supprime un attribut obligatoire ou supprime un mappage d'attributs après la création de l'utilisateur.

Pour résoudre ce problème, mappez tous les attributs requis et configurez l'IdP afin qu'il envoie des valeurs correctes pour les attributs.

Pour plus d'informations, consultez la section Ce qu’il faut savoir à propos des mappages.

Vérifier les attributs immuables

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Le message d’erreur suivant s’affiche :

« Invalid SAML response received: Invalid user attributes: <attribute_name>: Attribute cannot be updated »

Cette erreur se produit lorsque l'IdP transmet un attribut mappé à un attribut Amazon Cognito immuable. Une fois que vous avez créé un groupe d'utilisateurs, vous ne pouvez pas modifier la mutabilité des attributs.

Pour résoudre ce problème, procédez comme suit :

  1. Exécutez la commande describe-user-pool suivante :
    aws cognito-idp describe-user-pool --user-pool-id USER-POOL-ID --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'
    Remarque : Remplacez USER-POOL-ID par l'ID de votre groupe d'utilisateurs.
  2. Dans la sortie de la commande, notez tous les attributs immuables.
  3. Ouvrez la console Amazon Cognito.
  4. Dans les mappages d'attributs SAML pour votre IdP, vérifiez si vos attributs SAML correspondent aux attributs immuables d'Amazon Cognito. Si un attribut SAML correspond à un attribut immuable, supprimez le mappage.
    Remarque : Si vous devez mapper l'attribut SAML, associez-le à un attribut mutable existant. Vous pouvez également créer un attribut mutable personnalisé que vous pouvez mapper à l'attribut SAML.

Si vous avez besoin d'un attribut mappé, créez un nouveau groupe d'utilisateurs avec des paramètres de mutabilité appropriés et importez vos utilisateurs dans le nouveau groupe d'utilisateurs.

Comparez les valeurs entre votre réponse SAML et le fichier XML de métadonnées IdP

Le message d’erreur suivant s’affiche :

« Invalid SAML response received: SAML Response signature is invalid »

Cette erreur se produit lorsque votre IdP met à jour son certificat de signature SAML. La mise à jour crée une incompatibilité entre les valeurs X509Certificate de votre réponse SAML et celles du fichier XML de métadonnées IdP.

Pour résoudre ce problème, procédez comme suit :

  1. Téléchargez le dernier fichier de métadonnées sur la page de configuration de l'application de votre IdP.
    Remarque : Si votre IdP propose des métadonnées SAML via une URL publique, vous pouvez noter l'URL du document de métadonnées et saisir l'URL publique.
  2. Ouvrez la console Amazon Cognito.
  3. Dans les paramètres de configuration de votre IdP SAML, remplacez le fichier de métadonnées existant par le nouveau fichier de métadonnées.

Vérifier l'ID de l'entité et l'URN

L'un des messages d'erreur suivants s'affiche :

« Invalid SAML response received: Audience restriction in SAML Assertion does not allow it for urn:amazon:cognito:sp:xxxxxxxx »

-ou-

« Invalid SAML response received: Application with identifier 'urn:amazon:cognito:sp:xxxxxxxx' was not found »

Ces erreurs se produisent lorsque vous configurez un ID d'entité incorrect dans votre IdP ou que vous utilisez le nom de ressource uniforme (URN) d'un autre groupe d'utilisateurs.

Pour résoudre ce problème, procédez comme suit :

  1. Ouvrez la console Amazon Cognito.
  2. Dans le volet de navigation, choisissez Groupes d'utilisateurs, puis sélectionnez le groupe d'utilisateurs que vous souhaitez configurer pour l'intégration SAML.
  3. Dans le volet de navigation, choisissez Aperçu, puis notez l'ID de votre groupe d'utilisateurs.
  4. Dans les paramètres de l'application SAML de l'IdP, configurez l'ID d'entité au format urn:amazon:cognito:sp:USER-POOL-ID.
    Remarque : Remplacez USER-POOL-ID par l’ID de votre groupe d'utilisateurs Amazon Cognito.

Vérifier la configuration de l'URL de l’assertion consommateur (ACS) de votre IdP

Le message d’erreur suivant s’affiche :

« An error was encountered with the requested page »

Cette erreur s'affiche sur la page de connexion gérée par Amazon Cognito lorsque vous configurez de manière incorrecte l'URL du service d’assertion consommateur (ACS) de votre IdP. Amazon Cognito prend uniquement en charge la liaison POST pour le point de terminaison. Votre IdP doit envoyer des réponses SAML dans la requête POST au point de terminaison. Si vous configurez incorrectement l’URL sur l'application de votre IdP, celui-ci envoie la réponse SAML à un point de terminaison incorrect.

Pour résoudre ce problème, configurez l'application de votre IdP avec le format d'URL ACS approprié.

Un exemple de format pour un domaine de pool d'utilisateurs Amazon Cognito par défaut est https://YOUR-USER-POOL-DOMAIN.auth.REGION.amazoncognito.com/saml2/idpresponse.

Un exemple de format pour un domaine de pool d'utilisateurs personnalisé est https://YOUR-USER-POOL-DOMAIN/saml2/idpresponse.

Remarque : Remplacez YOUR-USER-POOL-DOMAIN par le domaine de votre groupe d'utilisateurs.

Confirmer le type de connexion pris en charge par votre IdP

L'un des messages d'erreur suivants s'affiche :

« An error was encountered with the requested page: Invalid relayState from identity provider »

-ou-

« An error was encountered with the requested page: Invalid samlResponse or relayState from identity provider »

Ces erreurs se produisent à la fois dans les flux de connexion SAML initiés par l'IdP et initiés par le fournisseur de services pour les raisons suivantes :

  • L'IdP a défini le paramètre RelayState sur null dans la réponse SAML à Amazon Cognito.
  • Vous avez utilisé la même application IdP avec un groupe d'utilisateurs différent. Par conséquent, l'URL ACS de la requête SAML ne correspond pas à l'URL ACS de la configuration de l'application de votre IdP.

Remarque : Pour les flux de connexion SAML initiés par le SP, Amazon Cognito inclut un paramètre RelayState dans la requête d'authentification adressée à votre IdP. Après l'authentification, votre IdP doit renvoyer le paramètre RelayState à Amazon Cognito. Pour les flux de connexion SAML initiés par un IdP, celui-ci doit inclure un paramètre RelayState avec l'assertion SAML au point de terminaison /saml2/idpresponse.

Pour résoudre les problèmes de RelayState, déterminez si votre IdP SAML prend en charge uniquement la connexion SAML initiée par le SP ou à la fois la connexion SAML initiée par l'IdP et initiée par le SP.

Si votre IdP prend en charge les flux de connexion SAML initiés par le SP, démarrez votre flux d'authentification depuis Amazon Cognito pour lancer la demande de fédération. Vous pouvez utiliser le point de terminaison de connexion géré /login qui redirige les utilisateurs vers le point de terminaison de connexion. Vous pouvez également utiliser le point de terminaison de redirection et d’authentification /oauth2/authorize.

Si votre IdP prend en charge les flux de connexion SAML initiés par l'IdP, configurez votre IdP SAML avec le paramètre RelayState au format identity_provider=ID-PROVIDER-NAME&client_id=CLIENT-ID&redirect_uri=CALLBACK-URL&response_type=code&scope=openid+email+phone.

Remarque : Remplacez ID-PROVIDER-NAME par le nom de votre IdP SAML. Remplacez également CLIENT-ID par l'ID du client d'application pour votre groupe d'utilisateurs et CALLBACK-URL par l'URL de rappel pour l'ID client de votre application.

Pour résoudre les problèmes d’URL ACS, procédez comme suit :

  1. Créez un fichier HTTP Archive (HAR).
  2. Dans l'onglet Réseau de votre navigateur, localisez la requête avec une entrée saml?SamlRequest.
  3. Notez l’élément SAMLRequest dans les paramètres de la requête.
  4. Utilisez votre outil de décodage SAML préféré pour décoder SAMLRequest.
  5. Comparez l'URL ACS de la requête décodée à celle de la configuration de votre IdP.

Si les URL diffèrent, mettez à jour la configuration de votre IdP afin qu'elle corresponde à l'URL ACS figurant dans SAMLRequest. Puis, lancez la requête de fédération à partir du groupe d'utilisateurs approprié.

AWS OFFICIELA mis à jour il y a 5 ans