Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda - Amazon Cognito

Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda

Você pode criar uma função do AWS Lambda e, em seguida, acionar essa função durante as operações do grupo de usuários, como cadastro do usuário, confirmação e login (autenticação) com um acionador do Lambda. Você pode adicionar desafios de autenticação, migrar usuários e personalizar mensagens de verificação.

A tabela a seguir resume algumas das personalizações que podem ser realizadas:

Fluxo de grupo de usuários Operação Descrição

Fluxo de autenticação personalizado

Definir o desafio de autenticação Determina o próximo desafio em um fluxo de autenticação personalizado
Criar desafio de autenticação Cria um desafio em um fluxo de autenticação personalizado
Verificar a resposta do desafio de autenticação Determina se uma resposta está correta em um fluxo de autenticação personalizado
Eventos de autenticação Acionador do Lambda de pré-autenticação Validação personalizada para aceitar ou negar a solicitação de login
Acionador do Lambda de pós-autenticação Registro de eventos em log para análise personalizada
Acionador do Lambda antes da geração do token Aumentar ou suprimir as solicitações de token
Cadastrar-se Acionador do Lambda de pré-cadastro Validação personalizada para aceitar ou negar a solicitação de inscrição
Acionador do Lambda de pós-confirmação Mensagens de boas-vindas personalizadas ou registro de eventos em log para análise personalizada
Acionador do Lambda de migrar usuário Migrar um usuário de um diretório de usuário existente para grupos de usuários
Mensagens Acionador do Lambda de mensagem personalizada Personalização avançada e localização de mensagens
Criação de token Acionador do Lambda antes da geração do token Adicionar ou remover atributos em tokens de ID
Provedores de terceiros de e-mail e SMS Acionadores do Lambda remetente personalizado Usar um provedor de terceiros para enviar mensagens de e-mail e SMS

Considerações importantes

As seguintes informações são importantes para serem consideradas antes que você comece a trabalhar com funções Lambda:

  • Exceto para acionadores do Lambda do remetente personalizado, o Amazon Cognito invoca funções Lambda de forma síncrona. Quando chamada, a função Lambda deve responder em até cinco segundos. Caso ele não responda, o Amazon Cognito vai tentar novamente a chamada. Após 3 tentativas malsucedidas, a função encerra a sessão. Esse valor de encerramento de sessão de 5 segundos não pode ser alterado. Para obter mais informações, consulte o Modelo de programação do Lambda.

  • Se você excluir um gatilho do AWS Lambda, será necessário atualizar o gatilho correspondente no grupo de usuários. Por exemplo, se excluir o trigger pós-autenticação, você deverá definir o trigger Post authentication (Pós-autenticação) no grupo de usuários correspondente como none (nenhum).

  • Exceto para acionadores do Lambda de remetente personalizado, os erros gerados por acionadores do Lambda serão visíveis diretamente por seus usuários finais como parâmetros de consulta no URL de retorno de chamada se eles estiverem usando a interface do usuário hospedada do Amazon Cognito. Como prática recomendada, erros voltados para o usuário final devem ser gerados por acionadores do Lambda e qualquer informação confidencial ou de depuração deve ser registrada no próprio acionador do Lambda.

  • Quando você cria um acionador do Lambda fora do console do Amazon Cognito, é necessário adicionar permissões à função Lambda. Isso permite que o Amazon Cognito invoque a função em nome de seu grupo de usuários. É possível adicionar permissões do console do Lambda ou usar a operação AddPermission do Lambda.

    Exemplo de política baseada em recursos do Lambda

    O seguinte exemplo de política baseada em recursos do Lambda concede ao Amazon Cognito uma capacidade limitada de invocar uma função Lambda. O Amazon Cognito só pode invocar a função quando o fizer em nome do grupo de usuários na condição aws:SourceArn e da conta na condição aws:SourceAccount.

    { "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "lambda-allow-cognito", "Effect": "Allow", "Principal": { "Service": "cognito-idp.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "<your Lambda function ARN>", "Condition": { "StringEquals": { "AWS:SourceAccount": "<your account number>" }, "ArnLike": { "AWS:SourceArn": "<your user pool ARN>" } } } ] }

Como adicionar um acionador do Lambda do grupo de usuários

Original console

Para adicionar um acionador do Lambda do grupo de usuários com o console

  1. Crie uma função Lambda usando o console do Lambda. Para obter mais informações, sobre funções Lambda, consulte o Guia do desenvolvedor do AWS Lambda.

  2. Acesse o console do Amazon Cognito e escolha Manage User Pools (Gerenciar grupos de usuários).

  3. Escolha um grupo de usuários existente na lista ou crie um grupo de usuários.

  4. No seu grupo de usuários, escolha a guia Triggers na barra de navegação.

  5. Selecione um acionador do Lambda, como Pre sign-up (Pré-cadastro) ou Pre authentication (Pré-autenticação) e escolha sua função Lambda na lista suspensa Lambda function (Função Lambda).

  6. Selecione Save changes.

  7. Você pode registrar sua função Lambda em log usando o CloudWatch no console do Lambda. Para obter mais informações, consulte Acessar o CloudWatch Logs para Lambda.

New console

Para adicionar um acionador do Lambda do grupo de usuários com o console

  1. Crie uma função Lambda usando o console do Lambda. Para obter mais informações, sobre funções Lambda, consulte o Guia do desenvolvedor do AWS Lambda.

  2. Acesse o console do Amazon Cognito e escolha User Pools (Grupos de usuários).

  3. Escolha um grupo de usuários existente na lista ou crie um grupo de usuários.

  4. Escolha a guia User pool properties (Propriedades do grupo de usuários) e localize Lambda triggers (Acionadores do Lambda).

  5. Selecione Add a Lambda trigger (Adicionar um acionador do Lambda).

  6. Selecione uma Category (Categoria) de acionador do Lambda com base no estágio de autenticação que deseja personalizar.

  7. Selecione Assign Lambda function (Atribuir função do Lambda) e selecione uma função na mesma Região da AWS do seu grupo de usuários.

    nota

    Se suas credenciais do AWS Identity and Access Management tiverem permissão para atualizar a função do Lambda, o Amazon Cognito adicionará uma política baseada em recursos do Lambda que permite que o Amazon Cognito invoque a função selecionada. Se as credenciais conectadas não tiverem permissões suficientes do IAM, você deverá atualizar a política baseada em recursos separadamente. Para obter mais informações, consulte . Considerações importantes

  8. Selecione Save changes.

  9. Você pode registrar sua função Lambda em log usando o CloudWatch no console do Lambda. Para obter mais informações, consulte Acessar o CloudWatch Logs para Lambda.

Evento de acionador do Lambda do grupo de usuários

O Amazon Cognito transmite informações de eventos para a função Lambda, que retorna o mesmo objeto de evento para o Amazon Cognito com as alterações na resposta. Esse evento mostra os parâmetros comuns do acionador do Lambda:

JSON
{ "version": "string", "triggerSource": "string", "region": AWSRegion, "userPoolId": "string", "userName": "string", "callerContext": { "awsSdkVersion": "string", "clientId": "string" }, "request": { "userAttributes": { "string": "string", .... } }, "response": {} }

Parâmetros comuns do acionador do Lambda do grupo de usuários

versão

O número da versão da função Lambda.

triggerSource

O nome do evento que acionou a função Lambda. Para uma descrição de cada triggerSource, consulte Fontes de acionador do Lambda do grupo de usuários.

região

A região da AWS, como uma instância AWSRegion.

userPoolId

O ID do grupo de usuários.

userName

O nome de usuário do usuário atual.

callerContext

O contexto do chamador, que consiste no seguinte:

awsSdkVersion

O número de versão do AWS SDK.

clientId

O ID do cliente associado ao grupo de usuários.

request

A solicitação do serviço do Amazon Cognito. Esta solicitação deve incluir:

userAttributes

Um ou mais pares de nomes e valores de atributo de usuário. Cada par é exibido no formato "nome": "valor".

response

A resposta do acionamento do Lambda. Os parâmetros de retorno na resposta dependem do evento de acionamento.

Fontes de acionador do Lambda do grupo de usuários

Esta seção descreve cada parâmetro triggerSource do Lambda do Amazon Cognito e seu evento de acionamento.

Triggers de inscrição, confirmação e login (autenticação)
Trigger Valor triggerSource Evento de acionamento
Pre sign-up PreSignUp_SignUp Pre sign-up.
Pre sign-up PreSignUp_AdminCreateUser Pré-cadastro quando um administrador cria um novo usuário.
Pre sign-up PreSignUp_ExternalProvider Pré-cadastro para provedores de identidade externos.
Pós-confirmação PostConfirmation_ConfirmSignUp Post sign-up confirmation.
Pós-confirmação PostConfirmation_ConfirmForgotPassword Post Forgot Password confirmation.
Pre authentication PreAuthentication_Authentication Pre authentication.
Post authentication PostAuthentication_Authentication Post authentication.
Triggers de desafio de autenticação personalizado
Trigger Valor triggerSource Evento de acionamento
Definir o desafio de autenticação DefineAuthChallenge_Authentication Definir o desafio de autenticação.
Criar o desafio de autenticação CreateAuthChallenge_Authentication Criar desafio de autenticação.
Verificar desafio de autenticação VerifyAuthChallengeResponse_Authentication Verificar a resposta do desafio de autenticação.
Triggers de geração de pré-token
Trigger Valor triggerSource Evento de acionamento
Geração de pré-token TokenGeneration_HostedAuth Chamado durante a autenticação na página de login da IU hospedada no Amazon Cognito.
Geração de pré-token TokenGeneration_Authentication Chamado depois de os fluxos de autenticação de usuário concluírem.
Geração de pré-token TokenGeneration_NewPasswordChallenge Chamado após o usuário ser criado por um admin. Este fluxo é chamado quando o usuário tiver que alterar uma senha temporária.
Geração de pré-token TokenGeneration_AuthenticateDevice Chamado no final da autenticação do dispositivo de um usuário.
Geração de pré-token TokenGeneration_RefreshTokens Chamado quando um usuário tenta atualizar a identidade e acessar tokens.
Triggers de migração do usuário
Trigger Valor triggerSource Evento de acionamento
Migração do usuário UserMigration_Authentication Migração de usuários no momento de fazer login.
Migração do usuário UserMigration_ForgotPassword Migração de usuários durante o fluxo de "esqueceu a senha".
Triggers de mensagem personalizada
Trigger Valor triggerSource Evento de acionamento
Mensagem personalizada CustomMessage_SignUp Custom message – Para enviar o código de confirmação após cadastro.
Mensagem personalizada CustomMessage_AdminCreateUser Custom message – Para enviar a senha temporária a um novo usuário.
Mensagem personalizada CustomMessage_ResendCode Custom message – Para reenviar o código de confirmação a um usuário existente.
Mensagem personalizada CustomMessage_ForgotPassword Custom message – Para enviar o código de confirmação da solicitação de esquecimento de senha.
Mensagem personalizada CustomMessage_UpdateUserAttribute Custom message – Quando um e-mail ou número de telefone de um usuário for alterado, esse trigger enviará um código de verificação automaticamente ao usuário. Não pode ser usado para outros atributos.
Mensagem personalizada CustomMessage_VerifyUserAttribute Mensagem personalizada – Este trigger envia um código de verificação ao usuário quando solicitado manualmente para um novo e-mail ou número de telefone.
Mensagem personalizada CustomMessage_Authentication Custom message – Para enviar o código MFA durante a autenticação.