View a markdown version of this page

Wissenswertes über SAML IdPs in Amazon Cognito-Benutzerpools - Amazon Cognito

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wissenswertes über SAML IdPs in Amazon Cognito-Benutzerpools

Die Implementierung eines SAML 2.0-IdP ist mit einigen Anforderungen und Einschränkungen verbunden. Lesen Sie diesen Abschnitt, wenn Sie Ihren IdP implementieren. Außerdem finden Sie Informationen, die für die Behebung von Fehlern beim SAML-Verbund mit einem Benutzerpool hilfreich sind.

Amazon Cognito verarbeitet SAML-Assertionen für Sie

Amazon Cognito-Benutzerpools unterstützen den SAML 2.0-Verbund mit Endpunkten. POST-binding Auf diese Weise ist es nicht mehr notwendig, dass Ihre Anwendung SAML-Assertion-Rückmeldungen lädt oder analysiert, da der Benutzerpool die SAML-Rückmeldungen nun direkt von Ihrem IdP über einen Benutzeragenten erhält. Ihr Benutzerpool fungiert als Dienstanbieter (SP) im Namen Ihrer Anwendung. Amazon Cognito unterstützt SP-initiated IdP-initiated Single Sign-On (SSO), wie in den Abschnitten 5.1.2 und 5.1.4 der technischen Übersicht über SAML beschrieben. V2.0

Stellen Sie ein gültiges IdP-Signaturzertifikat bereit

Das Signaturzertifikat in Ihren SAML-Anbieter-Metadaten darf nicht abgelaufen sein, wenn Sie den SAML-IdP in Ihrem Benutzerpool konfigurieren.

Benutzerpools unterstützen mehrere Signaturzertifikate

Wenn Ihr SAML-IdP mehr als ein Signaturzertifikat in SAML-Metadaten enthält, stellt Ihr Benutzerpool bei der Anmeldung fest, dass die SAML-Assertion gültig ist, sofern sie mit einem Zertifikat in den SAML-Metadaten übereinstimmt. Jedes Signaturzertifikat darf nicht länger als 4.096 Zeichen sein.

Behalten Sie den Relay-Status-Parameter bei

Amazon Cognito und Ihr SAML-IdP verwalten Sitzungsinformationen mit einem relayState-Parameter.

  1. Amazon Cognito unterstützt relayState-Werte, die größer als 80 Byte sind. In SAML-Spezifikationen ist zwar angegeben, dass der Wert für relayState nicht größer als 80 Byte sein darf, aber in der Branche wird hiervon derzeit häufiger abgewichen. Die Folge ist, dass die Ablehnung von relayState-Werten mit mehr als 80 Byte dazu führt, dass für viele Standardintegrationen von SAML-Anbietern Fehler auftreten.

  2. Das relayState Token ist ein undurchsichtiger Verweis auf Statusinformationen, die von Amazon Cognito verwaltet werden. Amazon Cognito übernimmt keine Garantie für den Inhalt des relayState-Parameters. Parsen Sie den Inhalt nicht so, dass Ihre App vom Ergebnis abhängig ist. Weitere Informationen finden Sie in der Spezifikation zu SAML 2.0.

Identifizieren Sie den ACS-Endpunkt

Ihr SAML-Identitätsanbieter verlangt, dass Sie einen Assertions-Verbraucher-Endpunkt festlegen. Ihr IdP leitet Ihre Benutzer mit ihrer SAML-Assertion an diesen Endpunkt weiter. Konfigurieren Sie den folgenden Endpunkt in Ihrer Benutzerpool-Domäne für SAML-2.0-POST-Binding Ihres SAML-Identitätsanbieters.

https://Your user pool domain/saml2/idpresponse With an Amazon Cognito domain: https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse With a custom domain: https://auth.example.com/saml2/idpresponse

Weitere Informationen zum Erstellen von Benutzerpool-Domänen finden Sie unter Konfigurieren einer Benutzerpool-Domäne.

Keine wiederholten Assertionen

Sie können eine SAML-Assertion nicht wiederholen und nicht erneut an Ihren Amazon-Cognito-saml2/idpresponse-Endpunkt wiedergeben. Eine erneut wiedergegebene SAML-Zusicherung hat eine Assertion-ID, die die ID einer früheren IdP-Antwort dupliziert.

Die Benutzerpool-ID ist die SP-Entitäts-ID

Sie müssen Ihrem IdP Ihre Benutzerpool-ID im Service Provider (SP) angebenurn, die auch als Zielgruppen-URI oder SP-Entitäts-ID bezeichnet wird. Der Zielgruppen-URI für Ihren Benutzerpool hat das folgende Format.

urn:amazon:cognito:sp:us-east-1_EXAMPLE

Ihre Benutzerpool-ID finden Sie in der Amazon Cognito-Konsole unter Benutzerpool-Übersicht.

Ordnen Sie alle erforderlichen Attribute zu

Konfigurieren Sie Ihren SAML-IdP so, dass dieser Werte für alle in Ihrem Benutzerpool erforderlichen Attribute bereitstellt. Beispielsweise ist email ein typisches erforderliches Attribut für Benutzerpools. Bevor sich Ihre Benutzer anmelden können, müssen Ihre SAML-IdP-Assertions einen Anspruch enthalten, den Sie dem Benutzerpool-Attribut email zuordnen. Weitere Informationen zu Attributzuordnung finden Sie unter Zuordnung von IdP-Attributen zu Profilen und Tokens.

Das Assertion-Format hat spezifische Anforderungen

Ihr SAML-IdP muss die folgenden Ansprüche in die SAML-Assertion aufnehmen.

  • NameIDEin Anspruch. Amazon Cognito verknüpft eine SAML-Assertion mit dem Zielbenutzer von. NameID Wenn NameID sich Änderungen ergeben, geht Amazon Cognito davon aus, dass die Assertion für einen neuen Benutzer gilt. Das Attribut, auf das Sie NameID in Ihrer IdP-Konfiguration gesetzt haben, muss einen dauerhaften Wert haben. Um SAML-Benutzer einem konsistenten Benutzerprofil in Ihrem Benutzerpool zuzuweisen, weisen Sie Ihren NameID Anspruch einem Attribut zu, dessen Wert sich nicht ändert.

    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent"> carlos </saml2:NameID>

    Ein Wert von Format in Ihrem IdP NameID urn:oasis:names:tc:SAML:1.1:nameid-format:persistent bedeutet, dass Ihr IdP einen unveränderlichen Wert übergibt. Amazon Cognito benötigt diese Formatdeklaration nicht und weist das Format zu, urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified wenn Ihr IdP kein Format für den Anspruch festlegt. NameID Dieses Verhalten entspricht Abschnitt 2.2.2 Complex Type NameIdType der SAML 2.0-Spezifikation. https://groups.oasis-open.org/higherlogic/ws/public/download/35711/sstc-saml-core-errata-2.0-wd-06-diff.pdf/latest

  • Ein AudienceRestriction-Anspruch mit einem Audience-Wert, der die SP-Entitäts-ID Ihres Benutzerpools als Ziel der Antwort festlegt.

    <saml:AudienceRestriction> <saml:Audience> urn:amazon:cognito:sp:us-east-1_EXAMPLE </saml:AudienceRestriction>
  • Für SP-initiated Single Sign-On ein Response Element mit einem InResponseTo Wert der ursprünglichen SAML-Anforderungs-ID.

    <saml2p:Response Destination="https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse" ID="id123" InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" IssueInstant="Date-time stamp" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    Anmerkung

    IdP-initiated SAML-Assertionen dürfen keinen Wert enthalten. InResponseTo

  • Ein SubjectConfirmationData Element mit einem Recipient Wert Ihres saml2/idpresponse Benutzerpool-Endpunkts und, für SP-initiated SAML, einem InResponseTo Wert, der der ursprünglichen SAML-Anforderungs-ID entspricht.

    <saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="Date-time stamp" Recipient="https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse"/>
SP-initiated Anmeldeanfragen

Wenn der Autorisieren des Endpunkts Ihren Benutzer zur Anmeldeseite Ihres IDP umleitet, schließt Amazon Cognito eine SAML-Anforderung in einem URL-Parameter der HTTP GET-Anforderung ein. Eine SAML-Anfrage enthält Informationen über Ihren Benutzerpool, einschließlich Ihres ACS-Endpunkts. Sie können optional eine kryptografische Signatur auf diese Anfragen anwenden.

Signieren Sie Anfragen und verschlüsseln Sie Antworten

Jeder Benutzerpool mit einem SAML-Anbieter generiert ein asymmetrisches Schlüsselpaar und ein Signaturzertifikat für eine digitale Signatur, die Amazon Cognito SAML-Anfragen zuweist. Jeder externe SAML-IdP, den Sie für die Unterstützung verschlüsselter SAML-Antworten konfigurieren, veranlasst Amazon Cognito, ein neues Schlüsselpaar und ein neues Verschlüsselungszertifikat für diesen Anbieter zu generieren. Um die Zertifikate mit dem öffentlichen Schlüssel anzusehen und herunterzuladen, wählen Sie in der Amazon Cognito-Konsole im Menü Soziale und externe Anbieter Ihren IdP aus.

Stellen Sie Ihrem IdP eine Kopie des SAML 2.0-Signaturzertifikats Ihres Benutzerpools zur Verfügung, um eine Vertrauensstellung bei SAML-Anfragen aus Ihrem Benutzerpool herzustellen. Ihr IdP ignoriert möglicherweise SAML-Anfragen, die Ihr Benutzerpool signiert hat, wenn Sie den IdP nicht so konfigurieren, dass er signierte Anfragen akzeptiert.

  1. Amazon Cognito wendet eine digitale Signatur auf SAML-Anfragen an, die Ihr Benutzer an Ihren IdP weiterleitet. Ihr Benutzerpool signiert alle Single Logout (SLO) -Anfragen, und Sie können Ihren Benutzerpool so konfigurieren, dass Single Sign-On (SSO) -Anfragen für jeden externen SAML-IdP signiert werden. Wenn Sie eine Kopie des Zertifikats bereitstellen, kann Ihr IdP die Integrität der SAML-Anfragen Ihrer Benutzer überprüfen.

  2. Ihr SAML-IdP kann SAML-Antworten mit dem Verschlüsselungszertifikat verschlüsseln. Wenn Sie einen IdP mit SAML-Verschlüsselung konfigurieren, darf Ihr IdP nur verschlüsselte Antworten senden.

Kodieren Sie nicht alphanumerische Zeichen

Amazon Cognito akzeptiert keine UTF-8 4-Byte-Zeichen wie 😐 oder𠮷, die Ihr IdP als Attributwert übergibt. Sie können das Zeichen mit Base64 codieren, um es als Text zu übergeben, und es dann in Ihrer App decodieren.

Im folgenden Beispiel wird der Attributanspruch nicht akzeptiert:

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">😐</saml2:AttributeValue> </saml2:Attribute>

Im Gegenteil zum vorherigen Beispiel wird der Attributanspruch akzeptiert:

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">8J+YkA==</saml2:AttributeValue> </saml2:Attribute>
Der Metadaten-Endpunkt muss über eine gültige Transportschichtsicherheit verfügen

Wenn InvalidParameterException beim Erstellen eines SAML-IdP mit einer HTTPS-Metadatenendpunkt-URL beispielsweise die Meldung „Fehler beim Abrufen der Metadaten von“ angezeigt wird<metadata endpoint>, stellen Sie sicher, dass SSL für den Metadaten-Endpunkt korrekt eingerichtet ist und dass ihm ein gültiges SSL-Zertifikat zugeordnet ist. Weitere Informationen zur Validierung von Zertifikaten finden Sie unter Was ist ein Zertifikat? SSL/TLS .

Der Metadaten-Endpunkt muss sich auf dem Standard-TCP-Port für HTTP oder HTTPS befinden

Amazon Cognito akzeptiert nur Metadaten-URLs für SAML-Anbieter auf den Standard-TCP-Ports 80 für HTTP und 443 für HTTPS. Hosten Sie aus Sicherheitsgründen SAML-Metadaten unter einer TLS-encrypted URL mit dem Präfix. https:// Geben Sie Metadaten-URLs im Format http://www.example.com/saml2/metadata.xml oder https://www.example.com/saml2/metadata.xml ein. Die Amazon Cognito-Konsole akzeptiert Metadaten-URLs nur mit dem https:// Präfix. Sie können IdP-Metadaten auch mit CreateIdentityProvider und konfigurieren. UpdateIdentityProvider

App-Clients mit IdP-initiated SAML können sich nur mit SAML anmelden

Wenn Sie die Unterstützung für einen SAML 2.0-IdP aktivieren, der die IdP-initiated Anmeldung in einem App-Client unterstützt, können Sie diesem App-Client nur weiteres SAML 2.0 IdPs hinzufügen. Sie werden daran gehindert, das Benutzerverzeichnis im Benutzerpool und alle externen Identitätsanbieter, die nicht SAML sind, einem auf diese Weise konfigurierten App-Client hinzuzufügen.

Abmeldeantworten müssen die POST-Bindung verwenden

Der /saml2/logout Endpunkt akzeptiert LogoutResponse als HTTP POST Anfragen. Benutzerpools akzeptieren keine HTTP GET verbindlichen Abmeldeantworten.

Signatur von Metadaten — Rotation des Zertifikats

Amazon Cognito speichert SAML-Metadaten bis zu sechs Stunden lang im Cache, wenn Sie Metadaten mit einer URL angeben. Wenn Sie eine Rotation von Zertifikaten für das Signieren von Metadaten durchführen, konfigurieren Sie Ihre Metadatenquelle so, dass sowohl das ursprüngliche als auch das neue Zertifikat mindestens sechs Stunden lang veröffentlicht werden. Wenn Amazon Cognito den Cache anhand der Metadaten-URL aktualisiert, behandelt es jedes Zertifikat als gültig und Ihr SAML-IdP kann beginnen, SAML-Assertionen mit dem neuen Zertifikat zu signieren. Nach Ablauf dieses Zeitraums können Sie das Originalzertifikat aus den veröffentlichten Metadaten entfernen.