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.
SAMLSitzungsinitiierung in Amazon Cognito Cognito-Benutzerpools
Amazon Cognito unterstützt vom Service Provider initiiertes (SP-initiiertes) Single Sign-On () und IdP-initiiertes. SSO SSO Als bewährte Sicherheitsmethode sollten Sie SP-initiiert in Ihrem Benutzerpool implementieren. SSO In Abschnitt 5.1.2 des technischen Überblicks zu SAML Version 2.0 wird SP-initiiert
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 er SSO IdP-initiierte unterstützt. Wenn Sie die IDP-initiierte Authentifizierung unterstützen, kann Amazon Cognito nicht überprüfen, ob es die SAML Antwort, die es erhält, angefordert hat, da Amazon Cognito die Authentifizierung nicht mit einer Anfrage initiiert. SAML Bei SP-Initiated SSO legt Amazon Cognito Zustandsparameter fest, die eine SAML Antwort anhand der ursprünglichen Anfrage validieren. Mit der SP-initiierten Anmeldung können Sie sich auch vor standortübergreifender Anforderungsfälschung schützen (). CSRF
Themen
Verwenden Sie die SP-initiierte SAML Anmeldung
Es hat sich bewährt, eine service-provider-initiated (vom SP initiierte) Anmeldung bei 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. Unter bestimmten Bedingungen können Sie auch die vom IDP initiierte Anmeldung zulassen.
Der folgende Prozess zeigt, wie Benutzer die SP-initiierte Anmeldung bei Ihrem Benutzerpool über einen Anbieter abschließen. SAML
-
Ihr Benutzer gibt seine E-Mail-Adresse auf einer Anmeldeseite ein. Um die Weiterleitung Ihres Benutzers zu seinem IdP zu ermitteln, können Sie seine E-Mail-Adresse in einer benutzerdefinierten App erfassen oder die gehostete Benutzeroberfläche in der Webansicht aufrufen. Sie können Ihre gehostete Benutzeroberfläche so konfigurieren, dass eine Liste von E-Mail-Adressen angezeigt wird IdPs oder dass Sie nur zur Eingabe einer E-Mail-Adresse aufgefordert werden.
-
Ihre App ruft Ihren Benutzerpool-Weiterleitungsendpunkt auf und fordert eine Sitzung mit der Client-ID an, die der App entspricht, und der IdP-ID, die dem Benutzer entspricht.
-
Amazon Cognito leitet Ihren Benutzer mit einer SAML Anfrage, optional signiert, in einem Element an
AuthnRequest
den IdP weiter. -
Der IdP authentifiziert den Benutzer interaktiv oder mit einer gespeicherten Sitzung in einem Browser-Cookie.
-
Der IdP leitet Ihren Benutzer mit der optional verschlüsselten SAML Assertion in seiner Nutzlast zu Ihrem SAML Benutzerpool-Antwortendpunkt weiter. POST
Anmerkung
Amazon Cognito storniert Sitzungen, die innerhalb von 5 Minuten keine Antwort erhalten, und leitet den Benutzer zur gehosteten Benutzeroberfläche weiter. Wenn Ihr Benutzer dieses Ergebnis feststellt, erhält er eine
Something went wrong
Fehlermeldung. -
Nachdem Amazon Cognito die SAML Behauptung verifiziert und 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.
-
Ihr Benutzer präsentiert seinen Autorisierungscode in Ihrer App, die den Code gegen JSON Web-Tokens (JWTs) eintauscht.
-
Ihre App akzeptiert und verarbeitet das ID-Token Ihres Benutzers als Authentifizierung, generiert autorisierte Anfragen an Ressourcen mit seinem Zugriffstoken und speichert das 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 ein OIDC basiertes Identitätsmanagement. Das Zugriffstoken ist ein Autorisierungsobjekt mit einem OAuthGültigkeitsbereich von 2.0
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 festgelegt, nicht durch den Ablauf ihrer Sitzung mit ihrem IdP. Ihre App muss das Aktualisierungstoken jedes Benutzers speichern und seine Sitzung erneuern, wenn sie abläuft. Die gehostete Benutzeroberfläche verwaltet Benutzersitzungen in einem Browser-Cookie, das 1 Stunde lang gültig ist.
Verwenden der vom IDP initiierten Anmeldung SAML
Wenn Sie Ihren Identitätsanbieter für die IDP-initiierte SAML 2.0-Anmeldung konfigurieren, können Sie dem saml2/idpresponse
Endpunkt in Ihrer Benutzerpool-Domäne SAML Assertionen präsentieren, ohne die Sitzung am starten zu müssen. Autorisieren des Endpunkts Ein Benutzerpool mit dieser Konfiguration akzeptiert IDP-initiierte SAML Assertionen von einem externen Identitätsanbieter für Benutzerpools, den der angeforderte App-Client unterstützt. In den folgenden Schritten wird der Gesamtprozess zur Konfiguration und Anmeldung bei einem von IDP initiierten SAML 2.0-Anbieter beschrieben.
-
Erstellen oder bestimmen Sie einen Benutzerpool und einen App-Client.
-
Erstellen Sie einen SAML 2.0-IdP in Ihrem Benutzerpool.
-
Konfigurieren Sie Ihren IdP so, dass er die IdP-Initiierung unterstützt. IDP-initiiert SAML führt Sicherheitsaspekte ein, denen andere SSO Anbieter nicht unterliegen. Aus diesem Grund können Sie keinem App-Client SAML IdPs, der einen SAML Anbieter mit vom IdP initiierter Anmeldung verwendet, non-⸺-, einschließlich des Benutzerpools selbst, hinzufügen.
-
Ordnen Sie Ihren IDP-initiierten SAML Anbieter einem App-Client in Ihrem Benutzerpool zu.
-
Leiten Sie Ihren Benutzer zur Anmeldeseite für Ihren SAML IdP weiter und rufen Sie eine SAML Assertion ab.
-
Leiten Sie Ihren Benutzer mit seiner Assertion an Ihren
saml2/idpresponse
Benutzerpool-Endpunkt weiter. SAML -
Empfangen Sie JSON Web-Tokens (JWTs).
Um unaufgeforderte SAML Assertions in Ihrem Benutzerpool zu akzeptieren, müssen Sie die Auswirkungen auf die Sicherheit Ihrer App berücksichtigen. Wenn Sie vom IdP initiierte Anfragen annehmen, ist es wahrscheinlich, dass Anfragen gefälscht und CSRF versucht werden. Obwohl Ihr Benutzerpool eine vom IdP initiierte Anmeldesitzung nicht verifizieren kann, validiert Amazon Cognito Ihre Anforderungsparameter und Assertionen. SAML
Darüber hinaus darf Ihre SAML Behauptung keinen InResponseTo
Anspruch enthalten und muss innerhalb der letzten 6 Minuten eingereicht worden sein.
Sie müssen Anfragen mit IDP-initiiertem Antrag SAML an Ihren richten. /saml2/idpresponse
Für SP-initiierte und gehostete UI-Autorisierungsanfragen müssen Sie Parameter angeben, die den angeforderten App-Client, die Bereiche, die Weiterleitung URI und andere Details als Abfragezeichenfolgenparameter in Anfragen identifizieren. HTTP GET
Bei IDP-initiierten SAML Assertionen müssen die Details Ihrer Anfrage jedoch als RelayState
Parameter im Hauptteil einer Anfrage formatiert werden. HTTP POST
Der Anfragetext muss auch Ihre SAML Assertion als Parameter enthalten. SAMLResponse
Im Folgenden finden Sie eine Beispielanforderung für einen IDP-initiierten AnbieterSAML.
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]