Authentifizierung mit Amazon Cognito 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.

Authentifizierung mit Amazon Cognito Cognito-Benutzerpools

Amazon Cognito umfasst mehrere Methoden zur Authentifizierung Ihrer Benutzer. Alle Benutzerpools, unabhängig davon, ob Sie eine Domain haben oder nicht, können Benutzer in der Benutzerpool-API authentifizieren. Wenn Sie Ihrem Benutzerpool eine Domain hinzufügen, können Sie die Benutzerpool-Endpunkte verwenden. Die Benutzerpool-API unterstützt eine Vielzahl von Autorisierungsmodellen und Anforderungsabläufen für API-Anforderungen.

Um die Identität von Benutzern zu überprüfen, unterstützt Amazon Cognito Authentifizierungsabläufe, die zusätzlich zu Kennwörtern wie Einmalpasswörtern und Hauptschlüsseln für E-Mail- und SMS-Nachrichten auch Challenge-Typen beinhalten.

Implementieren Sie Authentifizierungsabläufe

Unabhängig davon, ob Sie eine verwaltete Anmeldung oder ein benutzerdefiniertes Anwendungs-Frontend mit einem AWS SDK für die Authentifizierung implementieren, müssen Sie Ihren App-Client für die Authentifizierungstypen konfigurieren, die Sie implementieren möchten. Die folgenden Informationen beschreiben die Einrichtung von Authentifizierungsabläufen in Ihren App-Clients und Ihrer Anwendung.

App client supported flows

Sie können unterstützte Flows für Ihre App-Clients in der Amazon Cognito Cognito-Konsole oder mit der API in einem AWS SDK konfigurieren. Nachdem Sie Ihren App-Client so konfiguriert haben, dass er diese Flows unterstützt, können Sie sie in Ihrer Anwendung bereitstellen.

Das folgende Verfahren konfiguriert die verfügbaren Authentifizierungsabläufe für einen App-Client mit der Amazon Cognito Cognito-Konsole.

So konfigurieren Sie einen App-Client für Authentifizierungsabläufe (Konsole)
  1. Melden Sie sich an AWS und navigieren Sie zur Amazon Cognito Cognito-Benutzerpools-Konsole. Wählen Sie einen Benutzerpool oder erstellen Sie einen neuen.

  2. Wählen Sie in Ihrer Benutzerpool-Konfiguration das Menü App-Clients aus. Wählen Sie einen App-Client oder erstellen Sie einen neuen.

  3. Wählen Sie unter App-Client-Informationen die Option Bearbeiten aus.

  4. Wählen Sie unter App-Client-Flows die Authentifizierungsabläufe aus, die Sie unterstützen möchten.

So konfigurieren Sie einen App-Client für Authentifizierungsabläufe (API/SDK)

Um verfügbare Authentifizierungsabläufe für einen App-Client mit der Amazon Cognito Cognito-API zu konfigurieren, legen Sie den Wert von ExplicitAuthFlows in einer CreateUserPoolClientUpdateUserPoolClientOR-Anfrage fest. Im Folgenden finden Sie ein Beispiel, das einem Client ein sicheres Remote-Passwort (SRP) und eine wahlbasierte Authentifizierung bereitstellt.

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH", "ALLOW_USER_SRP_AUTH ]

Wenn Sie vom App-Client unterstützte Flows konfigurieren, können Sie die folgenden Optionen und API-Werte angeben.

Unterstützung für App-Client-Flows
Authentifizierungsfluss Kompatibilität Konsole API
Wahlbasierte Authentifizierung Serverseitig, clientseitig Wählen Sie bei der Anmeldung einen Authentifizierungstyp ALLOW_USER_AUTH
Melden Sie sich mit dauerhaften Passwörtern an Clientseitig Melden Sie sich mit Benutzername und Passwort an ALLOW_USER_PASSWORD_AUTH
Melden Sie sich mit dauerhaften Passwörtern und sicherer Payload an Serverseitig, clientseitig Melden Sie sich mit einem sicheren Remote-Passwort (SRP) an ALLOW_USER_SRP_AUTH
Tokens aktualisieren Serverseitig, clientseitig Rufen Sie neue Benutzertoken aus vorhandenen authentifizierten Sitzungen ab ALLOW_REFRESH_TOKEN_AUTH
Serverseitige Authentifizierung Serverseitig Melden Sie sich mit serverseitigen Administratoranmeldedaten an ALLOW_ADMIN_USER_PASSWORD_AUTH
Benutzerdefinierte Authentifizierung Serverseitige und clientseitige maßgeschneiderte Anwendungen. Nicht kompatibel mit verwalteter Anmeldung. Melden Sie sich mit benutzerdefinierten Authentifizierungsabläufen von Lambda-Triggern an ALLOW_CUSTOM_AUTH
Implement flows in your application

Die verwaltete Anmeldung macht Ihre konfigurierten Authentifizierungsoptionen automatisch auf Ihren Anmeldeseiten verfügbar. Starten Sie in maßgeschneiderten Anwendungen die Authentifizierung mit einer Deklaration des ursprünglichen Ablaufs.

Wenn Sie Benutzer anmelden, muss der Text Ihrer InitiateAuthAdminInitiateAuthPR-Anforderung einen AuthFlow Parameter enthalten.

Wahlbasierte Authentifizierung:

"AuthFlow": "USER_AUTH"

Client-basierte Authentifizierung mit SRP:

"AuthFlow": "USER_SRP_AUTH"

Wissenswertes zur Authentifizierung mit Benutzerpools

Berücksichtigen Sie bei der Gestaltung Ihres Authentifizierungsmodells mit Amazon Cognito Cognito-Benutzerpools die folgenden Informationen.

Die Authentifizierung erfolgt über die verwaltete Anmeldung und die gehostete Benutzeroberfläche

Die verwaltete Anmeldung und die klassische gehostete Benutzeroberfläche bieten unterschiedliche Authentifizierungsoptionen. Bei der verwalteten Anmeldung können Sie nur eine passwortlose Authentifizierung und eine Authentifizierung mit Passkey durchführen.

Benutzerdefinierte Authentifizierungsabläufe sind nur bei der SDK-Authentifizierung verfügbar AWS

Sie können keine benutzerdefinierten Authentifizierungsabläufe oder eine benutzerdefinierte Authentifizierung mit Lambda-Triggern, mit verwalteter Anmeldung oder der klassischen gehosteten Benutzeroberfläche durchführen. Die benutzerdefinierte Authentifizierung ist in der Authentifizierung mit AWS SDKs verfügbar.

Verwaltete Anmeldung für die Anmeldung mit einem externen Identitätsanbieter (IdP)

Sie können Benutzer nicht über die IdPsDrittanbieter-Authentifizierung mit anmelden. AWS SDKs Sie müssen die verwaltete Anmeldung oder die klassische gehostete Benutzeroberfläche implementieren IdPs, zu der Sie weiterleiten und das resultierende Authentifizierungsobjekt dann mit OIDC-Bibliotheken in Ihrer Anwendung verarbeiten. Weitere Informationen zur verwalteten Anmeldung finden Sie unter. Vom Benutzerpool verwaltete Anmeldung

Auswirkung der kennwortlosen Authentifizierung auf andere Benutzerfunktionen

Die Aktivierung der kennwortlosen Anmeldung mit Einmalkennwörtern oder Hauptschlüsseln in Ihrem Benutzerpool und App-Client wirkt sich auf die Benutzererstellung und Migration aus. Wenn die passwortlose Anmeldung aktiv ist:

  1. Administratoren können Benutzer ohne Passwörter erstellen. Die Standardvorlage für Einladungsnachrichten wurde dahingehend geändert, dass sie den {###} Passwort-Platzhalter nicht mehr enthält. Weitere Informationen finden Sie unter Erstellen von Benutzerkonten als Administrator.

  2. Bei SDK-basierten SignUpVorgängen müssen Benutzer bei der Registrierung kein Passwort angeben. Für die verwaltete Anmeldung und die gehostete Benutzeroberfläche ist ein Passwort auf der Anmeldeseite erforderlich, auch wenn die kennwortlose Authentifizierung zulässig ist. Weitere Informationen finden Sie unter Registrieren und Bestätigen von Benutzerkonten.

  3. Aus einer CSV-Datei importierte Benutzer können sich sofort mit passwortlosen Optionen anmelden, ohne dass das Passwort zurückgesetzt werden muss, wenn ihre Attribute eine E-Mail-Adresse oder Telefonnummer für eine verfügbare passwortlose Anmeldeoption enthalten. Weitere Informationen finden Sie unter Importieren von Benutzern aus einer CSV-Datei in Benutzerpools.

  4. Bei der kennwortlosen Authentifizierung wird der Lambda-Trigger für die Benutzermigration nicht aufgerufen.

  5. Benutzer, die sich mit einem kennwortlosen First Factor anmelden, können ihrer Sitzung keinen MFA-Faktor (Multi-Factor Authentication) hinzufügen. Nur kennwortbasierte Authentifizierungsabläufe unterstützen MFA.

Die Partei, auf die der Passkey angewiesen ist, URLs darf nicht auf der Liste der öffentlichen Suffixe stehen

Sie können Domainnamen, die Sie besitzenwww.example.com, z. B. als RP-ID (Relying Party) in Ihrer Hauptschlüsselkonfiguration verwenden. Diese Konfiguration soll maßgeschneiderte Anwendungen unterstützen, die auf Domänen ausgeführt werden, deren Eigentümer Sie sind. Die öffentliche Suffixliste (PSL) enthält geschützte Domänen auf hoher Ebene. Amazon Cognito gibt einen Fehler zurück, wenn Sie versuchen, Ihre RP-URL auf eine Domain auf der PSL festzulegen.

Dauer der Authentifizierungssitzung

Abhängig von den Funktionen Ihres Benutzerpools können Sie am Ende auf mehrere Herausforderungen reagierenInitiateAuth, RespondToAuthChallenge bevor Ihre App Token von Amazon Cognito abruft. Amazon Cognito fügt in der Antwort auf jede Anforderung eine Sitzungszeichenfolge ein. Wenn Sie Ihre API-Anforderungen zu einem Authentifizierungsfluss kombinieren möchten, fügen Sie die Sitzungszeichenfolge aus der Antwort auf die vorherige Anforderung in jede nachfolgende Anforderung ein. Standardmäßig haben Ihre Benutzer für den Abschluss einer Abfrage drei Minuten Zeit, bevor die Sitzungszeichenfolge abläuft. Wenn Sie diesen Zeitraum anpassen möchten, ändern Sie Ihren App-Client Authentication flow session duration (Dauer der Authentifizierungsablaufsitzung). Im folgenden Verfahren wird beschrieben, wie diese Einstellung in Ihrer App-Client-Konfiguration geändert wird.

Anmerkung

Die Einstellungen für die Dauer der Sitzung zum Authentifizierungsablauf gelten für die Authentifizierung mit der Amazon-Cognito-Benutzerpool-API. Bei der verwalteten Anmeldung wird die Sitzungsdauer für die Multi-Faktor-Authentifizierung auf 3 Minuten und für Codes zum Zurücksetzen von Passwörtern auf 8 Minuten festgelegt.

Amazon Cognito console
So konfigurieren Sie die Dauer der Authentifizierungsablaufsitzung des App-Clients (AWS Management Console)
  1. Wählen Sie auf der Registerkarte App integration (App-Integration) in Ihrem Benutzerpool den Namen Ihres App-Clients aus dem Container App clients and analytics (App-Clients und Analytik) aus.

  2. Wählen Sie Bearbeiten im Container App-Client-Informationen aus.

  3. Ändern Sie den Wert Authentication flow session duration (Dauer der Authentifizierungsablaufsitzung) auf die Gültigkeitsdauer (in Minuten), die Sie für SMS-MFA-Codes wünschen. Damit ändert sich auch die Zeit, die einem Benutzer zur Verfügung steht, um eine Authentifizierungsabfrage in Ihrem App-Client abzuschließen.

  4. Wählen Sie Änderungen speichern.

User pools API
So konfigurieren Sie die Dauer der Authentifizierungsablaufsitzung (Amazon-Cognito-API)
  1. Bereiten Sie eine UpdateUserPoolClient-Anfrage mit Ihren vorhandenen Benutzerpool-Einstellungen aufgrund einer DescribeUserPoolClient-Anfrage vor. Ihre UpdateUserPoolClient-Anfrage muss alle vorhandenen App-Client-Eigenschaften enthalten.

  2. Ändern Sie den AuthSessionValidity-Wert auf die Gültigkeitsdauer (in Minuten), die Sie für SMS-MFA-Codes wünschen. Damit ändert sich auch die Zeit, die einem Benutzer zur Verfügung steht, um eine Authentifizierungsabfrage in Ihrem App-Client abzuschließen.

Weitere Informationen zu App-Clients finden Sie unter Anwendungsspezifische Einstellungen mit App-Clients.

Sperrverhalten bei fehlgeschlagenen Anmeldeversuchen

Nach fünf fehlgeschlagenen Anmeldeversuchen (ohne Authentifizierung oder mit IAM-Authentifizierung) mit einem Passwort sperrt Amazon Cognito den Benutzer eine Sekunde lang. Die Sperrdauer verdoppelt sich dann nach jedem weiteren fehlgeschlagenen Versuch bis zu einer maximalen Dauer von ca. 15 Minuten. Anmeldeversuche während einer Sperrperiode führen zu einer Ausnahme Password attempts exceeded und wirken sich nicht auf die Dauer nachfolgender Sperrperioden aus. Bei einer kumulativen Anzahl fehlgeschlagener Anmeldeversuche n, Ausnahmen Password attempts exceeded nicht eingeschlossen, sperrt Amazon Cognito Ihren Benutzer für 2^(n-5) Sekunden. Um die Sperre zurückzusetzen (n=0), muss sich Ihr Benutzer danach entweder erfolgreich anmelden oder darf 15 Minuten lang keine Anmeldeversuche unternehmen. Änderungen an diesem Verhalten sind vorbehalten. Dieses Verhalten gilt nicht für benutzerdefinierte Challenges, es sei denn, diese führen auch eine passwortbasierte Authentifizierung durch.

Ein Beispiel für eine Authentifizierungssitzung

Das folgende Diagramm und die folgende step-by-step Anleitung veranschaulichen ein typisches Szenario, in dem sich ein Benutzer bei einer Anwendung anmeldet. In der Beispielanwendung stehen einem Benutzer mehrere Anmeldeoptionen zur Verfügung. Sie wählen eine aus, indem sie ihre Anmeldeinformationen eingeben, einen zusätzlichen Authentifizierungsfaktor angeben und sich anmelden.

Ein Flussdiagramm, das eine Anwendung zeigt, die einen Benutzer zur Eingabe auffordert und ihn mit einem AWS SDK anmeldet.

Stellen Sie sich eine Anwendung mit einer Anmeldeseite vor, auf der sich Benutzer mit einem Benutzernamen und einem Passwort anmelden, in einer E-Mail-Nachricht einen Einmalcode anfordern oder eine Fingerabdruckoption wählen können.

  1. Anmeldeaufforderung: Ihre Anwendung zeigt einen Startbildschirm mit einer Anmeldeschaltfläche.

  2. Anmeldung anfordern: Der Benutzer wählt Anmelden aus. Aus einem Cookie oder einem Cache ruft Ihre Anwendung ihren Benutzernamen ab oder fordert sie auf, ihn einzugeben.

  3. Anforderungsoptionen: Ihre Anwendung fordert die Anmeldeoptionen des Benutzers mit einer InitiateAuth API-Anfrage im USER_AUTH Flow an, in der die verfügbaren Anmeldemethoden für den Benutzer angefordert werden.

  4. Anmeldeoptionen senden: Amazon Cognito antwortet mit PASSWORDEMAIL_OTP, und. WEB_AUTHN Die Antwort enthält eine Sitzungs-ID, die Sie in der nächsten Antwort erneut abspielen können.

  5. Anzeigeoptionen: Ihre Anwendung zeigt Benutzeroberflächenelemente an, mit denen der Benutzer seinen Benutzernamen und sein Passwort eingeben, einen Einmalcode abrufen oder seinen Fingerabdruck scannen kann.

  6. Wählen Sie Option/Anmeldeinformationen eingeben: Der Benutzer gibt seinen Benutzernamen und sein Passwort ein.

  7. Authentifizierung einleiten: Ihre Anwendung stellt die Anmeldeinformationen des Benutzers mit einer RespondToAuthChallenge API-Anfrage zur Verfügung, die die Anmeldung mit Benutzername/Passwort bestätigt und den Benutzernamen und das Passwort bereitstellt.

  8. Anmeldeinformationen validieren: Amazon Cognito bestätigt die Anmeldeinformationen des Benutzers.

  9. Zusätzliche Herausforderung: Der Benutzer verfügt über eine Multi-Faktor-Authentifizierung, die mit einer Authenticator-App konfiguriert ist. Amazon Cognito gibt eine SOFTWARE_TOKEN_MFA Herausforderung zurück.

  10. Aufforderung zur Aufforderung: In Ihrer Anwendung wird ein Formular angezeigt, in dem ein zeitbasiertes Einmalkennwort (TOTP) von der Authenticator-App des Benutzers angefordert wird.

  11. Herausforderung beantworten: Der Benutzer reicht das TOTP ein.

  12. Auf die Herausforderung antworten: In einer anderen RespondToAuthChallenge Anfrage stellt Ihre Anwendung das TOTP des Benutzers bereit.

  13. Challenge-Antwort validieren: Amazon Cognito bestätigt den Code des Benutzers und stellt fest, dass Ihr Benutzerpool so konfiguriert ist, dass er keine zusätzlichen Herausforderungen an den aktuellen Benutzer ausgibt.

  14. Token ausgeben: Amazon Cognito gibt ID-, Zugriffs- und Aktualisierungs-JSON-Webtoken (JWTs) zurück. Die Erstauthentifizierung des Benutzers ist abgeschlossen.

  15. Token speichern: Ihre Anwendung speichert die Token des Benutzers im Cache, sodass sie auf Benutzerdaten verweisen, den Zugriff auf Ressourcen autorisieren und Token aktualisieren kann, wenn sie ablaufen.

  16. Autorisierte Inhalte rendern: Ihre Anwendung bestimmt anhand ihrer Identität und Rollen den Zugriff des Benutzers auf Ressourcen und stellt Anwendungsinhalte bereit.

  17. Zugriff auf Inhalte: Der Benutzer ist angemeldet und beginnt, die Anwendung zu verwenden.

  18. Inhalt mit abgelaufenem Token anfordern: Später fordert der Benutzer eine Ressource an, für die eine Autorisierung erforderlich ist. Das zwischengespeicherte Token des Benutzers ist abgelaufen.

  19. Aktualisierungstoken: Ihre Anwendung stellt eine InitiateAuth Anfrage mit dem gespeicherten Aktualisierungstoken des Benutzers.

  20. Token ausgeben: Amazon Cognito gibt eine neue ID und einen neuen Zugriff JWTs zurück. Die Sitzung des Benutzers wird ohne zusätzliche Aufforderung zur Eingabe von Anmeldeinformationen sicher aktualisiert.

Sie können AWS Lambda Trigger verwenden, um die Art und Weise, wie sich Benutzer authentifizieren, anzupassen. Diese Auslöser geben ihre eigenen Eingabeaufforderungen im Rahmen des Authentifizierungsablaufs aus und überprüfen sie.

Sie können auch den Admin-Authentifizierungsablauf für sichere Backend-Server verwenden. Sie können den Authentifizierungsablauf für die Benutzermigration verwenden, um die Benutzermigration zu ermöglichen, ohne dass Ihre Benutzer ihre Passwörter zurücksetzen müssen.