Acionador do Lambda de pós-autenticação - 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 pós-autenticação

O gatilho de pós-autenticação 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 e o usuário receber tokens. Adicione um gatilho de pós-autenticação quando quiser adicionar 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.

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 Fluxo de autenticação de grupo de usuários.

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 passar esses dados para sua função Lambda, você pode usar o ClientMetadata parâmetro nas ações AdminRespondToAuthChallengee. RespondToAuthChallengeAPI O Amazon Cognito não inclui dados do ClientMetadata parâmetro AdminInitiateAuthe InitiateAuthAPIoperações na solicitação que ele passa 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 API operações para consultar e modificar seus recursos ou registrar metadados de eventos em um sistema externo.

Tutoriais de autenticação

Imediatamente depois que o Amazon Cognito faz login de um usuário, ele ativa a função do Lambda de pós-autenticação. Veja esses tutoriais de login para Android e JavaScript iOS.

Plataforma Tutorial
JavaScript Identidade SDK Faça login de usuários com JavaScript
Identidade Android SDK Fazer login de usuários com Android
Identidade iOS SDK Fazer login de usuários com iOS

Exemplo de pós-autenticação

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

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": {} }