Acionador do Lambda de pós-autenticação - Amazon Cognito

Acionador do Lambda de pós-autenticação

O acionador post authentication não altera o fluxo de autenticação de um usuário. O Amazon Cognito invoca esse Lambda após a conclusão da autenticação, antes que o usuário receba os tokens. Adicione um acionador post authentication quando quiser adicionar um pós-processamento personalizado de eventos de autenticação, por exemplo, registros ou ajustes de perfil de usuário que serão refletidos no próximo login.

Um Lambda post authentication que não retorna o corpo da solicitação ao Amazon Cognito ainda pode gerar falha na autenticação. Para obter mais informações, consulte O que é importante saber sobre acionadores do Lambda.

Visão geral do fluxo de autenticação

Fluxo do Lambda de pós-autenticação: fluxo do cliente

Para obter mais informações, consulte Um exemplo de sessão de autenticação.

Parâmetros do acionador do Lambda de pós-autenticação

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", . . . }, "newDeviceUsed": boolean, "clientMetadata": { "string": "string", . . . } }, "response": {} }

Parâmetros de solicitação de pós-autenticação

newDeviceUsed

Esse sinalizador indica se o usuário fez login em um novo dispositivo. O Amazon Cognito só definirá esse sinalizador se o valor dos dispositivos memorizados do grupo de usuários for Always ou User Opt-In.

userAttributes

Um ou mais pares de nome-valor que representam atributos de usuário.

clientMetadata

Um ou mais pares de chave-valor que você pode fornecer como entrada personalizada para a função Lambda especificada para o acionador de pós-autenticação. Para transmitir esses dados para sua função do Lambda, é possível usar o parâmetro ClientMetadata nas ações de API AdminRespondToAuthChallenge e RespondToAuthChallenge. O Amazon Cognito não inclui dados do parâmetro ClientMetadata nas operações AdminInitiateAuth e InitiateAuth da API na solicitação que ele transmite para a função de pós-autenticação.

Parâmetros de resposta de pós-autenticação

O Amazon Cognito não espera nenhuma outra informação de retorno na resposta. Sua função pode usar operações de API para consultar e modificar seus recursos ou registrar metadados de eventos em um sistema externo.

Exemplo de pós-autenticação

Esse exemplo de função Lambda de pós-autenticação envia dados de um login bem-sucedido para o CloudWatch Logs.

Node.js
const handler = async (event) => { // Send post authentication data to Amazon CloudWatch logs console.log("Authentication successful"); console.log("Trigger function =", event.triggerSource); console.log("User pool = ", event.userPoolId); console.log("App client ID = ", event.callerContext.clientId); console.log("User ID = ", event.userName); return event; }; export { handler };
Python
import os def lambda_handler(event, context): # Send post authentication data to Cloudwatch logs print ("Authentication successful") print ("Trigger function =", event['triggerSource']) print ("User pool = ", event['userPoolId']) print ("App client ID = ", event['callerContext']['clientId']) print ("User ID = ", event['userName']) # 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
{ "triggerSource": "testTrigger", "userPoolId": "testPool", "userName": "testName", "callerContext": { "clientId": "12345" }, "response": {} }