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.
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 Challenge-Funktion keine MFA-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 RespondToAuthChallengeAPI-Operationen AdminRespondToAuthChallengeund verwenden. Die Anfrage, die die Funktion define auth challenge aufruft, enthält keine Daten, die in den ClientMetadata Parameter-In AdminInitiateAuth- und InitiateAuthAPI-Vorgängen übergeben wurden.
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. Wenn Benutzer die SRP-Authentifizierung mit den SRP_A
und PASSWORD_VERIFIER
Challenges abschließen, übergibt ihnen diese Funktion eine, CUSTOM_CHALLENGE
die den Create Auth Challenge-Trigger auslöst. In Kombination mit unserem Beispiel für die Create Auth Challenge liefert diese Sequenz eine CAPTCHA-Herausforderung für Herausforderung drei und eine Sicherheitsfrage für Herausforderung vier.
Nachdem der Benutzer das CAPTCHA gelöst und die Sicherheitsfrage beantwortet hat, bestätigt diese Funktion, dass Ihr Benutzerpool Token ausstellen kann. Eine SRP-Authentifizierung ist nicht erforderlich. Sie können das CAPTCHA und die Sicherheitsfrage auch als Herausforderung eins und zwei festlegen. Für den Fall, dass Ihre Funktion zum Definieren einer Authentifizierungsabfrage keine SRP-Herausforderungen deklariert, hängt der Erfolg Ihrer Benutzer ausschließlich von ihren Antworten auf Ihre benutzerdefinierten Eingabeaufforderungen ab.