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
![Trigger Lambda di richieste](images/lambda-challenges1.png)
- 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 Autenticazione delle quote del tasso di richiesta verranno eseguiti quando si esegue l'autenticazione SRP in un flusso di richiesta 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.
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 richieste:
CUSTOM_CHALLENGE
,SRP_A
,PASSWORD_VERIFIER
,SMS_MFA, DEVICE_SRP_AUTH
,DEVICE_PASSWORD_VERIFIER
oADMIN_NO_SRP_AUTH
.Quando la funzione Definisci la sfida di autenticazione genera una sfida
PASSWORD_VERIFIER
per un utente che ha impostato l'autenticazione a più fattori, viene completata da Amazon Cognito con una sfidaSMS_MFA
. Nella funzione, includi la gestione degli eventi di input da sfideSMS_MFA
. Non è necessario richiamare la sfidaSMS_MFA
dalla funzione Definisci la sfida di autenticazione.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. Puoi trasmettere questi dati alla funzione Lambda utilizzando il parametro
ClientMetadata
nelle operazioni API AdminRespondToAuthChallenge e RespondToAuthChallenge. La richiesta che richiama la funzione define auth challenge non include i dati trasmessi al parametro ClientMetadata nelle operazioni API AdminInitiateAuth e InitiateAuth.
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.