Acionador do Lambda de pré-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 pré-autenticação

O Amazon Cognito invoca esse acionador quando um usuário tenta fazer login, de forma que você possa criar uma validação personalizada que realize ações preparatórias. Por exemplo, você pode negar a solicitação de autenticação ou registrar os dados da sessão em um sistema externo.

nota

Esse acionador do Lambda não é ativado quando um usuário não existe ou já tem uma sessão existente no grupo de usuários. Se a configuração PreventUserExistenceErrors de um cliente de aplicação do grupo de usuários estiver definida como ENABLED, o acionador do Lambda será ativado.

Visão geral do fluxo de autenticação

Acionador do Lambda de pré-autenticação: fluxo de cliente

A solicitação inclui dados de validação do cliente dos valores ClientMetadata que a aplicação transmite para as operações de API InitiateAuth e AdminInitiateAuth do grupo de usuários.

Para obter mais informações, consulte Fluxo de autenticação de grupo de usuários.

Parâmetros do acionador do Lambda de pré-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", . . . }, "validationData": { "string": "string", . . . }, "userNotFound": boolean }, "response": {} }

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

userAttributes

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

userNotFound

Quando você define PreventUserExistenceErrors como ENABLED para o cliente do grupo de usuários, o Amazon Cognito preenche esse booleano.

validationData

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

Parâmetros de resposta de pré-autenticação

O Amazon Cognito não espera nenhuma outra informação de retorno na resposta. Sua função pode retornar um erro para rejeitar a tentativa de login ou usar operações de API para consultar e modificar seus recursos.

Exemplo de pré-autenticação

Essa função de exemplo impede que usuários façam login em seu grupo de usuários com um cliente de aplicação específico. Como a função do Lambda de pré-autenticação não invoca quando o usuário já tem uma sessão, essa função só impede novas sessões com o ID do cliente da aplicação que você deseja bloquear.

Node.js
const handler = async (event) => { if ( event.callerContext.clientId === "user-pool-app-client-id-to-be-blocked" ) { throw new Error("Cannot authenticate users from this user pool app client"); } return event; }; export { handler };
Python
def lambda_handler(event, context): if event['callerContext']['clientId'] == "<user pool app client id to be blocked>": raise Exception("Cannot authenticate users from this user pool app client") # 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
{ "callerContext": { "clientId": "<user pool app client id to be blocked>" }, "response": {} }