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

Lecture de 11 minute(s)
0

Je dois résoudre les erreurs que les utilisateurs peuvent rencontrer lorsqu'ils se fédèrent dans Amazon Cognito à l'aide du langage SAML 2.0 (Security Assertion Markup Language 2.0).

Résolution

Amazon Cognito prend en charge l'authentification auprès des fournisseurs d'identité (IDP) et SAML 2.0. Les utilisateurs peuvent rencontrer des erreurs courantes lorsqu'ils se connectent à Amazon Cognito à l'aide de SAML.

**Remarque :**Tout au long du document, remplacez <attribute_name> par l'attribut utilisateur de votre scénario d'erreur.

Afficher les réponses SAML

Pour résoudre les erreurs courantes de fédération SAML, examinez la réponse SAML envoyée par l'IdP au groupe d'utilisateurs Amazon Cognito. Pour obtenir des instructions sur la façon de récupérer et de décoder la réponse SAML, consultez la section Affichage d'une réponse SAML dans votre navigateur.

**Remarque :**L'élément SAMLResponse contient la requête codée en base64. Une charge utile contenant % de caractères indique que la charge utile est codée en URL en plus de la base64. Effectuez un décodage d'URL sur la valeur SAMLResponse avant de l'envoyer pour le décodage en base64.

Résoudre les erreurs de réponse SAML non valides

« Réponse SAML non valide reçue : Attributs utilisateur non valides <attribute_name> : L'attribut est obligatoire »

Cette erreur se produit lorsqu'un groupe d'utilisateurs est configuré avec des attributs obligatoires mais que l'IdP ne transmet pas de demandes pour les attributs requis. Cette erreur se produit également lorsque le mappage d'attributs n'est pas disponible pour les attributs obligatoires.

Procédez comme suit pour résoudre l'erreur :

1.    Ouvrez la console Amazon Cognito.

2.    Sélectionnez votre groupe d'utilisateurs.

3.    Passez en revue les informations relatives au groupe d'utilisateurs. Notez les attributs requis configurés sous Expérience d'inscription.

4.    Récupérez et examinez la réponse SAML dans votre navigateur.

5.    Vérifiez si l'IdP transmet toutes les revendications d'attributs requises dans le champ AttributeStatement de la réponse. Si l'IdP n'envoie pas tous les attributs requis dans la réponse SAML, vérifiez la configuration du mappage des attributs de votre IdP. Assurez-vous que votre IdP est configuré pour envoyer les mappages corrects pour les attributs requis.

Remarque : Votre IdP peut proposer des exemples d'assertions SAML à titre de référence. Vous pouvez vérifier les assertions pour obtenir plus de détails sur les attributs mappés de l'IdP. Certains IdP utilisent des noms simples pour les mappages d'attributs, tels qu'une adresse e-mail, tandis que d'autres utilisent des noms d'attributs au format URL, comme dans cet exemple :

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

6.    Lorsque la réponse SAML inclut des attributs obligatoires mais que vous recevez toujours la même erreur, vérifiez les mappages d'attributs Amazon Cognito. Lorsqu'un mappage est absent pour un attribut requis, ajoutez-en un à la revendication d'attribut. Pour savoir comment ajouter des mappages d'attributs, consultez la section Définition des mappages d'attributs de fournisseurs d'identité pour votre groupe d'utilisateurs.

« Réponse SAML non valide reçue : Attributs utilisateur non valides <attribute_name> : L'attribut requis ne peut pas être supprimé ».

Cette erreur se produit lorsqu'un attribut requis est modifié dans l'IdP de sorte que l'attribut requis soit nul ou supprimé. Cette erreur se produit également lorsqu'un mappage est supprimé après la création d'un utilisateur.

Procédez comme suit pour résoudre l'erreur :

1.    Ouvrez la console Amazon Cognito.

2.    Sélectionnez votre groupe d'utilisateurs Amazon Cognito.

3.    Passez en revue les informations relatives au groupe d'utilisateurs. Notez les attributs requis configurés.

4.    Récupérez et examinez la réponse SAML dans votre navigateur.

5.    Vérifiez si l'IdP transmet toutes les demandes d'attributs requises dans le champ AttributeStatement de la réponse. Si l'IdP n'envoie pas tous les attributs requis dans la réponse SAML, vérifiez la configuration du mappage des attributs de l'IdP. Assurez-vous que votre IdP est configuré pour envoyer les attributs requis avec les mappages appropriés.

6.    Si tous les attributs requis sont transmis avec des valeurs valides dans la réponse SAML, vérifiez les mappages d'attributs IdP. Assurez-vous qu'il existe des mappages pour tous les attributs requis.

Remarque : Vous pouvez rencontrer l'erreur suivante lors des demandes de fédération après que l'attribut requis d'un IdP a été supprimé ou remplacé par la valeur « null » : « Réponse SAML non valide reçue : Attributs utilisateur non valides <attribute_name> : L'attribut requis ne peut pas être supprimé ». Cette erreur se produit également lorsque le mappage est supprimé après la création d'un utilisateur. Pour résoudre cette erreur, suivez les étapes précédentes afin de vous assurer que le mappage existe pour les attributs requis. Une valeur correcte est ensuite transmise pour vos attributs requis par votre IdP.

« Réponse SAML non valide reçue : Attributs utilisateur non valides <attribute_name> : L'attribut ne peut pas être mis à jour ».

Cette erreur se produit lorsqu'un attribut est transmis depuis l'IdP mais que l'attribut Amazon Cognito mappé est défini comme étant immuable (« mutable » : « false »). Vous ne pouvez pas modifier les paramètres de mutabilité d'un attribut après la création d'un groupe d'utilisateurs. Pour résoudre cette erreur, vous devez supprimer la règle de mappage d'attributs qui mappe l'attribut SAML à un attribut immuable.

Procédez comme suit pour résoudre l'erreur :

1.    Exécutez la commande Interface de la ligne de commande AWS (AWS CLI) suivante et notez les attributs renvoyés dans la sortie. Tous les attributs renvoyés dans la sortie sont immuables.

Remarque : Remplacez <userpool_id> par l'ID de votre groupe d'utilisateurs.

aws cognito-idp describe-user-pool --user-pool-id <userpool_id> --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'

Remarque : Si vous recevez des erreurs lors de l'exécution des commandes de l'AWS CLI, assurez-vous que vous utilisez la version la plus récente de l'AWS CLI.

2.    Ouvrez la console Amazon Cognito.

3.    Passez en revue les mappages d'attributs SAML de votre fournisseur.

4.    Vérifiez si l'un des attributs SAML est mappé aux attributs Amazon Cognito renvoyés dans la sortie de la commande. S'il existe un mappage vers un attribut immuable, supprimez ce mappage. Si vous devez mapper cet attribut SAML, mappez-le à n'importe quel attribut mutable existant. Vous pouvez également créer un attribut mutable personnalisé et mapper l'attribut SAML à l'attribut mutable personnalisé.

Il n'existe aucune solution de contournement que vous pouvez appliquer à un groupe d'utilisateurs existant pour supprimer un mappage, car un attribut mappé est requis. Vous devez créer un nouveau groupe d'utilisateurs avec les paramètres de mutabilité requis et migrer vos utilisateurs vers le nouveau groupe d'utilisateurs.

« Réponse SAML non valide reçue : La signature de réponse SAML n'est pas valide ».

Cette erreur se produit lorsque l'IdP modifie le certificat de signature SAML. Pour résoudre ce problème, consultez la réponse SAML que vous recevez lorsque vous fédérez dans Amazon Cognito. Notez la valeur indiquée dans le champ X509Certificate. Comparez cette valeur de X509Certificate contenue dans la réponse SAML avec la valeur de X509Certificate contenue dans le fichier XML de métadonnées chargé sur Amazon Cognito pour la configuration de l'IdP. Si les valeurs sont différentes, cela signifie que le certificat de signature SAML utilisé par l'IdP est mis à jour.

Procédez comme suit pour résoudre l'erreur :

1.    Accédez à la page de configuration de l'application de votre IdP, puis récupérez le fichier de métadonnées mis à jour.

2.    Ouvrez la console Amazon Cognito.

3.    Accédez à la configuration de votre IdP SAML.

4.    Remplacez le fichier de métadonnées existant par le fichier de métadonnées mis à jour.
-ou-
Si votre IdP propose des métadonnées SAML via une URL publique, copiez l'URL du document de métadonnées. Collez cette URL publique au lieu de télécharger un fichier de métadonnées.

« Réponse SAML non valide reçue : La restriction d'audience dans SAML Assertion ne l'autorise pas pour urn:amazon:cognito:sp:xxxxxxxx ».
-ou-
« Réponse SAML non valide reçue : L'application portant l'identifiant "urn:amazon:cognito:sp:xxxxxxxx" est introuvable ».

Remarque : Le message d'erreur varie en fonction de l'IdP.

Cette erreur se produit lorsque vous configurez de façon incorrecte votre ID d'entité sur votre IdP. Cette erreur se produit également lorsque vous utilisez l'URN d'un autre groupe d'utilisateurs comme ID d'entité.

Procédez comme suit pour résoudre l'erreur :

1.    Ouvrez la console Amazon Cognito.

2.    Choisissez Groupes d'utilisateurs, puis notez l'ID de votre groupe d'utilisateurs.

3.    Accédez aux paramètres de l'application SAML de l'IdP, puis configurez l'ID d'entité au format suivant :

Remarque : Remplacez <user_pool_id> par votre identifiant de groupe d'utilisateurs Amazon Cognito.

urn:amazon:cognito:sp:<user_pool_id>

« Une erreur s'est produite sur la page demandée ».

Cette erreur se produit sur la page de l'interface utilisateur hébergée par Amazon Cognito. Lorsque ce message d'erreur n'est accompagné d'aucune autre déclaration d'erreur, cela indique que l'URL du service Assertion Consumer Service (ACS) de votre application n'est pas configurée correctement. Votre IdP utilise l'URL ACS pour envoyer une réponse SAML à Amazon Cognito. L'URL ACS suit le format suivant :

Remarque : Remplacez <your_user_pool_domain> par le domaine de votre groupe d'utilisateurs.

https://<your_user_pool_domain>/saml2/idpresponse

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 cette URL sur l'application de votre IdP, celui-ci envoie la réponse SAML à un point de terminaison incorrect. Cela entraîne une erreur 400 et un échec de fédération.

Procédez comme suit pour résoudre l'erreur :

1.    Accédez à la configuration de l'application de votre IdP et définissez l'URL ACS en utilisant l'un des formats suivants :

Domaine Cognito :

https://<your_user_pool_domain>.auth.<region>.amazoncognito.com/saml2/idpresponse

Domaine personnalisé :

https://<your_user_pool_domain>/saml2/idpresponse

« Une erreur s'est produite sur la page demandée : État de relais invalide de la part du fournisseur d'identité ».
-ou-
« Une erreur s'est produite sur la page demandée : samlResponse ou relayState du fournisseur d'identité non valide ».

Cette erreur se produit pour les raisons suivantes :

  • Le paramètre RelayState est défini sur null par l'IdP lorsqu'une réponse SAML est envoyée à Amazon Cognito.
  • L'URL ACS figurant dans la requête SAML n'est pas la même que l'URL ACS configurée dans l'application de votre IdP.

Amazon Cognito génère un paramètre RelayState lors du transfert d'une demande d'authentification à votre IdP. Ce paramètre RelayState doit être renvoyé par l'IdP à Amazon Cognito après l'authentification réussie.

Au cours de la fédération SAML, un groupe d'utilisateurs agit en tant que fournisseur de services pour le compte de votre application. En tant que fournisseur de services, Amazon Cognito prend uniquement en charge les flux d'authentification unique (SSO) initiés par le fournisseur de services. Les flux initiés par les IDP ne sont pas pris en charge. Lorsqu'une demande de fédération est lancée depuis votre IdP, l'attribut requis de l'IdP est supprimé ou remplacé par null. Un échec de fédération est le résultat qui inclut le message d'erreur mentionné précédemment.

Pour résoudre cette erreur, lancez la demande de fédération depuis Amazon Cognito plutôt que depuis l'IdP. Pour lancer la fédération depuis Amazon Cognito, suivez l'une des étapes suivantes pour démarrer votre flux d'authentification :

  • Redirigez les utilisateurs vers le point de terminaison /login pour se connecter. Le point de terminaison /login charge la page de connexion et présente les options d'authentification du client aux utilisateurs. Connectez-vous au point de terminaison /login lorsque les utilisateurs doivent vérifier différentes options pour se connecter à vos applications et être redirigés vers l'IdP.
  • Envoyez des demandes au point de terminaison /oauth2/authorize pour Amazon Cognito. Le point de terminaison /oauth2/authorize est un point de terminaison de redirection qui prend en charge deux destinations de redirection. Lorsque vous incluez un paramètre identity_provider ou idp_identifier dans l'URL, votre utilisateur est directement redirigé vers la page de connexion de l'IdP. Vous pouvez utiliser cette option pour ignorer la mise en page par défaut de l'interface utilisateur hébergée et pour être directement redirigé vers la page IdP.

L'erreur se produit également lorsque l'URL ACS est différente lorsqu'une demande de fédération pour la même application IdP provient d'un groupe d'utilisateurs différent. Procédez comme suit pour rechercher et résoudre l'erreur :

1.    Lorsque vous fédérez dans Amazon Cognito, récupérez le fichier HTTP Archive (HAR).

2.    Dans votre navigateur, dans l'onglet Réseau, recherchez la demande avec un entrée saml?SamlRequest, puis ouvrez la demande.

3.    Copiez le SAMLRequest fourni dans les paramètres de la requête.

4.    Utilisez votre outil de décodage SAML préféré pour décoder le SAMLRequest. Vérifiez ensuite si l'URL ACS envoyée dans le SAMLRequest est identique à celui défini dans l'application de votre IdP.

L'erreur est confirmée lorsque les valeurs de SAMLRequest sont différentes.

5.    Pour résoudre l'erreur, vérifiez la configuration de votre IdP. Assurez-vous que l'URL ACS définie sur votre application est identique à l'URL ACS envoyée dans le SAMLRequest.

L'URL ACS est différente lorsqu'une demande de fédération est générée pour la même application IdP à partir d'un groupe d'utilisateurs différent. Assurez-vous de lancer votre demande de fédération à partir du groupe d'utilisateurs approprié.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an