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 in bacini d'utenza con un trigger Lambda di migrazione 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 Evento
UserMigration_Authentication Migrazione degli utenti al momento dell'accesso.
UserMigration_ForgotPassword Migrazione degli utenti durante il flusso di password dimenticata.

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 contenente i dati di convalida nella richiesta di registrazione dell'utente. Per trasmettere questi dati alla funzione Lambda, usa il parametro ClientMetadata nelle operazioni API InitiateAuth e AdminInitiateAuth.

clientMetadata

Una o più coppie chiave-valore che è possibile fornire come input personalizzato alla funzione Lambda per il trigger di migrazione utenti. Puoi trasmettere questi dati alla funzione Lambda utilizzando il parametro ClientMetadata nelle operazioni API AdminRespondToAuthChallenge e RespondToAuthChallenge.

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.

Attributi 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 il bacino d'utenza è stato configurato con attributi alias per l'accesso, oltre al nome utente, e l'utente ha inserito come nome utente un valore alias valido. Questo valore alias può essere un indirizzo e-mail, un nome utente preferito o un numero di telefono.

Se la richiesta e il bacino d'utenza soddisfano i requisiti di alias, la risposta della funzione deve assegnare il parametro username che ha ricevuto a un attributo alias. Inoltre, la risposta deve assegnare il tuo 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.

finalUserStatus

È 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 la policy, imposta finalUserStatus su RESET_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.

desiredDeliveryMediums

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.

forceAliasCreation

Se imposti questo parametro su TRUE e il numero di telefono o l'indirizzo e-mail specificato nel parametro UserAttributes esiste già come alias per un altro utente, la chiamata API migra l'alias dall'utente precedente all'utente 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
const validUsers = { belladonna: { password: "Test123", emailAddress: "bella@example.com" }, }; // Replace this mock with a call to a real authentication service. const authenticateUser = (username, password) => { if (validUsers[username] && validUsers[username].password === password) { return validUsers[username]; } else { return null; } }; const lookupUser = (username) => { const user = validUsers[username]; if (user) { return { emailAddress: user.emailAddress }; } else { return null; } }; const handler = async (event) => { if (event.triggerSource == "UserMigration_Authentication") { // Authenticate the user with your existing user directory service const 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"; } } else if (event.triggerSource == "UserMigration_ForgotPassword") { // Look up the user in your existing user directory service const 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"; } } return event; }; export { handler };