View a markdown version of this page

Initiierung der SAML-Sitzung 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.

Initiierung der SAML-Sitzung in Amazon-Cognito-Benutzerpools

Amazon Cognito unterstützt vom Dienstanbieter initiiertes (SP-initiated) einmaliges Anmelden (SSO) und SSO. IdP-initiated Implementieren Sie als bewährte Sicherheitspraxis SP-initiated SSO in Ihrem Benutzerpool. Abschnitt 5.1.2 der V2.0 technischen Übersicht über SAML beschreibt SP-initiated SSO. Amazon Cognito ist der Identitätsanbieter (IDP) für Ihre App. Die App ist der Serviceanbieter (SP), der Token für authentifizierte Benutzer abruft. Wenn Sie jedoch einen IdP eines Drittanbieters verwenden, um Benutzer zu authentifizieren, ist Amazon Cognito der SP. Wenn sich Ihre SAML 2.0-Benutzer mit einem SP-initiated Flow authentifizieren, müssen sie immer zuerst eine Anfrage an Amazon Cognito stellen und zur Authentifizierung an den IdP umleiten.

In einigen Anwendungsfällen für Unternehmen beginnt der Zugriff auf interne Anwendungen mit einem Lesezeichen in einem Dashboard, das vom Unternehmens-IDP gehostet wird. Wenn ein Benutzer ein Lesezeichen auswählt, generiert der IDP eine SAML-Antwort und sendet sie an den SP, um den Benutzer bei der Anwendung zu authentifizieren.

Sie können einen SAML-IdP in Ihrem Benutzerpool so konfigurieren, dass SSO unterstützt wird. IdP-initiated Wenn Sie die IdP-initiated Authentifizierung unterstützen, kann Amazon Cognito nicht überprüfen, ob es die empfangene SAML-Antwort angefordert hat, da Amazon Cognito die Authentifizierung nicht mit einer SAML-Anfrage initiiert. Bei SP-initiated SSO legt Amazon Cognito Zustandsparameter fest, die eine SAML-Antwort anhand der ursprünglichen Anfrage validieren. Mit der SP-initiated Anmeldung können Sie sich auch vor Cross-Site Request Forgery (CSRF) schützen.

Implementieren Sie die SP-initated SAML-Anmeldung

Es hat sich bewährt, eine vom Dienstanbieter initiierte (SP-initiated) -Anmeldung in Ihrem Benutzerpool zu implementieren. Amazon Cognito initiiert die Sitzung Ihres Benutzers und leitet ihn an Ihren IdP weiter. Mit dieser Methode haben Sie die größte Kontrolle darüber, wer Anmeldeanfragen stellt. Sie können die IdP-initiated Anmeldung auch unter bestimmten Bedingungen zulassen.

Der folgende Prozess zeigt, wie Benutzer die SP-initiated Anmeldung bei Ihrem Benutzerpool über einen SAML-Anbieter abschließen.

Flussdiagramm der Authentifizierung bei der Amazon Cognito SP-initiated SAML-Anmeldung.
  1. Ihr Benutzer gibt seine E-Mail-Adresse auf einer Anmeldeseite ein. Um die Weiterleitung Ihres Benutzers zu seinem IdP zu ermitteln, können Sie dessen E-Mail-Adresse in einer maßgeschneiderten Anwendung erfassen oder die verwaltete Anmeldung in der Webansicht aufrufen.

    Sie können Ihre verwalteten Anmeldeseiten so konfigurieren, dass eine Liste mit einer E-Mail-Adresse angezeigt wird IdPs oder dass Sie zur Eingabe einer E-Mail-Adresse aufgefordert werden, und diese mit der ID Ihres SAML-IdP abgleichen. Um zur Eingabe einer E-Mail-Adresse aufzufordern, bearbeiten Sie Ihren Branding-Stil für verwaltete Anmeldeinformationen. Suchen Sie in Foundation nach Authentifizierungsverhalten und legen Sie unter Anbieteranzeige die Option Anzeigestil auf Domain-Sucheingabe fest.

  2. Ihre App ruft Ihren Endpunkt für die Benutzerpool-Umleitung auf und fordert eine Sitzung mit der Client-ID an, die der App entspricht, und der IdP-ID, die dem Benutzer entspricht.

  3. Amazon Cognito leitet Ihren Benutzer mit einer SAML-Anfrage, die optional signiert ist, in einem Element an den IdP weiter. AuthnRequest

  4. Der IdP authentifiziert den Benutzer interaktiv oder mit einer gespeicherten Sitzung in einem Browser-Cookie.

  5. Der IdP leitet Ihren Benutzer mit der optional verschlüsselten SAML-Assertion in seiner POST-Nutzlast zum SAML-Antwortendpunkt Ihres Benutzerpools weiter.

    Anmerkung

    Amazon Cognito storniert Sitzungen, die innerhalb von 5 Minuten keine Antwort erhalten, und leitet den Benutzer zur verwalteten Anmeldung weiter. Wenn Ihr Benutzer dieses Ergebnis feststellt, erhält er eine Something went wrong Fehlermeldung.

  6. Nachdem Amazon Cognito die SAML-Assertion verifiziert und die Benutzerattribute den Ansprüchen in der Antwort zugeordnet hat, erstellt oder aktualisiert es intern das Benutzerprofil im Benutzerpool. In der Regel gibt Ihr Benutzerpool einen Autorisierungscode an die Browsersitzung Ihres Benutzers zurück.

  7. Ihr Benutzer präsentiert seinen Autorisierungscode Ihrer App, die den Code gegen JSON-Web-Tokens (JWTs) austauscht.

  8. Ihre App akzeptiert und verarbeitet das ID-Token Ihres Benutzers als Authentifizierung, generiert autorisierte Anfragen an Ressourcen mit seinem Zugriffstoken und speichert dessen Aktualisierungstoken.

Wenn sich ein Benutzer authentifiziert und einen Autorisierungscode erhält, gibt der Benutzerpool ID-, Zugriffs- und Aktualisierungstoken zurück. Das ID-Token ist ein Authentifizierungsobjekt für das OIDC-based Identitätsmanagement. Das Zugriffstoken ist ein Autorisierungsobjekt mit OAuth 2.0-Bereichen. Das Aktualisierungstoken ist ein Objekt, das neue ID- und Zugriffstoken generiert, wenn die aktuellen Token Ihres Benutzers abgelaufen sind. Sie können die Dauer der Benutzer-Tokens in Ihrem Benutzerpool-App-Client konfigurieren.

Sie können auch die Dauer der Aktualisierungstoken wählen. Nachdem das Aktualisierungstoken eines Benutzers abgelaufen ist, muss er sich erneut anmelden. Wenn sie sich über einen SAML-IdP authentifiziert haben, wird die Sitzungsdauer Ihrer Benutzer durch den Ablauf ihrer Token bestimmt, nicht durch den Ablauf ihrer Sitzung mit ihrem IdP. Ihre App muss das Aktualisierungstoken jedes Benutzers speichern und deren Sitzung erneuern, wenn sie abläuft. Bei der verwalteten Anmeldung werden Benutzersitzungen in einem Browser-Cookie gespeichert, das 1 Stunde lang gültig ist.

Implementieren Sie die IdP-initiated SAML-Anmeldung

Wenn Sie Ihren Identitätsanbieter für die IdP-initiated SAML 2.0-Anmeldung konfigurieren, können Sie dem saml2/idpresponse Endpunkt in Ihrer Benutzerpool-Domäne SAML-Assertions präsentieren, ohne dass Sie die Sitzung auf der initiieren müssen. Autorisieren des Endpunkts Ein Benutzerpool mit dieser Konfiguration akzeptiert IdP-initiated SAML-Assertions von einem externen Identitätsanbieter für Benutzerpools, den der angeforderte App-Client unterstützt.

Flussdiagramm der Authentifizierung bei Amazon Cognito SAML IdP-initiated .
  1. Ein Benutzer fordert eine SAML-Anmeldung mit Ihrer Anwendung an.

  2. Ihre Anwendung ruft einen Browser auf oder leitet den Benutzer zur Anmeldeseite seines SAML-Anbieters weiter.

  3. Der IdP authentifiziert den Benutzer interaktiv oder mit einer gespeicherten Sitzung in einem Browser-Cookie.

  4. Der IdP leitet Ihren Benutzer mit der SAML-Assertion oder -Antwort im POST-Text zu Ihrer Anwendung weiter.

  5. Ihre Anwendung fügt die SAML-Assertion zum POST-Hauptteil einer Anfrage an Ihren Benutzerpool-Endpunkt hinzu. saml2/idpresponse

  6. Amazon Cognito gibt Ihrem Benutzer einen Autorisierungscode aus.

  7. Ihr Benutzer legt Ihrer App seinen Autorisierungscode vor, die den Code gegen JSON-Web-Tokens (JWTs) eintauscht.

  8. Ihre Anwendung akzeptiert und verarbeitet das ID-Token Ihres Benutzers als Authentifizierung, generiert autorisierte Anfragen an Ressourcen mit ihrem Zugriffstoken und speichert ihr Aktualisierungstoken.

In den folgenden Schritten wird der gesamte Prozess zur Konfiguration und Anmeldung bei einem IdP-initiated SAML 2.0-Anbieter beschrieben.

  1. Erstellen oder benennen Sie einen Benutzerpool und einen App-Client.

  2. Erstellen Sie einen SAML 2.0-IdP in Ihrem Benutzerpool.

  3. Konfigurieren Sie Ihren IdP so, dass er die IdP-Initiierung unterstützt. IdP-initiated SAML führt Sicherheitsüberlegungen ein, denen andere SSO-Anbieter nicht unterliegen. Aus diesem Grund können Sie keinem App-Client IdPs, der einen SAML-Anbieter mit Anmeldung verwendet, auch nicht den Benutzerpool selbst, hinzufügen. IdP-initiated

  4. Ordnen Sie Ihren IdP-initiated SAML-Anbieter einem App-Client in Ihrem Benutzerpool zu.

  5. Leiten Sie Ihren Benutzer zur Anmeldeseite für Ihren SAML-IdP weiter und rufen Sie eine SAML-Assertion ab.

  6. Leiten Sie Ihren Benutzer mit seiner SAML-Assertion zu Ihrem saml2/idpresponse Benutzerpool-Endpunkt weiter.

  7. Empfangen Sie JSON-Web-Tokens (JWTs).

Um unerwünschte SAML-Assertions in Ihrem Benutzerpool zu akzeptieren, müssen Sie die Auswirkungen auf Ihre App-Sicherheit berücksichtigen. Anforderungs-Spoofing und CSRF-Versuche sind wahrscheinlich, wenn Sie Anfragen annehmen. IdP-initiated Obwohl Ihr Benutzerpool eine IdP-initiated Anmeldesitzung nicht verifizieren kann, validiert Amazon Cognito Ihre Anforderungsparameter und SAML-Assertionen.

Darüber hinaus darf Ihre SAML-Assertion keinen InResponseTo Anspruch enthalten und muss innerhalb der letzten 6 Minuten ausgestellt worden sein.

Sie müssen Anfragen mit IdP-initiated SAML an Ihren senden. /saml2/idpresponse Für SP-initiated und verwaltete Anmeldeautorisierungsanfragen müssen Sie Parameter, die Ihren angeforderten App-Client, Bereiche, Umleitungs-URI und andere Details identifizieren, als Abfragezeichenfolgenparameter in HTTP GET Anfragen angeben. Für IdP-initiated SAML-Assertionen müssen die Details Ihrer Anfrage jedoch als RelayState Parameter im Hauptteil einer Anfrage formatiert werden. HTTP POST Der Anforderungstext muss auch Ihre SAML-Assertion als Parameter enthalten. SAMLResponse

Im Folgenden finden Sie ein Beispiel für eine Anfrage und Antwort für einen IdP-initiated SAML-Anbieter.

POST /saml2/idpresponse HTTP/1.1 User-Agent: USER_AGENT Accept: */* Host: example.auth.us-east-1.amazoncognito.com Content-Type: application/x-www-form-urlencoded SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone HTTP/1.1 302 Found Date: Wed, 06 Dec 2023 00:15:29 GMT Content-Length: 0 x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb Location: https://www.example.com?code=[Authorization code]
AWS-Managementkonsole
So konfigurieren Sie einen IdP für SAML IdP-initiated
  1. Erstellen Sie einen Benutzerpool, einen App-Client und einen SAML-Identitätsanbieter.

  2. Trennen Sie alle Social- und OIDC-Identitätsanbieter von Ihrem App-Client, sofern welche verknüpft sind.

  3. Navigieren Sie in Ihrem Benutzerpool zum Menü für soziale und externe Anbieter.

  4. Bearbeiten Sie einen SAML-Anbieter oder fügen Sie ihn hinzu.

  5. Wählen Sie unter IdP-initiated SAML-Anmeldung die Optionen Akzeptieren SP-initiated und IdP-initiated SAML-Assertionen aus.

  6. Wählen Sie Änderungen speichern aus.

API/CLI

Um einen IdP für SAML zu konfigurieren IdP-initiated

Konfigurieren Sie IdP-initiated SAML mit dem IDPInit Parameter in einer CreateIdentityProvider UpdateIdentityProvider ODER-API-Anforderung. Das Folgende ist ein Beispiel für einen IdP, ProviderDetails der SAML unterstützt IdP-initiated .

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }