View a markdown version of this page

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

Authentifizierung mit Amazon Cognito-Benutzerpools

Amazon Cognito umfasst mehrere Methoden zur Authentifizierung Ihrer Benutzer. Benutzer können sich mit WebAuthn Passwörtern und Hauptschlüsseln anmelden. Amazon Cognito kann ihnen ein Einmalpasswort in einer E-Mail- oder SMS-Nachricht senden. Sie können Lambda-Funktionen implementieren, die Ihre eigene Abfolge von Herausforderungen und Reaktionen orchestrieren. Dies sind Authentifizierungsabläufe. In Authentifizierungsabläufen geben Benutzer ein Geheimnis an, und Amazon Cognito überprüft das Geheimnis und gibt dann JSON-Web-Tokens (JWTs) aus, damit Anwendungen sie mit OIDC-Bibliotheken verarbeiten können. In diesem Kapitel werden wir darüber sprechen, wie Sie Ihre Benutzerpools und App-Clients für verschiedene Authentifizierungsabläufe in verschiedenen Anwendungsumgebungen konfigurieren. Sie erfahren mehr über die Optionen für die Verwendung der gehosteten Anmeldeseiten der verwalteten Anmeldung und für den Aufbau Ihrer eigenen Logik und Ihres eigenen Frontends in einem AWS SDK.

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.

Zur Überprüfung der Identität von Benutzern unterstützt Amazon Cognito Authentifizierungsabläufe, die neben Passwörtern wie Einmalpasswörtern für E-Mail- und SMS-Nachrichten und Hauptschlüsseln auch Fragetypen 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-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 verfügbare Authentifizierungsabläufe für einen App-Client mit der Amazon Cognito-Konsole.

Um einen App-Client für Authentifizierungsabläufe zu konfigurieren (Konsole)
  1. Melden Sie sich bei der Amazon Cognito-Benutzerpools-Konsole an AWS und navigieren Sie zur Amazon 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.

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

Um verfügbare Authentifizierungsabläufe für einen App-Client mit der Amazon Cognito-API zu konfigurieren, legen Sie den Wert von ExplicitAuthFlows in einer CreateUserPoolClient UpdateUserPoolClient OR-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
Choice-basedAuthentifizierung Server-side, clientseitig Wählen Sie bei der Anmeldung einen Authentifizierungstyp aus ALLOW_USER_AUTH
Sign-in mit persistenten Passwörtern Client-side Loggen Sie sich mit Benutzername und Passwort ein ALLOW_USER_PASSWORD_AUTH
Sign-in mit persistenten Passwörtern und sicherer Nutzlast Server-side, clientseitig Melden Sie sich mit einem sicheren Remote-Passwort (SRP) an ALLOW_USER_SRP_AUTH
Tokens aktualisieren Server-side, clientseitig Holen Sie sich neue Benutzertoken aus vorhandenen authentifizierten Sitzungen ALLOW_REFRESH_TOKEN_AUTH
Server-side Authentifizierung Server-side Melden Sie sich mit serverseitigen Administratoranmeldeinformationen an ALLOW_ADMIN_USER_PASSWORD_AUTH
Benutzerdefinierte Authentifizierung Server-side und kundenspezifische kundenspezifische Anwendungen. Nicht kompatibel mit verwalteter Anmeldung. Melden Sie sich mit benutzerdefinierten Authentifizierungsabläufen über Lambda-Trigger an ALLOW_CUSTOM_AUTH
Implement flows in your application

Die verwaltete Anmeldung macht Ihre konfigurierten Authentifizierungsoptionen automatisch auf Ihren Sign-Seiten verfügbar. In maßgeschneiderten Anwendungen beginnen Sie die Authentifizierung mit einer Deklaration des anfänglichen Ablaufs.

Wenn Sie Benutzer anmelden, muss der Text Ihrer AdminInitiateAuth Anfrage InitiateAuth oder einen AuthFlow Parameter enthalten.

Choice-based Authentifizierung:

"AuthFlow": "USER_AUTH"

Client-based Authentifizierung mit SRP:

"AuthFlow": "USER_SRP_AUTH"

Wissenswertes zur Authentifizierung mit Benutzerpools

Beachten Sie beim Entwurf Ihres Authentifizierungsmodells mit Amazon Cognito-Benutzerpools die folgenden Informationen.

Die Authentifizierung erfolgt in der verwalteten Anmeldung und in der gehosteten Benutzeroberfläche

Die verwaltete Anmeldung bietet mehr Authentifizierungsoptionen als die klassische gehostete Benutzeroberfläche. Beispielsweise können Benutzer die kennwortlose Authentifizierung und die Hauptschlüsselauthentifizierung nur bei verwalteter Anmeldung durchführen.

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

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

Verwaltete Anmeldung für die Anmeldung durch einen externen Identitätsanbieter (IdP)

Bei der Authentifizierung mit AWS SDKs können Sie Benutzer nicht über Drittanbieter IdPs anmelden. Sie müssen die verwaltete Anmeldung oder die klassische gehostete Benutzeroberfläche implementieren IdPs, zu Ihrer Anwendung umleiten und das resultierende Authentifizierungsobjekt dann mit den OIDC-Bibliotheken 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 kennwortlose Anmeldung aktiv ist:

  1. Administratoren können Benutzer ohne Passwörter erstellen. Die Standardvorlage für Einladungsnachrichten enthält nun nicht mehr den Platzhalter für das {###} Passwort. Weitere Informationen finden Sie unter Erstellen von Benutzerkonten als Administrator.

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

  3. Benutzer, die aus einer CSV-Datei importiert wurden, 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 passwortlosen Authentifizierung wird der Lambda-Trigger für die Benutzermigration nicht aufgerufen. Lambda-Auslöser für die Benutzermigration.

  5. Benutzer, die sich mit einem Einmalpasswort (OTP) anmelden, können ihrer Sitzung keinen Faktor für die Mehrfaktorauthentifizierung (MFA) hinzufügen. Passwörter mit Benutzerüberprüfung können die MFA-Anforderungen erfüllen, wenn sie mit konfiguriert sind. MULTI_FACTOR_WITH_USER_VERIFICATION

URLs von Drittanbietern, die sich auf Passkeys verlassen, dürfen nicht auf der Liste der öffentlichen Suffixe stehen

Sie können beispielsweise Domainnamen, die Sie besitzenwww.example.com, als RP-ID (Relying Party) in Ihrer Hauptschlüsselkonfiguration verwenden. Diese Konfiguration soll benutzerdefinierte Anwendungen unterstützen, die auf Domänen ausgeführt werden, die Sie besitzen. 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 des Ablaufs der Authentifikationssitzung

Je nach den Funktionen Ihres Benutzerpools können Sie am Ende auf mehrere Herausforderungen reagierenInitiateAuth, RespondToAuthChallenge bevor Ihre App Tokens 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 mehrstufige Authentifizierung auf 3 Minuten und für Codes zum Zurücksetzen des Passworts auf 8 Minuten festgelegt.

Amazon Cognito console
So konfigurieren Sie die Sitzungsdauer für den App-Client-Authentifizierungsablauf (AWS-Managementkonsole)
  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 für die Dauer der Sitzung im Authentifizierungsfluss auf die gewünschte Gültigkeitsdauer in Minuten für SMS- und E-Mail-MFA-Codes. 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 aus.

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 mit dem Passwort eines Benutzers, unabhängig davon, ob diese mit nicht authentifizierten oder IAM-authorized API-Vorgängen angefordert werden, sperrt Amazon Cognito Ihren Benutzer für eine Sekunde. 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 schrittweise Anleitung veranschaulichen ein typisches Szenario, in dem sich ein Benutzer bei einer Anwendung anmeldet. Die Beispielanwendung bietet einem Benutzer mehrere Anmeldeoptionen. 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, einen Einmalcode in einer E-Mail-Nachricht anfordern oder eine Fingerabdruckoption wählen können.

  1. Sign-in Eingabeaufforderung: 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 ihn auf, ihn einzugeben.

  3. Anforderungsoptionen: Ihre Anwendung fordert die Anmeldeoptionen des Benutzers mit einer InitiateAuth API-Anfrage mit dem USER_AUTH Flow an und fordert die verfügbaren Anmeldemethoden für den Benutzer an.

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

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

  6. option/Enter Anmeldedaten wählen: Der Benutzer gibt seinen Benutzernamen und sein Passwort ein.

  7. Authentifizierung einleiten: Ihre Anwendung stellt den Anmeldeinformationen des Benutzers eine 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 Multifaktor-Authentifizierung, die mit einer Authentifikator-App konfiguriert ist. Amazon Cognito gibt eine Herausforderung zurück. SOFTWARE_TOKEN_MFA

  10. Aufforderung zur Herausforderung: Ihre Anwendung zeigt ein Formular an, in dem Sie von der Authentifikator-App des Benutzers ein zeitbasiertes Einmalkennwort (TOTP) anfordern.

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

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

  13. Antwort auf die Herausforderung validieren: Amazon Cognito bestätigt den Code des Benutzers und stellt fest, dass Ihr Benutzerpool so konfiguriert ist, dass keine weiteren Anfragen an den aktuellen Benutzer gesendet werden.

  14. Token ausgeben: Amazon Cognito gibt JSON-Web-Tokens (JWTs) für ID, Zugriff und Aktualisierung 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 den Zugriff des Benutzers auf Ressourcen auf der Grundlage seiner Identität und Rollen und stellt Anwendungsinhalte bereit.

  17. Auf Inhalte zugreifen: 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. Tokens ausgeben: Amazon Cognito gibt eine neue ID zurück und greift auf JWTs zu. Die Sitzung des Benutzers wird sicher aktualisiert, ohne dass zusätzliche Aufforderungen zur Eingabe von Anmeldeinformationen erforderlich sind.

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.