Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Definizione del trigger Lambda di una richiesta di autenticazione
Il trigger define auth challenge è una funzione Lambda che mantiene la sequenza di sfida in un flusso di autenticazione personalizzato. Dichiara il successo o il fallimento della sequenza di sfida e imposta la sfida successiva se la sequenza non è ancora completa.

- Definizione di una richiesta di autenticazione
-
Amazon Cognito richiama questo trigger per avviare il flusso di autenticazione personalizzato.
La richiesta per questo trigger Lambda include session
. Il parametro session
è una matrice contenente tutte le sfide a cui l'utente viene sottoposto nel processo di autenticazione in corso. La richiesta include anche il risultato corrispondente. La matrice session
archivia i dettagli della sfida (ChallengeResult
) in ordine cronologico. La richiesta session[0]
rappresenta la prima sfida che l'utente riceve.
Puoi fare in modo che Amazon Cognito verifichi le password degli utenti prima di emettere le tue richieste personalizzate. Tutti i trigger Lambda associati alla categoria Authentication delle quote del tasso di richiesta verranno eseguiti quando si esegue SRP l'autenticazione in un flusso di verifica personalizzato. Ecco una panoramica del processo:
-
La tua app avvia la procedura di accesso chiamando
InitiateAuth
oAdminInitiateAuth
con la mappaturaAuthParameters
. I parametri devono includereCHALLENGE_NAME: SRP_A,
e i valori perSRP_A
eUSERNAME
. -
Amazon Cognito invoca il tuo trigger Lambda define auth challenge con una sessione iniziale contenente
challengeName: SRP_A
echallengeResult: true
. -
Dopo aver ricevuto questi input, la funzione Lambda risponde con
challengeName: PASSWORD_VERIFIER
,issueTokens: false
,failAuthentication: false
. -
Se la verifica della password ha esito positivo, Amazon Cognito richiama nuovamente la funzione Lambda con una nuova sessione contenente
challengeName: PASSWORD_VERIFIER
echallengeResult: true
. -
La funzione Lambda avvia le tue sifde personalizzate rispondendo con
challengeName: CUSTOM_CHALLENGE
,issueTokens: false
efailAuthentication: false
. Se non desideri avviare il flusso di autenticazione personalizzato con la verifica della password, è possibile avviare l'accesso con la mappaAuthParameters
che includeCHALLENGE_NAME: CUSTOM_CHALLENGE
. -
Il loop di sfide si ripete finché non viene data risposta a tutte le sfide.
Di seguito è riportato un esempio di InitiateAuth
richiesta iniziale che precede l'autenticazione personalizzata con un flusso. SRP
{ "AuthFlow": "CUSTOM_AUTH", "ClientId": "1example23456789", "AuthParameters": { "CHALLENGE_NAME": "SRP_A", "USERNAME": "testuser", "SRP_A": "[SRP_A]", "SECRET_HASH": "[secret hash]" } }
Argomenti
Parametri del trigger Lambda di definizione delle richieste di autenticazione
La richiesta passata da Amazon Cognito a questa funzione Lambda è una combinazione dei parametri seguenti e dei parametri comuni aggiunti da Amazon Cognito a tutte le richieste.
Parametri di richiesta di definizione sfida di autenticazione
Quando Amazon Cognito richiama la tua funzione Lambda, fornisce i seguenti parametri:
- userAttributes
-
Una o più coppie nome-valore che rappresentano gli attributi utente.
- userNotFound
-
Valore booleano che viene popolato da Amazon Cognito quando
PreventUserExistenceErrors
è impostato suENABLED
per il client del bacino d'utenza. Un valoretrue
indica che l'ID utente (nome utente, indirizzo e-mail e altri dettagli) non corrisponde ad alcun utente esistente. QuandoPreventUserExistenceErrors
è impostato suENABLED
, il servizio non informa l'app riguardo a utenti inesistenti. Raccomandiamo che le tue funzioni Lambda mantengano la stessa esperienza utente e tengano conto della latenza. In questo modo, l'intermediario non può rilevare comportamenti diversi quando l'utente esiste o non esiste. - session
-
Una matrice di elementi
ChallengeResult
. Ognuna contiene i seguenti elementi:- challengeName
-
Uno dei seguenti tipi di sfida:
CUSTOM_CHALLENGE
SRP_A
,PASSWORD_VERIFIER
,SMS_MFA
,EMAIL_OTP
,SOFTWARE_TOKEN_MFA
,DEVICE_SRP_AUTH
DEVICE_PASSWORD_VERIFIER
, oADMIN_NO_SRP_AUTH
.Quando la funzione define auth challenge genera una
PASSWORD_VERIFIER
sfida per un utente che ha configurato l'autenticazione a più fattori, Amazon Cognito la segue conSMS_MFA
una sfidaEMAIL_OTP
, o.SOFTWARE_TOKEN_MFA
Queste sono le istruzioni per un codice di autenticazione a più fattori. Nella tua funzione, includi la gestione degli eventi di input e delleSMS_MFA
sfideEMAIL_OTP
.SOFTWARE_TOKEN_MFA
Non è necessario richiamare alcuna MFA sfida nella funzione define auth challenge.Importante
Quando la funzione determina se un utente ha completato l'autenticazione ed è necessario emettere token, controlla sempre
challengeName
nella funzione Definisci la sfida di autenticazione e verifica che corrisponda al valore previsto. - challengeResult
-
Imposta su
true
se l'utente ha completato con successo la sfida o altrimenti sufalse
. - challengeMetadata
-
Il tuo nome per la sfida personalizzata. Usato solo se
challengeName
èCUSTOM_CHALLENGE
.
- clientMetadata
-
Una o più coppie chiave-valore che è possibile fornire come input personalizzato alla funzione Lambda specificata per il trigger di definizione di una richiesta di autenticazione. Per passare questi dati alla funzione Lambda, puoi utilizzare il
ClientMetadata
parametro nelle operazioni AdminRespondToAuthChallengeand RespondToAuthChallengeAPI. La richiesta che richiama la funzione define auth challenge non include i dati passati nel ClientMetadata parametro in and operations. AdminInitiateAuthInitiateAuthAPI
Parametri di risposta di definizione sfida di autenticazione
Nella risposta, puoi restituire la prossima fase del processo di autenticazione.
- challengeName
-
Una stringa che include il nome della sfida successiva. Se desideri presentare una nuova sfida al tuo utente, specifica qui il nome della sfida.
- issueTokens
-
Se stabilisci che l'utente abbia completato abbastanza sfide per essere autenticato, imposta su
true
. Se l'utente non ha soddisfatto i criteri delle sfide, imposta sufalse
. - failAuthentication
-
Se desideri terminare l'attuale processo di autenticazione, imposta su
true
. Per continuare il processo di autenticazione corrente, imposta sufalse
.
Definizione di un esempio di una richiesta di autenticazione
Questo esempio definisce una serie di sfide per l'autenticazione e rilascia token solo se l'utente completa correttamente tutte le sfide.