View a markdown version of this page

Trigger Lambda di migrazione utenti - Amazon Cognito

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à.

Trigger Lambda di migrazione utenti

Amazon Cognito richiama questo trigger quando un utente non esiste nel bacino d'utenza al momento dell'accesso con una password oppure nel flusso di reimpostazione della password. Dopo l'esito positivo della funzione Lambda, Amazon Cognito crea l'utente nel bacino d'utenza. Per i dettagli sul flusso di autenticazione con il trigger Lambda di migrazione utenti, consulta Importazione di utenti con un trigger Lambda per la migrazione di utenti.

Usa questo trigger Lambda per migrare gli utenti dalla directory degli utenti esistente nel bacino d'utenza ad Amazon Cognito al momento dell'accesso o durante il flusso di reimpostazione della password.

Origini dei trigger Lambda di migrazione utenti

Valore triggerSource Event
UserMigration_Authentication1 Migrazione degli utenti al momento dell'accesso.
UserMigration_ForgotPassword Migrazione degli utenti durante il flusso di password dimenticata.

1 Amazon Cognito non richiama questo trigger quando gli utenti si autenticano con l'accesso senza password.

Parametri del trigger Lambda di migrazione utenti

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.

JSON
{ "userName": "string", "request": { "password": "string", "validationData": { "string": "string", . . . }, "clientMetadata": { "string": "string", . . . } }, "response": { "userAttributes": { "string": "string", . . . }, "finalUserStatus": "string", "messageAction": "string", "desiredDeliveryMediums": [ "string", . . .], "forceAliasCreation": boolean, "enableSMSMFA": boolean } }

Parametri di richiesta di migrazione utenti

userName

Il nome utente inserito dall'utente al momento dell'accesso.

password

La password inserita dall'utente al momento dell'accesso. Amazon Cognito non invia questo valore in una richiesta avviata da un flusso di reimpostazione della password.

validationData

Una o più coppie chiave-valore contenenti i dati di convalida nella richiesta di registrazione dell'utente. Per passare questi dati alla funzione Lambda, puoi utilizzare il ClientMetadata parametro nelle azioni InitiateAuthe AdminInitiateAuthAPI.

clientMetadata

Una o più coppie chiave-valore che è possibile fornire come input personalizzato alla funzione Lambda per il trigger di migrazione utenti. Per passare questi dati alla funzione Lambda, puoi utilizzare il ClientMetadata parametro nelle azioni AdminRespondToAuthChallengee ForgotPasswordAPI.

Parametri di risposta di migrazione utenti

userAttributes

Questo campo è obbligatorio.

Questo campo deve contenere una o più coppie nome-valore archiviate da Amazon Cognito nel profilo utente del bacino d'utenza e utilizzate come attributi utente. Puoi includere attributi utenti standard e personalizzati. Gli attributi personalizzati richiedono il prefisso custom: per distinguerli dagli attributi standard. Per ulteriori informazioni sugli attributi, consulta Attributi personalizzati.

Nota

Per poter reimpostare le password nel flusso di reimpostazione della password, gli utenti devono avere un indirizzo e-mail o un numero di telefono verificati. Amazon Cognito invia un messaggio contenente un codice di reimpostazione della password all'indirizzo e-mail o al numero di telefono specificati negli attributi utente.

Attributes Requisito
Tutti gli attributi contrassegnati come obbligatori al momento della creazione del bacino d'utenza Se durante la migrazione manca uno qualsiasi degli attributi obbligatori, Amazon Cognito utilizza valori di default.
username

Obbligatorio se hai configurato il pool di utenti con attributi alias oltre al nome utente per l'accesso e l'utente ha inserito un valore alias valido come nome utente. Questo valore alias può essere un indirizzo e-mail, un nome utente preferito o un numero di telefono.

Se la richiesta e il pool di utenti soddisfano i requisiti relativi agli alias, la risposta della funzione deve assegnare il username parametro ricevuto a un attributo alias. Inoltre, la risposta deve assegnare il proprio valore all'attributo. username Se il bacino d'utenza non soddisfa le condizioni richieste per mappare lo username ricevuto a un alias, il parametro username nella risposta deve corrispondere esattamente alla richiesta o essere omesso.

Nota

Lo username deve essere univoco all'interno del bacino d'utenti.

finale UserStatus

È possibile impostare questo parametro su CONFIRMED per confermare automaticamente gli utenti, in modo che possano accedere con le password precedenti. Gli utenti che imposti su CONFIRMED non devono intraprendere ulteriori azioni prima di poter effettuare l'accesso. Se non imposti questo attributo su CONFIRMED, esso rimane impostato su RESET_REQUIRED.

Un finalUserStatus di RESET_REQUIRED significa che l'utente deve modificare la propria password immediatamente dopo la migrazione al momento dell'accesso e l'app client deve gestire l'eccezione PasswordResetRequiredException durante il flusso di autenticazione.

Nota

Amazon Cognito non applica la policy relativa alla forza della password che hai configurato per il bacino d'utenza durante la migrazione utilizzando il trigger Lambda. Se la password non soddisfa la tua policy per le password, Amazon Cognito la accetta comunque e continua a migrare l'utente. Per applicare la policy di protezione delle password e rifiutare le password che non soddisfano la policy, convalida la validità della password nel codice. Quindi, se la password non soddisfa i criteri, imposta final UserStatus suRESET_REQUIRED.

messageAction

Se desideri impedire l'invio del messaggio di benvenuto che Amazon Cognito invia di solito ai nuovi utenti, imposta questo parametro su SUPPRESS. Se la funzione non restituisce questo parametro, Amazon Cognito invia il messaggio di benvenuto.

desiderato DeliveryMediums

Per inviare il messaggio di benvenuto tramite e-mail, imposta il valore su EMAIL; per inviarlo tramite SMS, imposta il valore su SMS. Se la funzione non restituisce questo parametro, Amazon Cognito invia il messaggio di benvenuto tramite SMS.

forza AliasCreation

Se si imposta questo parametro su TRUE e il numero di telefono o l'indirizzo e-mail nel UserAttributes parametro esiste già come alias con un altro utente, la chiamata API migra l'alias dall'utente precedente a quello appena creato. L'utente precedente non potrà più effettuare l'accesso utilizzando tale alias.

Se imposti questo parametro su FALSE e l'alias esiste, Amazon Cognito non esegue la migrazione dell'utente e restituisce un errore all'app client.

Se non restituisci questo parametro, Amazon Cognito presuppone che il suo valore sia "false".

enableSMSMFA

Imposta questo parametro su true per richiedere all'utente migrato di completare l'autenticazione a più fattori (MFA) tramite SMS per accedere. Il pool di utenti deve avere l'MFA abilitato. Gli attributi dell'utente nei parametri della richiesta devono includere un numero di telefono, altrimenti la migrazione di quell'utente fallirà.

Esempio di migrazione di un utente con una password esistente

Questa funzione Lambda di esempio migra l'utente con una password esistente ed elimina il messaggio di benvenuto da Amazon Cognito.

Node.js
exports.handler = (event, context, callback) => { var user; if (event.triggerSource == "UserMigration_Authentication") { // authenticate the user with your existing user directory service user = authenticateUser(event.userName, event.request.password); if (user) { event.response.userAttributes = { email: user.emailAddress, email_verified: "true", }; event.response.finalUserStatus = "CONFIRMED"; event.response.messageAction = "SUPPRESS"; context.succeed(event); } else { // Return error to Amazon Cognito callback("Bad password"); } } else if (event.triggerSource == "UserMigration_ForgotPassword") { // Lookup the user in your existing user directory service user = lookupUser(event.userName); if (user) { event.response.userAttributes = { email: user.emailAddress, // required to enable password-reset code to be sent to user email_verified: "true", }; event.response.messageAction = "SUPPRESS"; context.succeed(event); } else { // Return error to Amazon Cognito callback("Bad password"); } } else { // Return error to Amazon Cognito callback("Bad triggerSource " + event.triggerSource); } };

Risoluzione dei problemi relativi al trigger di migrazione utente

Se la migrazione non funziona come previsto anche se la funzione restituisce la risposta documentata, verifica le seguenti cause comuni.

Il trigger non viene richiamato

Amazon Cognito richiama il trigger di migrazione utente solo quando l'utente non è già presente nel pool di utenti. Si applica solo ai flussi di accesso USER_PASSWORD_AUTHADMIN_USER_PASSWORD_AUTH, e USER_AUTH (con una password) e al flusso di password dimenticata. Non viene richiamato per l'accesso SRP (USER_SRP_AUTH), poiché la password dell'utente non raggiunge mai la funzione in quel flusso o per l'accesso senza password. Se il trigger non si attiva, verifica che il client dell'app consenta uno di questi flussi e che l'utente non sia già presente nel pool.

Amazon Cognito non può richiamare la funzione

Se imposti il trigger con una policy basata sulle risorse sulla funzione anziché tramite la console Amazon Cognito, la policy deve consentire al responsabile del cognito-idp.amazonaws.com servizio di effettuare chiamatelambda:InvokeFunction, limitatamente all'ARN del tuo pool di utenti. La console aggiunge questa autorizzazione per te; una funzione collegata all'infrastruttura come codice o all'API Lambda deve essere aggiunta in modo esplicito. Senza di essa, la migrazione fallisce perché Amazon Cognito non può richiamare il trigger.

L'utente accede ma non viene creato alcun profilo

Amazon Cognito crea l'utente migrato solo quando la funzione restituisce la risposta nella forma esatta prevista: il userAttributes campo deve essere presente e deve includere tutti gli attributi contrassegnati come obbligatori nel pool di utenti. Una funzione che autentica l'utente ma restituisce un response oggetto vuoto o non valido o omette un attributo obbligatorio, completa la chiamata di accesso senza rendere persistente un profilo. Restituisce userAttributes con tutti gli attributi obbligatori e imposta se necessario. finalUserStatus messageAction