Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
Wie integriere und konfiguriere ich Amazon Cognito sicher mit externen SAML-Identitätsanbietern?
Ich möchte meinen Amazon Cognito-Benutzerpool so konfigurieren, dass er verschlüsselte SAML-Assertions von meinem externen SAML-Identitätsanbieter (IdP) verwendet. Ich möchte, dass die Benutzerauthentifizierung für meine Anwendung sicher ist.
Lösung
Deinem Benutzerpool einen SAML-IdP hinzufügen
Wenn du keinen Amazon Cognito-Benutzerpool hast, findest du weitere Informationen unter Erste Schritte mit Benutzerpools. Nachdem du deinen Benutzerpool erstellt hast, konfiguriere deine SAML-Anwendung auf der IdP-Seite. Informationen zum Hinzufügen eines SAML-IdP zu deinem Amazon Cognito-Benutzerpool findest du unter Hinzufügen und Verwalten von SAML-Identitätsanbietern in einem Benutzerpool.
Deinem SAML-IdP das Verschlüsselungszertifikat zur Verfügung stellen, um verschlüsselte SAML-Assertionen an Amazon Cognito zu senden
Lade zunächst das Verschlüsselungszertifikat von deiner Amazon Cognito-Konsole herunter. Importiere dann in der Konfigurationsoberfläche deines SAML-IdP das Verschlüsselungszertifikat. Anweisungen zum Importieren und Aktivieren des Verschlüsselungszertifikats findest du in der Dokumentation deines IdP. Weitere Informationen findest du beispielsweise unter Konfigurieren der Token-Verschlüsselung im Microsoft Entra Admin Center auf der Microsoft Learn-Website.
Verschlüsselten SAML-Assertionsfluss überprüfen
Führe die folgenden Schritte aus:
- Öffne die Entwickler-Tools deines Browsers und erstelle eine HTTP-Archivdatei (HAR).
- Navigiere zur verwalteten Anmeldeseite deines Amazon Cognito-Benutzerpools.
- Wähle SAML IdP aus. Amazon Cognito leitet dich zur Anmeldeseite des IdP weiter.
- Rufe in der HAR-Datei die SAML-Assertion-Anfrage ab, die dein IdP an den saml2/idpresponse-Endpunkt gesendet hat.
- Sieh dir in deinem Browser die SAML-Assertion-Antwort aus der HAR-Datei an.
Beispiel für eine dekodierte SAML-Antwort mit einer verschlüsselten SAML-Assertion:
<saml:EncryptedAssertion> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <xenc:EncryptedKey> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/> <xenc:CipherData> <xenc:CipherValue> <!-- Encrypted key data --> hY7PK8L9eM+2Uw7....[abbreviated]....4nmB2gTfLwqX= </xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue> <!-- Encrypted assertion data --> kB4urcHh7K5HHJ....[abbreviated]....8JpWGpfTj= </xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </saml:EncryptedAssertion>
Beispiel für eine dekodierte SAML-Antwort ohne Verschlüsselung:
<saml:Assertion ID="ASRT#########" Version="2.0" IssueInstant="2024-07-10T10:00:00Z"> <saml:Issuer>https://idp.example.com/saml</saml:Issuer> <saml:Subject> <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"> USER123456789 </saml:NameID> <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <saml:SubjectConfirmationData NotOnOrAfter="2024-07-10T11:00:00Z" Recipient="https://app.example.com/saml/acs"/> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions NotBefore="2024-07-10T10:00:00Z" NotOnOrAfter="2024-07-10T11:00:00Z"> <saml:AudienceRestriction> <saml:Audience>https://app.example.com/saml</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant="2024-07-10T10:00:00Z" SessionNotOnOrAfter="2024-07-10T18:00:00Z" SessionIndex="SESSION123456789"> <saml:AuthnContext> <saml:AuthnContextClassRef> urn:oasis:names:tc:SAML:2.0:ac:classes:Password </saml:AuthnContextClassRef> </saml:AuthnContext> </saml:AuthnStatement> <saml:AttributeStatement> <saml:Attribute Name="uid" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue>user123</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue>user@example.com</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="roles" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue>user</saml:AttributeValue> <saml:AttributeValue>admin</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion>
Hinweis: Das Element saml:EncryptedAssertion in der Antwort bestätigt, dass du eine verschlüsselte SAML-Assertion hast. Nur dein IdP kann Assertion-Inhalte mit dem richtigen privaten Schlüssel entschlüsseln und lesen. Wenn saml:EncryptedAssertion nicht in der Antwort enthalten ist, hast du eine unverschlüsselte SAML-Assertion, die Benutzer- und Authentifizierungsdetails im Klartext anzeigt.
Ähnliche Informationen
SAML-Identitätsanbieter mit einem Benutzerpool verwenden
So richtest du Amazon Cognito für die Verbundauthentifizierung mit Azure AD ein
SAML-Assertionen für die Authentifizierungsantwort konfigurieren
- Tags
- Amazon Cognito
- Sprache
- Deutsch
