Migrar o acionador do Lambda do usuário - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Migrar o acionador do Lambda do usuário

Quando um usuário não existir no grupo de usuários no momento de login com senha, ou no fluxo de senha esquecida, o Amazon Cognito invocará esse acionador. Depois que a função Lambda retornar com êxito, o Amazon Cognito criará o usuário no grupo de usuários. Para obter detalhes sobre o fluxo de autenticação com o acionador do Lambda de migração de usuários, consulte Como importar usuários para grupos de usuários com um acionador Lambda de migração de usuário.

Para migrar os usuários de seu diretório de usuários existente para grupos de usuários do Amazon Cognito no momento do login ou durante o fluxo de senha esquecida, siga esse acionador do Lambda.

Fontes do acionador do Lambda de migrar usuário

Valor função do LambdaSource Evento
UserMigration_Authentication Migração de usuários no login.
UserMigration_ForgotPassword Migração de usuários durante o fluxo de esquecimento de senha.

Parâmetros do acionador do Lambda de migrar usuário

A solicitação que o Amazon Cognito transmite para essa função do Lambda é uma combinação dos parâmetros abaixo e dos parâmetros comuns que o Amazon Cognito adiciona a todas as solicitações.

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 } }

Parâmetros de solicitação de migrar usuário

userName

O nome de usuário que o usuário insere no login.

password

A senha que o usuário insere no login. O Amazon Cognito não envia esse valor em uma solicitação iniciada por um fluxo de senha esquecida.

validationData

Um ou mais pares de chave-valor que contêm os dados de validação na solicitação de login do usuário. É possível passar esses dados para a função do Lambda usando o parâmetro ClientMetadata nas ações de API InitiateAuth e AdminInitiateAuth.

clientMetadata

Um ou mais pares de chave-valor que você pode fornecer como entrada personalizada à função do Lambda para o acionador de migração do usuário. Para passar esses dados para a função do Lambda, você pode usar o parâmetro ClientMetadata nas ações de API AdminRespondToAuthChallenge e ForgotPassword.

Parâmetros de resposta de migrar usuário

userAttributes

Este campo é obrigatório.

Esse campo deve conter um ou mais pares de nome-valor que o Amazon Cognito armazena no perfil de usuário no grupo de usuários e usa como atributos de usuário. Você pode incluir atributos de usuário padrão e personalizados. Os atributos personalizados exigem o prefixo custom: para diferenciá-los dos atributos padrão. Para obter mais informações, consulte Atributos personalizados.

nota

Para redefinir uma senha no fluxo de senha esquecida, o usuário deverá ter um e-mail verificado ou um número de telefone verificado. O Amazon Cognito envia uma mensagem contendo um código de redefinição de senha para o e-mail ou o número de telefone nos atributos do usuário.

Atributos Requisito
Todos os atributos marcados como necessários quando o grupo de usuários foi criado Se os atributos necessários estiverem ausentes durante a migração, o Amazon Cognito usará valores padrão.
username

Obrigatório se você tiver configurado o grupo de usuários com atributos de alias além do nome de usuário para login e se o usuário tiver inserido um alias válido como nome de usuário. Esse valor de alias pode ser um endereço de e-mail, nome de usuário preferido ou número de telefone.

Se a solicitação e o grupo de usuários atenderem aos requisitos de alias, a resposta de sua função deverá atribuir o parâmetro username recebido para um atributo alias. Além disso, a resposta deve atribuir seu próprio valor ao atributo username. Se o grupo de usuários não atender às condições necessárias para mapear o username recebido para um alias, o parâmetro username na resposta deverá corresponder exatamente à solicitação ou ser omitido.

nota

username deve ser exclusivo no grupo de usuários.

finalUserStatus

Você pode definir esse parâmetro como CONFIRMED para confirmar automaticamente seus usuários para que eles possam fazer login com a senha anterior. Quando você define um usuário como CONFIRMED, ele não precisa fazer nada além para fazer login. Se você não definir esse atributo como CONFIRMED, ele será definido como RESET_REQUIRED.

Um finalUserStatus do RESET_REQUIRED significa que o usuário deve alterar a senha imediatamente após a migração no login, e sua aplicação cliente deve processar o PasswordResetRequiredException durante o fluxo de autenticação.

nota

O Amazon Cognito não impõe a política de intensidade de senha que você configurou para o grupo de usuários durante a migração usando o acionador do Lambda. Se a senha não atender à respectiva política que você configurou, o Amazon Cognito ainda assim a aceitará para que ela possa continuar a migrar o usuário. Para impor a política de intensidade da senha e rejeitar senhas que não atendam à política, valide a intensidade da senha no seu código. Depois, se a senha não atender à política, defina finalUserStatus como RESET_REQUIRED.

messageAction

Você pode definir esse parâmetro como SUPPRESS para se recusar a enviar a mensagem de boas-vindas que o Amazon Cognito geralmente envia Amazon novos usuários. Se sua função não retornar esse parâmetro, o Amazon Cognito enviará a mensagem de boas-vindas.

desiredDeliveryMediums

Esse parâmetro pode ser definido como EMAIL para enviar a mensagem de boas-vindas por e-mail ou como SMS para enviar a mensagem de boas-vindas por SMS. Se sua função não retornar esse parâmetro, o Amazon Cognito enviará a mensagem de boas-vindas por SMS.

forceAliasCreation

Se o parâmetro estiver definido como TRUE e o número de telefone ou o endereço de e-mail no parâmetro UserAttributes já existir como alias com um usuário diferente, a chamada de API migrará o alias do usuário anterior para o usuário recém-criado. O usuário anterior não pode mais fazer login usando esse alias.

Se você definir esse parâmetro como FALSE e o alias existir, o Amazon Cognito não migrará o usuário e retornará um erro para a aplicação cliente.

Se você não retornar esse parâmetro, o Amazon Cognito assumirá que seu valor é “false”.

enableSMSMFA

Defina esse parâmetro como true para exigir que o usuário migrado conclua a autenticação multifator (MFA) por mensagem de texto SMS para fazer login. Seu grupo de usuários deve ter a MFA habilitada. Os atributos do usuário nos parâmetros da solicitação devem incluir um número de telefone; do contrário, a migração desse usuário falhará.

Exemplo: migrar um usuário com uma senha existente

Esse exemplo de função Lambda migra o usuário com uma senha existente e suprime a mensagem de boas-vindas do 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 };