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.
Ablauf der Authentifizierung in Benutzerpools
Amazon Cognito umfasst mehrere Methoden zur Authentifizierung Ihrer Benutzer. Alle Benutzerpools, unabhängig davon, ob Sie eine Domäne haben oder nicht, können Benutzer in den Benutzerpools API authentifizieren. Wenn Sie Ihrem Benutzerpool eine Domain hinzufügen, können Sie die Benutzerpool-Endpunkte verwenden. Die Benutzerpools API unterstützen eine Vielzahl von Autorisierungsmodellen und Anforderungsabläufen für API Anfragen.
Zur Überprüfung der Identität von Benutzern unterstützt Amazon Cognito Authentifizierungsabläufe, die zusätzlich zu Passwörtern neue Aufforderungstypen beinhalten. Die Amazon Cognito Cognito-Authentifizierung erfordert in der Regel, dass Sie zwei API Vorgänge in der folgenden Reihenfolge implementieren:
Ein Benutzer führt die Authentifizierung durch Beantwortung aufeinanderfolgender Eingabeaufforderungen durch, bis die Authentifizierung entweder fehlschlägt oder Amazon Cognito Token für den Benutzer ausgestellt. Sie können diese Schritte mit Amazon Cognito in einem Prozess wiederholen, der verschiedene Aufforderungen zur Unterstützung benutzerdefinierter Authentifizierungsabläufe beinhaltet.
In der Regel generiert Ihre App eine Aufforderung, Informationen von Ihrem Benutzer zu sammeln, und sendet diese Informationen in einer API Anfrage an Amazon Cognito. Stellen Sie sich einen InitiateAuth
Ablauf in einem Benutzerpool vor, in dem Sie Ihren Benutzer mit Multi-Faktor-Authentifizierung () konfiguriert haben. MFA
-
Ihre App fordert den Benutzer zur Eingabe des Benutzernamens und des Passworts auf.
-
Sie fügen den Benutzernamen und das Passwort als Parameter in
InitiateAuth
ein. -
Amazon Cognito gibt eine
SMS_MFA
-Abfrage und eine Sitzungskennung zurück. -
Ihre App fordert Ihren Benutzer auf, den MFA Code von seinem Telefon einzugeben.
-
Sie fügen diesen Code und die Sitzungskennung in die
RespondToAuthChallenge
-Anforderung ein.
Abhängig von den Funktionen Ihres Benutzerpools können Sie am Ende auf verschiedene Abfragen von InitiateAuth
reagieren, bevor Ihre App Token von Amazon Cognito abruft. Amazon Cognito fügt in der Antwort auf jede Anforderung eine Sitzungszeichenfolge ein. Um Ihre API Anfragen zu einem Authentifizierungsablauf zusammenzufassen, fügen Sie die Sitzungszeichenfolge aus der Antwort auf die vorherige Anfrage in jede nachfolgende Anfrage 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 Sitzungsdauer des Authentifizierungsflusses gelten für die Authentifizierung mit den Amazon Cognito Cognito-BenutzerpoolsAPI. Die von Amazon Cognito gehostete Benutzeroberfläche legt die Sitzungsdauer für die Multi-Faktor-Authentifizierung auf 3 Minuten und für Codes zum Zurücksetzen des Passworts auf 8 Minuten fest.
Weitere Informationen zu App-Clients finden Sie unter Anwendungsspezifische Einstellungen mit App-Clients.
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. Mit dem Authentifizierungsablauf für die Benutzermigration können Sie die Migration von Benutzern ermöglichen, ohne dass Ihre Benutzer ihre Passwörter zurücksetzen müssen.
Sperrverhalten von Amazon Cognito bei fehlgeschlagenen Anmeldeversuchen
Nach fünf fehlgeschlagenen, nicht authentifizierten oder IAM -authentifizierten Anmeldeversuchen mit einem Passwort 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.
Themen
- Clientseitiger Authentifizierungsablauf
- Serverseitiger Authentifizierungsablauf
- Benutzerdefinierter Authentifizierungsablauf
- Integrierter Authentifizierungsablauf und Aufforderungen
- Benutzerdefinierter Authentifizierungsablauf und Aufforderungen
- Verwenden Sie die SRP Passwortverifizierung im benutzerdefinierten Authentifizierungsablauf
- Ablauf der Administratorauthentifizierung
- Ablauf der Authentifizierung für die Benutzermigration
Clientseitiger Authentifizierungsablauf
Der folgende Vorgang funktioniert für clientseitige Benutzer-Apps, die Sie mit oder dem erstellen. AWS AmplifyAWS SDKs
-
Der Benutzer gibt den Benutzernamen und das Passwort in der App ein.
-
Die App ruft den
InitiateAuth
Vorgang mit dem Nutzernamen und den Angaben zum Secure Remote Password (SRP) auf.Dieser API Vorgang gibt die Authentifizierungsparameter zurück.
Anmerkung
Die App generiert SRP Details mit den integrierten Amazon Cognito SRP Cognito-Funktionen. AWS SDKs
-
Die App ruft die
RespondToAuthChallenge
-Operation auf. Wenn der Aufruf erfolgreich ist, gibt Amazon Cognito die Token des Benutzers zurück. Damit ist der Authentifizierungsablauf abgeschlossen.Wenn Amazon Cognito eine weitere Abfrage erfordert, gibt der Aufruf von
RespondToAuthChallenge
keine Token zurück. Stattdessen gibt der Aufruf eine Sitzung zurück. -
Wenn eine Sitzung
RespondToAuthChallenge
zurückgegeben wird, ruft die AppRespondToAuthChallenge
erneut auf, diesmal mit der Sitzung und der Challenge-Antwort (z. B. MFA Code).
Serverseitiger Authentifizierungsablauf
Wenn Sie keine Benutzer-App haben, sondern stattdessen ein sicheres Backend oder eine serverseitige Java-, Ruby- oder Node.js- App verwenden, können Sie die authentifizierte serverseitige App API für Amazon Cognito Cognito-Benutzerpools verwenden.
Für serverseitige Apps ist die Benutzerpoolauthentifizierung mit der Authentifizierung für clientseitige Apps vergleichbar, mit Ausnahme von Folgendem:
-
Die serverseitige App ruft den Vorgang auf (anstelle von).
AdminInitiateAuth
APIInitiateAuth
Für diesen Vorgang sind AWS Anmeldeinformationen mit Berechtigungen wiecognito-idp:AdminInitiateAuth
undcognito-idp:AdminRespondToAuthChallenge
erforderlich. Die Operation gibt die erforderlichen Authentifizierungsparameter zurück. -
Nachdem die serverseitige App über die Authentifizierungsparameter verfügt, ruft sie den
AdminRespondToAuthChallenge
API Vorgang (anstelle vonRespondToAuthChallenge
) auf. DerAdminRespondToAuthChallenge
API Vorgang ist nur erfolgreich, wenn Sie Anmeldeinformationen angeben AWS .
Weitere Informationen zum Signieren von Amazon Cognito API Cognito-Anfragen mit AWS Anmeldeinformationen finden Sie unter Signaturprozess für Signature Version 4 in der AWS Allgemeinen Referenz.
Bei den AdminRespondToAuthChallenge
API Vorgängen AdminInitiateAuth
und können keine username-and-password Benutzeranmeldedaten für die Admin-Anmeldung akzeptiert werden, es sei denn, Sie ermöglichen ihnen ausdrücklich, dies auf eine der folgenden Arten zu tun:
-
Nehmen Sie
ALLOW_ADMIN_USER_PASSWORD_AUTH
(ehemals alsADMIN_NO_SRP_AUTH
bezeichnet) in den ParameterExplicitAuthFlow
beim Aufrufen vonCreateUserPoolClient
oderUpdateUserPoolClient
auf. -
Fügen Sie
ALLOW_ADMIN_USER_PASSWORD_AUTH
der Liste der Authentifizierungsabläufe für Ihren App-Client hinzu. Konfigurieren Sie App-Clients auf dem Tab App integration (App-Integration) in Ihrem Benutzerpool unter App clients and analytics (App-Clients und Analytik). Weitere Informationen finden Sie unter Anwendungsspezifische Einstellungen mit App-Clients.
Benutzerdefinierter Authentifizierungsablauf
Amazon Cognito Cognito-Benutzerpools ermöglichen auch die Verwendung benutzerdefinierter Authentifizierungsabläufe, mit deren Hilfe Sie mithilfe von Triggern ein Challenge/Response-basiertes Authentifizierungsmodell erstellen können. AWS Lambda
Der benutzerdefinierte Authentifizierungsfluss ermöglicht kundenspezifische Aufforderungs- und Antwortzyklen, um unterschiedliche Anforderungen zu erfüllen. Der Ablauf beginnt mit einem Aufruf des InitiateAuth
API Vorgangs, der den zu verwendenden Authentifizierungstyp angibt und alle anfänglichen Authentifizierungsparameter bereitstellt. Amazon Cognito antwortet auf den InitiateAuth
-Aufruf mit einer der folgenden Arten von Informationen:
-
Mit einer Aufforderung für den Benutzer sowie einer Sitzung und Parametern.
-
Mit einem Fehler, wenn der Benutzer nicht authentifiziert werden konnte
-
Mit einem ID-, Zugriffs- und Aktualisierungstoken, wenn die angegebenen Parameter im
InitiateAuth
-Aufruf ausreichen, um den Benutzer anzumelden. (Normalerweise muss der Benutzer oder die App zuerst eine Herausforderung beantworten, aber Ihr benutzerdefinierter Code muss dies bestimmen.)
Wenn Amazon Cognito auf den InitiateAuth
-Aufruf mit einer Aufforderung antwortet, sammelt die App weitere Eingaben und ruft die RespondToAuthChallenge
-Operation auf. Dieser Aufruf liefert die Antworten auf die Aufforderungen und gibt sie an die Sitzung zurück. Amazon Cognito reagiert auf den RespondToAuthChallenge
-Aufruf ähnlich wie auf den InitiateAuth
-Aufruf. Wenn sich der Benutzer angemeldet hat, stellt Amazon Cognito Token bereit. Wenn der Benutzer hingegen nicht angemeldet ist, zeigt Amazon Cognito eine weitere Aufforderung oder einen Fehler an. Wenn Amazon Cognito eine weitere Aufforderung zurückgibt, wiederholt sich die Sequenz und die App ruft RespondToAuthChallenge
auf, bis sich der Benutzer erfolgreich angemeldet hat oder ein Fehler angezeigt wird. Weitere Informationen zu den RespondToAuthChallenge
API Operationen InitiateAuth
und finden Sie in der APIDokumentation.
Integrierter Authentifizierungsablauf und Aufforderungen
Amazon Cognito enthält integrierte AuthFlow
ChallengeName
Werte, sodass ein Standardauthentifizierungsablauf einen Benutzernamen und ein Passwort über das Secure Remote Password (SRP) -Protokoll validieren kann. AWS SDKsSie haben in Amazon Cognito integrierte Unterstützung für diese Flows.
Der Flow beginnt mit dem Senden von USER_SRP_AUTH
als AuthFlow
an InitiateAuth
. Sie können auch USERNAME
- und SRP_A
-Werte in AuthParameters
senden. Wenn der InitiateAuth
-Aufruf erfolgreich ist, enthält die Antwort PASSWORD_VERIFIER
als ChallengeName
und SRP_B
in den Herausforderungsparametern. Die App ruft dann RespondToAuthChallenge
mit dem PASSWORD_VERIFIER
ChallengeName
und den erforderlichen Parametern in ChallengeResponses
auf. Wenn der Aufruf von RespondToAuthChallenge
erfolgreich ist und sich der Benutzer anmeldet, stellt Amazon Cognito Token aus. Wenn Sie die Multi-Faktor-Authentifizierung (MFA) für den Benutzer aktiviert haben, gibt Amazon Cognito den ChallengeName
Wert von zurück. SMS_MFA
Die App kann den erforderlichen Code durch einen anderen Anruf an RespondToAuthChallenge
ausstellen.
Benutzerdefinierter Authentifizierungsablauf und Aufforderungen
Eine App kann einen benutzerdefinierten Authentifizierungsfluss durch Aufrufen von InitiateAuth
mit CUSTOM_AUTH
als Authflow
initiieren. Bei einem benutzerdefinierten Authentifizierungsablauf steuern drei Lambda-Auslöser die Aufforderungen und die Verifizierung der Antworten.
-
Der
DefineAuthChallenge
-Lambda-Auslöser verwendet ein Sitzungs-Array mit früheren Aufforderungen und Antworten als Eingabe. Anschließend generiert er den nächsten Aufforderungsnamen und boolesche Werte, die angeben, ob der Benutzer authentifiziert ist und ihm Token gewährt werden können. Dieser Lambda-Auslöser ist ein Zustandsautomat, der den Weg des Benutzers durch die Aufforderungen steuert. -
Der
CreateAuthChallenge
-Lambda-Auslöser verwendet einen Aufforderungsnamen als Eingabe und generiert die Aufforderung sowie Parameter zur Bewertung der Antwort. WennDefineAuthChallenge
CUSTOM_CHALLENGE
als nächste Aufforderung zurückgibt, ruft der AuthentifizierungsablaufCreateAuthChallenge
an. DerCreateAuthChallenge
-Lambda-Trigger übergibt den nächsten Aufforderungstyp im Metadatenparameter der Aufforderung. -
Die
VerifyAuthChallengeResponse
-Lambda-Funktion bewertet die Antwort und gibt einen booleschen Wert zurück, der angibt, ob die Antwort gültig war.
Ein benutzerdefinierter Authentifizierungsablauf kann auch eine Kombination aus integrierten Herausforderungen wie der SRP Passwortverifizierung und MFA -durchführung verwenden. SMS Dabei können benutzerdefinierte Herausforderungen wie CAPTCHA geheime Fragen verwendet werden.
Verwenden Sie die SRP Passwortverifizierung im benutzerdefinierten Authentifizierungsablauf
Wenn Sie die Daten SRP in einen benutzerdefinierten Authentifizierungsablauf einbeziehen möchten, müssen Sie mit beginnenSRP.
-
Um die SRP Passwortverifizierung in einem benutzerdefinierten Ablauf zu initiieren, ruft die App
InitiateAuth
mitCUSTOM_AUTH
as aufAuthflow
. In derAuthParameters
Map enthält die Anfrage Ihrer AppSRP_A:
(den SRP A-Wert) undCHALLENGE_NAME: SRP_A
. -
Der
CUSTOM_AUTH
-Ablauf ruft denDefineAuthChallenge
-Lambda-Auslöser mit einer anfänglichen Sitzung vonchallengeName: SRP_A
undchallengeResult: true
auf. Ihre Lambda-Funktion antwortet mitchallengeName: PASSWORD_VERIFIER
,issueTokens: false
undfailAuthentication: false
. -
Als Nächstes muss die App
RespondToAuthChallenge
withchallengeName: PASSWORD_VERIFIER
und die anderen SRP in derchallengeResponses
Map erforderlichen Parameter aufrufen. -
Wenn Amazon Cognito das Passwort verifiziert, wird
RespondToAuthChallenge
denDefineAuthChallenge
-Lambda-Auslöser mit einer zweiten Sitzung vonchallengeName: PASSWORD_VERIFIER
undchallengeResult: true
aufrufen. Nun kann der Lambda-AuslöserDefineAuthChallenge
mitchallengeName: CUSTOM_CHALLENGE
reagieren, um die benutzerdefinierte Aufforderung zu starten. -
Wenn für einen Benutzer aktiviert MFA ist, wird Ihr Benutzer, nachdem Amazon Cognito das Passwort überprüft hat, aufgefordert, es einzurichten oder sich mit ihm anzumelden. MFA
Anmerkung
Die von Amazon Cognito gehostete Anmeldewebseite kann Lambda-Auslöser für benutzerdefinierte Authentifizierungsaufforderungen nicht aktivieren.
Weitere Informationen zu den Lambda-Auslösern, einschließlich Beispielcode, finden Sie unter Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern.
Ablauf der Administratorauthentifizierung
Die bewährte Methode für die Authentifizierung besteht darin, die unter Benutzerdefinierter Authentifizierungsablauf mit beschriebenen API Vorgänge SRP zur Passwortverifizierung zu verwenden. AWS SDKsSie verwenden diesen Ansatz, und dieser Ansatz hilft ihnen, ihn zu verwendenSRP. Wenn Sie jedoch SRP Berechnungen vermeiden möchten, stehen alternative API Verwaltungsvorgänge für sichere Backend-Server zur Verfügung. Verwenden Sie für diese Backend-Administrator-Implementierungen AdminInitiateAuth
anstelle von InitiateAuth
. Verwenden Sie auch AdminRespondToAuthChallenge
anstelle von RespondToAuthChallenge
. Da Sie das Passwort als Klartext einreichen können, müssen Sie bei der Verwendung dieser Operationen keine SRP Berechnungen durchführen. Ein Beispiel:
AdminInitiateAuth Request { "AuthFlow":"ADMIN_USER_PASSWORD_AUTH", "AuthParameters":{ "USERNAME":"
<username>
", "PASSWORD":"<password>
" }, "ClientId":"<clientId>
", "UserPoolId":"<userPoolId>
" }
Diese Operationen zur Administratorauthentifizierung benötigen Entwickleranmeldeinformationen und verwenden den Signaturprozess mittels AWS
Signature Version 4 (SigV4). Diese Operationen sind standardmäßig verfügbar AWS
SDKs, einschließlich Node.js, was für Lambda-Funktionen praktisch ist. Damit diese Operationen verwendet werden können und Passwörter als Klartext akzeptieren, müssen Sie sie für die App in der Konsole aktivieren. Alternativ können Sie ADMIN_USER_PASSWORD_AUTH
für den ExplicitAuthFlow
-Parameter in Aufrufen von CreateUserPoolClient
oder UpdateUserPoolClient
übergeben. Die InitiateAuth
- und RespondToAuthChallenge
-Operationen akzeptieren ADMIN_USER_PASSWORD_AUTH
AuthFlow
nicht.
In der AdminInitiateAuth
-Antwort ChallengeParameters
enthält das Attribut USER_ID_FOR_SRP
– sofern vorhanden – den tatsächlichen Benutzernamen des Benutzers und keinen Alias (wie etwa E-Mail-Adresse oder Telefonnummer). In dem Aufruf an AdminRespondToAuthChallenge
in den ChallengeResponses
müssen Sie diesen Benutzernamen im Parameter USERNAME
übergeben.
Anmerkung
Da der Ablauf der Administratorauthentifizierung für Implementierungen zur Verwaltung über das Backend verwendet wird, unterstützt er die Geräteverfolgung nicht. Wenn Sie die Geräteverfolgung aktiviert haben, ist die Administratorauthentifizierung erfolgreich, aber jeder Aufruf zum Aktualisieren des Zugriffstokens schlägt fehl.
Ablauf der Authentifizierung für die Benutzermigration
Ein Lambda-Auslöser für die Benutzermigration hilft bei der Migration von Benutzern aus einem Legacy-Benutzerverwaltungssystem in Ihren Benutzerpool. Wenn Sie den USER_PASSWORD_AUTH
-Authentifizierungsablauf auswählen, müssen Benutzer ihre Passwörter während der Benutzermigration nicht zurücksetzen. Dieser Ablauf sendet die Passwörter Ihrer Benutzer während der Authentifizierung über eine verschlüsselte SSL Verbindung an den Dienst.
Wenn Sie alle Ihre Benutzer migriert haben, wechseln Sie zu den sichereren SRP Flows. Der SRP Flow sendet keine Passwörter über das Netzwerk.
Weitere Informationen zu Lambda-Auslösern finden Sie unter Anpassen von Benutzerpool-Workflows mit Lambda-Auslösern.
Weitere Informationen über die Migration von Benutzern über einen Lambda-Auslöser finden Sie unter Importieren von Benutzern mit einem Lambda-Auslöser für die Benutzermigration.