Acionador do Lambda de pré-cadastro - 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á.

Acionador do Lambda de pré-cadastro

Você pode personalizar o processo de cadastro em grupos de usuários que têm opções por autoatendimento. Alguns usos comuns do acionador pre sign-up são: realizar análises e registros personalizados de novos usuários, aplicar padrões de segurança e governança ou vincular usuários de um IdP de terceiros a um perfil de usuário consolidado. Você também pode ter usuários confiáveis que não precisam passar por verificação e confirmação.

Um pouco antes de o Amazon Cognito cadastrar um novo usuário local ou federado, ele ativa a função do Lambda pre sign-up. Como parte do processo de cadastro, você pode usar essa função para analisar o evento de login com a lógica personalizada e modificar ou negar o novo usuário.

Fluxos do Lambda de pré-cadastro

Fluxo de cadastro do cliente

Acionamento do Lambda de pré-cadastro: fluxo do cliente

Fluxo de cadastro do servidor

Fluxo do Lambda de pré-cadastro: fluxo de servidor

A solicitação inclui dados de validação do cliente. Esses dados vêm dos ValidationData valores passados para o grupo de usuários SignUp e os métodos AdminCreateUser da API.

Parâmetros do acionador do Lambda de pré-cadastro

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
{ "request": { "userAttributes": { "string": "string", . . . }, "validationData": { "string": "string", . . . }, "clientMetadata": { "string": "string", . . . } }, "response": { "autoConfirmUser": "boolean", "autoVerifyPhone": "boolean", "autoVerifyEmail": "boolean" } }

Parâmetros de solicitação de pré-cadastro

userAttributes

Um ou mais pares de nome-valor que representam atributos de usuário. Os nomes de atributo são as chaves.

validationData

Um ou mais pares de chave-valor com dados de atributos do usuário que a aplicação passou para o Amazon Cognito na solicitação para criar um usuário. Envie essas informações para sua função Lambda no ValidationData parâmetro da sua solicitação AdminCreateUserou da SignUpAPI.

O Amazon Cognito não define seus ValidationData dados como atributos do usuário que você cria. ValidationData são informações temporárias do usuário que você fornece para fins de seu gatilho Lambda de pré-inscrição.

clientMetadata

Um ou mais pares de chave-valor que você pode fornecer como entrada personalizada para a função Lambda especificada para o acionamento de pré-cadastro. Você pode passar esses dados para sua função Lambda usando o ClientMetadata parâmetro nas seguintes ações de API: AdminCreateUser, AdminRespondToAuthChallengeForgotPassword, e. SignUp

Parâmetros de resposta de pré-cadastro

Na resposta, você pode definir autoConfirmUser para true se quiser confirmar o usuário automaticamente. Você pode definir autoVerifyEmail como true para verificar o e-mail do usuário automaticamente. Você pode definir autoVerifyPhone como true para verificar automaticamente o número de telefone do usuário.

nota

Os parâmetros de resposta autoVerifyPhone, autoVerifyEmail e autoConfirmUser são ignorados pelo Amazon Cognito quando a função do Lambda de pré-inscrição é acionada pela API AdminCreateUser.

autoConfirmUser

Definido como true para confirmar o usuário automaticamente; do contrário, defina-o como false.

autoVerifyEmail

Defina como true para especificar como verificado o e-mail de um usuário que está se cadastrando ou, do contrário, defina como false. Se autoVerifyEmail for definido como true, o atributo email deverá ter um valor válido, não nulo. Caso contrário, ocorrerá um erro e o usuário não poderá concluir o cadastro.

Se o atributo email for selecionado como um alias, será criado um alias para o e-mail do usuário quando autoVerifyEmail for definido. Se já houver um alias com esse endereço de e-mail, ele será movido para o novo usuário e o endereço de e-mail do usuário anterior será marcado como não verificado. Para obter mais informações, consulte Personalização dos atributos de login.

autoVerifyPhone

Defina como true para definir como verificado o número de telefone de um usuário que está se cadastrando; do contrário, defina-o como false. Se autoVerifyPhone for definido como true, o atributo phone_number deverá ter um valor válido, não nulo. Caso contrário, ocorrerá um erro e o usuário não poderá concluir o cadastro.

Se o atributo phone_number for selecionado como um alias, este será criado para o número de telefone do usuário quando autoVerifyPhone for definido. Se um alias com esse número de telefone já existir, o alias será movido para o novo usuário e o número de telefone do usuário anterior será marcado como não verificado. Para obter mais informações, consulte Personalização dos atributos de login.

Exemplos de inscrição

Seus usuários podem se inscrever no login gerenciado. Você também pode encontrar o código de exemplo do SDK para a SignUpoperação emUse SignUp com um AWS SDK ou CLI.

Exemplo de pré-cadastro: confirmação automática de usuários em um domínio registrado

Este é um exemplo de código de gatilho do Lambda. O gatilho de pré-inscrição é invocado imediatamente antes que o Amazon Cognito processe a solicitação de inscrição. Ele usa um atributo personalizado custom:domain para confirmar automaticamente novos usuários de um determinado domínio de e-mail. Os novos usuários que não estiverem no domínio personalizado serão adicionados ao seu grupo de usuários, mas não automaticamente confirmados.

Node.js
export const handler = async (event, context, callback) => { // Set the user pool autoConfirmUser flag after validating the email domain event.response.autoConfirmUser = false; // Split the email address so we can compare domains var address = event.request.userAttributes.email.split("@"); // This example uses a custom attribute "custom:domain" if (event.request.userAttributes.hasOwnProperty("custom:domain")) { if (event.request.userAttributes["custom:domain"] === address[1]) { event.response.autoConfirmUser = true; } } // Return to Amazon Cognito callback(null, event); };
Python
def lambda_handler(event, context): # It sets the user pool autoConfirmUser flag after validating the email domain event['response']['autoConfirmUser'] = False # Split the email address so we can compare domains address = event['request']['userAttributes']['email'].split('@') # This example uses a custom attribute 'custom:domain' if 'custom:domain' in event['request']['userAttributes']: if event['request']['userAttributes']['custom:domain'] == address[1]: event['response']['autoConfirmUser'] = True # Return to Amazon Cognito return event

O Amazon Cognito transmite informações de evento para a função Lambda. A função retorna o mesmo objeto de evento para o Amazon Cognito, com as alterações na resposta. No console do Lambda, você pode configurar um evento de teste com dados relevantes para o acionador do Lambda. A seguir, é mostrado um evento de teste para esse exemplo de código:

JSON
{ "request": { "userAttributes": { "email": "testuser@example.com", "custom:domain": "example.com" } }, "response": {} }

Exemplo de pré-cadastro: confirmação e verificação automáticas de todos os usuários

Este exemplo confirma todos os usuários e define os atributos email e phone_number do usuário como verificados, se o atributo estiver presente. Além disso, se o alias estiver habilitado, eles serão criados para phone_number e email quando a verificação automática for definida.

nota

Se um alias com o mesmo número de telefone já existir, o alias será movido para o novo usuário e o phone_number do usuário anterior será marcado como não verificado. O mesmo se aplica para endereços de e-mail. Para evitar que isso aconteça, você pode usar a ListUsers API de grupos de usuários para ver se há um usuário existente que já está usando o número de telefone ou endereço de e-mail do novo usuário como alias.

Node.js
exports.handler = (event, context, callback) => { // Confirm the user event.response.autoConfirmUser = true; // Set the email as verified if it is in the request if (event.request.userAttributes.hasOwnProperty("email")) { event.response.autoVerifyEmail = true; } // Set the phone number as verified if it is in the request if (event.request.userAttributes.hasOwnProperty("phone_number")) { event.response.autoVerifyPhone = true; } // Return to Amazon Cognito callback(null, event); };
Python
def lambda_handler(event, context): # Confirm the user event['response']['autoConfirmUser'] = True # Set the email as verified if it is in the request if 'email' in event['request']['userAttributes']: event['response']['autoVerifyEmail'] = True # Set the phone number as verified if it is in the request if 'phone_number' in event['request']['userAttributes']: event['response']['autoVerifyPhone'] = True # Return to Amazon Cognito return event

O Amazon Cognito transmite informações de evento para a função do Lambda. A função retorna o mesmo objeto de evento para o Amazon Cognito, com as alterações na resposta. No console do Lambda, você pode configurar um evento de teste com dados relevantes para o acionador do Lambda. A seguir, é mostrado um evento de teste para esse exemplo de código:

JSON
{ "request": { "userAttributes": { "email": "user@example.com", "phone_number": "+12065550100" } }, "response": {} }

Exemplo de pré-cadastro: negar cadastro se o nome de usuário tiver menos de cinco caracteres

Esse exemplo verifica a extensão do nome de usuário em uma solicitação de cadastro. O exemplo retornará um erro se o usuário tiver inserido um nome com menos de cinco caracteres.

Node.js
export const handler = (event, context, callback) => { // Impose a condition that the minimum length of the username is 5 is imposed on all user pools. if (event.userName.length < 5) { var error = new Error("Cannot register users with username less than the minimum length of 5"); // Return error to Amazon Cognito callback(error, event); } // Return to Amazon Cognito callback(null, event); };
Python
def lambda_handler(event, context): if len(event['userName']) < 5: raise Exception("Cannot register users with username less than the minimum length of 5") # Return to Amazon Cognito return event

O Amazon Cognito transmite informações de evento para a função do Lambda. A função retorna o mesmo objeto de evento para o Amazon Cognito, com as alterações na resposta. No console do Lambda, você pode configurar um evento de teste com dados relevantes para o acionador do Lambda. A seguir, é mostrado um evento de teste para esse exemplo de código:

JSON
{ "userName": "rroe", "response": {} }