Wie behebe ich Fehler bei ungültigen SAML-Antworten, die Benutzer erhalten können, wenn sie sich mit Amazon Cognito verbinden?

Lesedauer: 10 Minute
0

Ich muss Fehler beheben, auf die Benutzer stoßen können, wenn sie sich mit Security Assertion Markup Language 2.0 (SAML 2.0) in Amazon Cognito verbinden.

Lösung

Amazon Cognito unterstützt die Authentifizierung mit Identitätsanbietern (IdPs) und SAML 2.0. Es gibt häufig auftretende Fehler, auf die Benutzer stoßen können, wenn sie sich mithilfe von SAML mit Amazon Cognito verbinden.

Hinweis: Ersetzen Sie durchgängig <attribute_name> durch das Benutzerattribut aus Ihrem Fehlerszenario.

SAML-Antworten anzeigen

Sehen Sie sich die SAML-Antwort an, die vom IdP an den Amazon Cognito-Benutzerpool gesendet wurde, um häufig auftretende SAML-Partnerverbund-Fehler zu beheben. Anweisungen zum Erfassen und Dekodieren der SAML-Antwort finden Sie unter Anzeigen einer SAML-Antwort in Ihrem Browser.

Hinweis: Das SAMLResponse-Element enthält die base64-codierte Anfrage. Eine Nutzlast mit %-Zeichen gibt an, dass die Nutzlast zusätzlich zu base64 URL-kodiert ist. Führen Sie eine URL-Dekodierung für den Wert SAMLResponse durch, bevor Sie ihn zur base64-Dekodierung senden.

Ungültige SAML-Antwortfehler beheben

„Ungültige SAML-Antwort empfangen: Ungültige Benutzerattribute: <attribute_name>: Das Attribut ist erforderlich.“

Dieser Fehler tritt auf, wenn ein Benutzerpool mit erforderlichen Attributen konfiguriert ist, der IdP jedoch keinen Anspruch für erforderliche Attribute weitergibt. Dieser Fehler tritt auch auf, wenn die Attributzuordnung für erforderliche Attribute nicht verfügbar ist.

Gehen Sie wie folgt vor, um den Fehler zu beheben:

1.Öffnen Sie die Amazon Cognito-Konsole.

2.Wählen Sie Ihren Benutzerpool aus.

3.Überprüfen Sie die Informationen zum Benutzerpool. Notieren Sie sich die erforderlichen Attribute, die unter Anmeldeerfahrung konfiguriert sind.

4.Rufen Sie die SAML-Antwort in Ihrem Browser ab und überprüfen Sie sie.

5.Prüfen Sie, ob der IdP alle erforderlichen Attribut-Ansprüche im Feld AttributeStatement der Antwort übergibt. Wenn der IdP nicht alle erforderlichen Attribute in der SAML-Antwort sendet, überprüfen Sie die Konfiguration der Attributzuordnung Ihres IdP. Stellen Sie sicher, dass Ihr IdP so konfiguriert ist, dass er die richtigen Zuordnungen für die erforderlichen Attribute sendet.

Hinweis: Ihr IdP bietet möglicherweise beispielhafte SAML-Aussagen als Referenz an. Sie können die Aussagen überprüfen, um weitere Informationen zu den zugeordneten Attributen des IdP zu erhalten. Einige IdPs verwenden einfache Namen für Attributzuordnungen, wie z. B. eine E-Mail-Adresse, während andere URL-formatierte Attributnamen verwenden, die diesem Beispiel ähneln:

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

6.Wenn die SAML-Antwort erforderliche Attribute enthält, Sie aber immer noch dieselbe Fehlermeldung erhalten, überprüfen Sie die Amazon Cognito-Attributzuordnungen. Wenn für ein erforderliches Attribut eine Zuordnung fehlt, fügen Sie dem Attribut-Anspruch eine Zuordnung hinzu. Anweisungen zum Hinzufügen von Attributzuordnungen finden Sie unter Festlegen von Identitätsanbieter-Attributzuordnungen für Ihren Benutzerpool.

„Ungültige SAML-Antwort empfangen: Ungültige Benutzerattribute: <attribute_name>: Das erforderliche Attribut kann nicht gelöscht werden.“

Dieser Fehler tritt auf, wenn ein erforderliches Attribut im IdP geändert wird, sodass das erforderliche Attribut Null ist oder gelöscht wird. Dieser Fehler tritt auch auf, wenn eine Zuordnung entfernt wird, nachdem ein Benutzer erstellt wurde.

Gehen Sie wie folgt vor, um den Fehler zu beheben:

1.Öffnen Sie die Amazon Cognito-Konsole.

2.Wählen Sie Ihren Amazon Cognito-Benutzerpool aus.

3.Überprüfen Sie die Informationen zum Benutzerpool. Notieren Sie sich die konfigurierten erforderlichen Attribute.

4.Rufen Sie die SAML-Antwort in Ihrem Browser ab und überprüfen Sie sie.

5.Prüfen Sie, ob der IdP alle erforderlichen Attribut-Ansprüche im Feld AttributeStatement der Antwort weitergibt. Wenn der IdP nicht alle erforderlichen Attribute in der SAML-Antwort sendet, überprüfen Sie die Konfiguration der Attributzuordnung des IdP. Stellen Sie sicher, dass Ihr IdP so eingerichtet ist, dass er die erforderlichen Attribute mit den richtigen Zuordnungen sendet.

6.Wenn alle erforderlichen Attribute mit gültigen Werten in der SAML-Antwort übergeben wurden, überprüfen Sie die IdP-Attributzuordnungen. Stellen Sie sicher, dass Zuordnungen für alle erforderlichen Attribute vorhanden sind.

Hinweis: Bei Verbundanfragen kann der folgende Fehler auftreten, nachdem das erforderliche Attribut eines IdP gelöscht oder auf Null geändert wurde: „Ungültige SAML-Antwort empfangen: Ungültige Benutzerattribute: <attribute_name>: Das erforderliche Attribut kann nicht gelöscht werden.“ Dieser Fehler tritt auch auf, wenn die Zuordnung entfernt wird, nachdem ein Benutzer erstellt wurde. Um diesen Fehler zu beheben, folgen Sie den vorherigen Schritten, um sicherzustellen, dass die Zuordnung für die erforderlichen Attribute vorhanden ist. Im Anschluss wird von Ihrem IdP ein korrekter Wert für Ihre erforderlichen Attribute übergeben.

„Ungültige SAML-Antwort empfangen: Ungültige Benutzerattribute: <attribute_name>: Das Attribut kann nicht aktualisiert werden.“

Dieser Fehler tritt auf, wenn ein Attribut vom IdP übergeben wird, das zugeordnete Amazon Cognito-Attribut jedoch auf unveränderlich gesetzt ist („mutable“ : „false“). Sie können die Veränderbarkeitseinstellungen eines Attributs nicht ändern, nachdem ein Benutzerpool erstellt wurde. Um diesen Fehler zu beheben, müssen Sie die Regel für die Attributzuordnung entfernen, die das SAML-Attribut einem unveränderlichen Attribut zuordnet.

Gehen Sie wie folgt vor, um den Fehler zu beheben:

1.Führen Sie den folgenden Befehl der AWS Command Line Interface (AWS CLI) aus und notieren Sie sich die in der Ausgabe zurückgegebenen Attribute. Alle in der Ausgabe zurückgegebenen Attribute sind unveränderlich.

Hinweis: Ersetzen Sie <userpool_id> durch Ihre Benutzerpool-ID.

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

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

2.Öffnen Sie die Amazon Cognito-Konsole.

3.Überprüfen Sie die SAML-Attributzuordnungen für Ihren Anbieter.

4.Prüfen Sie, ob eines der SAML-Attribute Amazon Cognito-Attributen zugeordnet ist, die in der Befehlsausgabe zurückgegeben wurden. Wenn eine Zuordnung zu einem unveränderlichen Attribut besteht, löschen Sie diese Zuordnung. Wenn dieses SAML-Attribut zugeordnet werden muss, ordnen Sie es einem vorhandenen veränderlichen Attribut zu. Sie können zudem ein benutzerdefiniertes veränderbares Attribut erstellen und das SAML-Attribut dem benutzerdefinierten veränderlichen Attribut zuordnen.

Es gibt keinen Workaround, den Sie für einen vorhandenen Benutzerpool ausführen können, um eine Zuordnung zu löschen, da ein zugeordnetes Attribut erforderlich ist. Sie müssen einen neuen Benutzerpool mit den erforderlichen Veränderbarkeitseinstellungen erstellen und Ihre Benutzer in den neuen Benutzerpool migrieren.

„Ungültige SAML-Antwort empfangen: Die SAML-Antwortsignatur ist ungültig.“

Dieser Fehler tritt auf, wenn der IdP das SAML-Signaturzertifikat ändert. Um dieses Problem zu beheben, überprüfen Sie die SAML-Antwort, die Sie erhalten, wenn Sie sich mit Amazon Cognito verbinden. Notieren Sie sich den im Feld X509Certificate angegebenen Wert. Vergleichen Sie diesen X509Certificate-Wert in der SAML-Antwort mit dem X509Certificate-Wert in der Metadaten-XML-Datei, die für die IdP-Konfiguration auf Amazon Cognito hochgeladen wurde. Wenn die Werte unterschiedlich sind, bedeutet dies, dass das vom IdP verwendete SAML-Signaturzertifikat aktualisiert wurde.

Gehen Sie wie folgt vor, um den Fehler zu beheben:

1.Navigieren Sie zur Anwendungskonfigurationsseite Ihres IdP und rufen Sie dann die aktualisierte Metadatendatei ab.

2.Öffnen Sie die Amazon Cognito-Konsole.

3.Navigieren Sie zur Konfiguration für Ihren SAML-IdP.

4.Ersetzen Sie die vorhandene Metadatendatei durch die aktualisierte Metadatendatei.
-oder-
Wenn Ihr IdP SAML-Metadaten über eine öffentliche URL anbietet, kopieren Sie die URL des Metadatendokuments. Fügen Sie diese öffentliche URL ein, anstatt eine Metadatendatei hochzuladen.

„Ungültige SAML-Antwort empfangen: Die Zielgruppenbeschränkung in der SAML-Aussage lässt dies für urn:amazon:cognito:sp:xxxxxxxx nicht zu.“
-oder-
„Ungültige SAML-Antwort empfangen: Die Anwendung mit der Kennung 'urn:amazon:cognito:sp:xxxxxxxx' wurde nicht gefunden.“

Hinweis: Die Fehlermeldung unterscheidet sich je nach IdP.

Dieser Fehler tritt auf, wenn Sie Ihre Entitäts-ID auf Ihrem IdP falsch konfigurieren. Dieser Fehler tritt auch auf, wenn Sie die URN eines anderen Benutzerpools als Entitäts-ID verwenden.

Gehen Sie wie folgt vor, um den Fehler zu beheben:

1.Öffnen Sie die Amazon Cognito-Konsole.

2.Wählen Sie Benutzerpools aus und notieren Sie sich dann Ihre Benutzerpool-ID.

3.Gehen Sie zu den SAML-Anwendungseinstellungen des IdP und konfigurieren Sie dann die Entitäts-ID im folgenden Format:

Hinweis: Ersetzen Sie <user_pool_id> durch Ihre Amazon Cognito-Benutzerpool-ID.

urn:amazon:cognito:sp:<user_pool_id>

„Für die angeforderte Seite ist ein Fehler aufgetreten.“

Dieser Fehler tritt auf der von Amazon Cognito gehosteten UI-Seite auf. Wenn diese Fehlermeldung nicht von weiteren Fehlerhinweisen begleitet wird, weist dies darauf hin, dass die Assertion Consumer Service (ACS)-URL Ihrer Anwendung falsch konfiguriert ist. Ihr IdP verwendet die ACS-URL, um eine SAML-Antwort an Amazon Cognito zu senden. Die ACS-URL folgt diesem Format:

Hinweis: Ersetzen Sie <your_user_pool_domain> durch Ihre Benutzerpool-Domain.

https://<your_user_pool_domain>/saml2/idpresponse

Amazon Cognito unterstützt nur die POST-Bindung für den Endpunkt. Ihr IdP muss SAML-Antworten in der POST-Anfrage an den Endpunkt senden. Wenn Sie diese URL in der Anwendung Ihres IdP falsch konfigurieren, sendet Ihr IdP die SAML-Antwort an einen falschen Endpunkt. Dies führt zu einem 400-Fehler und einem Parteierbund-Fehler.

Gehen Sie wie folgt vor, um den Fehler zu beheben:

1.Öffnen Sie die Anwendungskonfiguration Ihres IdP und legen Sie die ACS-URL fest, indem Sie eines der folgenden Formate verwenden:

Cognito-Domain:

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

Benutzerdefinierte Domain:

https://<your_user_pool_domain>/saml2/idpresponse

„Für die angeforderte Seite ist ein Fehler aufgetreten: Ungültiger relayState vom Identitätsanbieter.“
-oder-
„Für die angeforderte Seite ist ein Fehler aufgetreten: Ungültige samlResponse oder relayState vom Identitätsanbieter.“

Dieser Fehler tritt aus den folgenden Gründen auf:

  • Der RelayState-Parameter wird vom IdP auf Null gesetzt, wenn eine SAML-Antwort an Amazon Cognito gesendet wird.
  • Die ACS-URL in der SAML-Anfrage entspricht nicht der in der Anwendung Ihres IdP konfigurierten ACS-URL.

Amazon Cognito generiert einen RelayState-Parameter, wenn eine Authentifizierungsanfrage an Ihren IdP weitergeleitet wird. Dieser RelayState-Parameter muss nach erfolgreicher Authentifizierung vom IdP an Amazon Cognito zurückgegeben werden.

Beim SAML-Verbund fungiert ein Benutzerpool als Dienstanbieter im Namen Ihrer Anwendung. Als Dienstanbieter unterstützt Amazon Cognito nur vom Dienstanbieter initiierte Single-Sign-On-Flows (SSO). IdP-initiierte Flows werden nicht unterstützt. Wenn eine Partneranforderung von Ihrem IdP initiiert wird, wird das erforderliche Attribut des IdP gelöscht oder auf Null geändert. Das Ergebnis ist ein Partnererbund-Fehler, der die zuvor erwähnte Fehlermeldung beinhaltet.

Um diesen Fehler zu beheben, initiieren Sie die Partneranforderung von Amazon Cognito aus statt vom IdP. Um den Partnerverbund von Amazon Cognito aus zu initiieren, führen Sie einen der folgenden Schritte aus, um Ihren Authentifizierungsablauf zu starten:

  • Leiten Sie Benutzer zur Anmeldung zum Endpunkt /login weiter. Der Endpunkt /login lädt die Anmeldeseite und präsentiert Benutzern die Client-Authentifizierungsoptionen. Stellen Sie eine Verbindung zum Endpunkt /login her, wenn Benutzer verschiedene Optionen auswählen müssen, um sich bei Ihren Anwendungen anzumelden und zum IdP umgeleitet zu werden.
  • Senden Sie Anfragen an den Endpunkt /oauth2/authorize für Amazon Cognito. Der Endpunkt /oauth2/authorize ist ein Umleitungsendpunkt, der zwei Umleitungsziele unterstützt. Wenn Sie einen identity_provider- oder idp_identifier-Parameter in die URL aufnehmen, wird Ihr Benutzer nahtlos zur Anmeldeseite des IdP weitergeleitet. Sie können diese Option verwenden, um das Standardlayout der gehosteten Benutzeroberfläche zu überspringen und direkt zur IdP-Seite weitergeleitet zu werden.

Der Fehler tritt auch auf, wenn die ACS-URL sich unterscheidet, wenn eine Verbundanfrage für dieselbe IdP-Anwendung von einem anderen Benutzerpool stammt. Gehen Sie wie folgt vor, um den Fehler zu untersuchen und zu beheben:

1.Wenn Sie eine Verbindung zu Amazon Cognito herstellen, erfassen Sie die HTTP Archive (HAR)-Datei.

2.Suchen Sie in Ihrem Browser auf der Registerkarte Netzwerk nach der Anfrage mit einer saml?SamlRequest-Eintrag und öffnen Sie dann die Anfrage.

3.Kopieren Sie die in den Anforderungsparametern angegebene SAMLRequest.

4.Verwenden Sie Ihr bevorzugtes SAML-Dekodierungstool, um die SAMLRequest zu dekodieren. Überprüfen Sie dann, ob die in der SAMLRequest gesendete ACS-URL mit der in der Anwendung Ihres IdP festgelegten übereinstimmt.

Der Fehler wird bestätigt, wenn die SAMLRequest-Werte unterschiedlich sind.

5.Um den Fehler zu beheben, überprüfen Sie Ihre IdP-Konfiguration. Stellen Sie sicher, dass die in Ihrer Anwendung festgelegte ACS-URL mit der in der SAMLRequest gesendeten ACS-URL übereinstimmt.

Die ACS-URL weicht ab, wenn eine Partneranforderung für dieselbe IdP-Anwendung aus einem anderen Benutzerpool generiert wird. Stellen Sie sicher, dass Sie Ihre Partneranforderung vom entsprechenden Benutzerpool aus starten.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr