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.
Lambda-Auslöser für die Definition einer Authentifizierungsaufforderung
Der Define Auth Challenge Trigger ist eine Lambda-Funktion, die die Abfragesequenz in einem benutzerdefinierten Authentifizierungsablauf beibehält. Sie erklärt den Erfolg oder Misserfolg der Challenge-Sequenz und legt die nächste Challenge fest, falls die Sequenz noch nicht abgeschlossen ist.
- Authentifizierungsaufforderung definieren
-
Amazon Cognito ruft diesen Auslöser auf, um den benutzerdefinierten Authentifizierungsablauf zu initiieren.
Die Anforderung für diesen Lambda-Auslöser enthält session
. Der session
-Parameter ist ein Array, das alle Aufforderungen enthält, die dem Benutzer im aktuellen Authentifizierungsprozess präsentiert werden. Die Anfrage enthält auch das entsprechende Ergebnis. Das session
-Array speichert Aufforderungsdetails (ChallengeResult
) in chronologischer Reihenfolge. Die Aufforderung session[0]
stellt die erste Aufforderung dar, die der Benutzer erhält.
Sie können Amazon-Cognito-Benutzerpasswörter überprüfen lassen, bevor es Ihre benutzerdefinierten Herausforderungen ausgibt. Alle Lambda-Trigger, die der Kategorie Authentifizierung der Quotas für die Anforderungsrate zugeordnet sind, werden ausgeführt, wenn Sie die SRP Authentifizierung in einem benutzerdefinierten Challenge-Flow durchführen. Es folgt eine Übersicht über den Prozess:
-
Ihre App initiiert die Anmeldung, indem
InitiateAuth
oderAdminInitiateAuth
mit derAuthParameters
-Karte aufgerufen werden. Parameter müssenCHALLENGE_NAME: SRP_A,
und Werte fürSRP_A
undUSERNAME
umfassen. -
Amazon Cognito ruft Ihren Lambda-Auslöser „Authentifizierungsaufforderung definieren“ mit einer ersten Sitzung auf, die
challengeName: SRP_A
undchallengeResult: true
enthält. -
Nachdem Sie diese Eingaben empfangen haben, reagiert Ihre Lambda-Funktion mit
challengeName: PASSWORD_VERIFIER
,issueTokens: false
,failAuthentication: false
. -
Wenn die Kennwortverifizierung erfolgreich ist, ruft Amazon Cognito Ihre Lambda-Funktion erneut mit einer neuen Sitzung auf, die
challengeName: PASSWORD_VERIFIER
undchallengeResult: true
enthält. -
Ihre Lambda-Funktion initiiert Ihre benutzerdefinierten Aufforderungen, indem sie mit
challengeName: CUSTOM_CHALLENGE
,issueTokens: false
undfailAuthentication: false
antwortet. Wenn Sie Ihren benutzerdefinierten Authentifizierungsablauf nicht mit Passwortüberprüfung starten möchten, können Sie die Anmeldung mit derAuthParameters
-Karte einschließlichCHALLENGE_NAME: CUSTOM_CHALLENGE
initiieren. -
Die Aufforderungsschleife wird so lange ausgeführt, bis alle Aufforderungen beantwortet sind.
Im Folgenden finden Sie ein Beispiel für eine InitiateAuth
Startanfrage, der der benutzerdefinierten Authentifizierung ein Flow vorausgeht. SRP
{ "AuthFlow": "CUSTOM_AUTH", "ClientId": "1example23456789", "AuthParameters": { "CHALLENGE_NAME": "SRP_A", "USERNAME": "testuser", "SRP_A": "[SRP_A]", "SECRET_HASH": "[secret hash]" } }
Themen
Definition von Lambda-Auslöserparametern für die Authentifizierungsaufforderung
Die Anforderung, die Amazon Cognito an diese Lambda-Funktion übergibt, ist eine Kombination der folgenden Parameter und der allgemeinen Parameter, die Amazon Cognito allen Anfragen hinzufügt.
Anforderungsparameter für die Definition der Authentifizierungsaufforderung
Wenn Amazon Cognito Ihre Lambda-Funktion aufruft, bietet Amazon Cognito die folgenden Parameter:
- userAttributes
-
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.
- userNotFound
-
Ein boolescher Wert, den Amazon Cognito eingibt, wenn
PreventUserExistenceErrors
für Ihren Benutzerpool-Client aufENABLED
festgelegt ist. Ein Wert vontrue
bedeutet, dass die Benutzer-ID (Benutzername, E-Mail-Adresse usw.) mit keinem vorhandenen Benutzer übereinstimmt. WennPreventUserExistenceErrors
aufENABLED
gesetzt ist, informiert der Service die App nicht über nicht existierende Benutzer. Wir empfehlen, dass Ihre Lambda-Funktionen dieselbe Benutzererfahrung beibehalten und die Latenz berücksichtigen. Auf diese Weise kann der Aufrufer abweichendes Verhalten nicht erkennen, wenn der Benutzer vorhanden ist oder nicht vorhanden ist. - Sitzung
-
Ein Array von
ChallengeResult
-Elementen. Jede enthält die folgenden Elemente:- challengeName
-
Einer der folgenden Challenge-Typen:
CUSTOM_CHALLENGE
,SRP_A
,PASSWORD_VERIFIER
,SMS_MFA
,EMAIL_OTP
,SOFTWARE_TOKEN_MFA
,DEVICE_SRP_AUTH
DEVICE_PASSWORD_VERIFIER
, oderADMIN_NO_SRP_AUTH
.Wenn Ihre Define Auth Challenge-Funktion eine
PASSWORD_VERIFIER
Herausforderung für einen Benutzer ausgibt, der die Multifaktor-Authentifizierung eingerichtet hat, folgt Amazon Cognito darauf mit einerSMS_MFA
EMAIL_OTP
, oder -Aufforderung.SOFTWARE_TOKEN_MFA
Dies sind die Eingabeaufforderungen zur Eingabe eines Multi-Faktor-Authentifizierungscodes. Schließen Sie in Ihrer Funktion die Behandlung von Eingabeereignissen ausSMS_MFA
EMAIL_OTP
, undSOFTWARE_TOKEN_MFA
Herausforderungen ein. Sie müssen in Ihrer Define Auth MFA Challenge-Funktion keine Challenges aufrufen.Wichtig
Wenn Ihre Funktion feststellt, ob ein Benutzer sich erfolgreich authentifiziert hat und Sie Token ausgeben müssen, überprüfen Sie immer den
challengeName
in Ihrer Define-Auth-Challenge, um sicherzustellen, dass er mit dem erwarteten Wert übereinstimmt. - challengeResult
-
Setzen Sie diesen Parameter auf
true
, wenn der Benutzer die Aufforderung erfolgreich abgeschlossen hat. Setzen Sie ihn andernfalls auffalse
. - challengeMetadata
-
Ihr Name für die benutzerdefinierte Aufforderung. Nur verwendet, wenn
challengeName
CUSTOM_CHALLENGE
entspricht.
- clientMetadata
-
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser für die Authentifizierungsaufforderung definieren. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können Sie den
ClientMetadata
Parameter in den RespondToAuthChallengeAPIOperationen AdminRespondToAuthChallengeund verwenden. Die Anforderung, die die Abfragefunktion define auth aufruft, enthält keine Daten, die in den Operationen ClientMetadata Parameter in AdminInitiateAuthand übergeben wurden. InitiateAuthAPI
Antwortparameter für die Definition der Authentifizierungsaufforderung
In der Antwort können Sie die nächste Phase des Authentifizierungsvorgangs zurückgeben.
- challengeName
-
Eine Zeichenfolge, die den Namen der nächsten Aufforderung enthält. Wenn dem Benutzer eine neue Aufforderung angezeigt werden soll, geben Sie den Namen der Aufforderung hier an.
- issueTokens
-
Wenn Sie feststellen, dass der Benutzer den Authentifizierungsaufforderungen ausreichend nachgekommen ist, setzen Sie ihn auf
true
. Wenn der Benutzer den Aufforderungen nicht ausreichend nachgekommen ist, setzen Sie ihn auffalse
. - failAuthentication
-
Wenn Sie den aktuellen Authentifizierungsprozess beenden möchten, setzen Sie ihn auf
true
. Um den aktuellen Authentifizierungsprozess fortzusetzen, setzen Sie ihn auffalse
.
Beispiel für „Authentifizierungsaufforderung definieren“
Mit diesem Beispiel werden eine Reihe von Aufforderungen für die Authentifizierung definiert. Token werden nur dann ausgegeben, wenn der Benutzer alle Aufforderungen erfolgreich abgeschlossen hat.