

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Desencadenador de Lambda Después de la autenticación
<a name="user-pool-lambda-post-authentication"></a>

El desencadenador posterior a la autenticación no cambia el flujo de autenticación del usuario. Amazon Cognito invoca este desencadenador Lambda al finalizar la autenticación y antes de que el usuario reciba los tokens. Añada un desencadenador posterior a la autenticación cuando desee añadir un procesamiento posterior personalizado de los eventos de autenticación, como, por ejemplo, ajustes de registro o de perfil de usuario que se reflejarán en el siguiente inicio de sesión.

Un desencadenador de Lambda posterior a la autenticación que no devuelva el cuerpo de la solicitud a Amazon Cognito puede seguir siendo la causa de que la autenticación no consiga realizarse. Para obtener más información, consulte [Conceptos importantes sobre los desencadenadores de Lambda](cognito-user-pools-working-with-lambda-triggers.md#important-lambda-considerations).

**Topics**
+ [Información general sobre el flujo de autenticación](#user-pool-lambda-post-authentication-1)
+ [Parámetros del desencadenador de Lambda de posautenticación](#cognito-user-pools-lambda-trigger-syntax-post-auth)
+ [Ejemplo de invocación Después de la autenticación](#aws-lambda-triggers-post-authentication-example)

## Información general sobre el flujo de autenticación
<a name="user-pool-lambda-post-authentication-1"></a>

![\[Desencadenador de Lambda de posautenticación: flujo del cliente\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/lambda-post-authentication-1.png)


Para obtener más información, consulte [Un ejemplo de sesión de autenticación](authentication.md#amazon-cognito-user-pools-authentication-flow).

## Parámetros del desencadenador de Lambda de posautenticación
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth"></a>

La solicitud que Amazon Cognito envía a esta función de Lambda es una combinación de los parámetros que se indican a continuación y los [parámetros comunes](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared) que Amazon Cognito agrega a todas las solicitudes.

------
#### [ JSON ]

```
{
    "request": {
        "userAttributes": {
             "string": "string",
             . . .
         },
         "newDeviceUsed": boolean,
         "clientMetadata": {
             "string": "string",
             . . .
            }
        },
    "response": {}
}
```

------

### Parámetros de la solicitud Después de la autenticación
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth-request"></a>

**newDeviceUsed**  
Este indicador señala si el usuario ha iniciado sesión en un nuevo dispositivo. Amazon Cognito solo establece esta marca si el valor de los dispositivos recordados del grupo de usuarios es `Always` o `User Opt-In`.

**userAttributes**  
Uno o varios pares de nombre y valor que representan atributos de usuario.

**clientMetadata**  
Uno o varios pares de clave-valor que puede proporcionar como datos de entrada personalizados a la función de Lambda que especifica para el desencadenador de posautenticación. Para pasar estos datos a la función Lambda, puede usar el ClientMetadata parámetro en las acciones [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)y de la [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)API. Amazon Cognito no incluye datos del ClientMetadata parámetro ni de las operaciones de la [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API en la solicitud que transfiere a la función de autenticación posterior. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)

### Parámetros de la respuesta Después de la autenticación
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth-response"></a>

Amazon Cognito no espera ninguna información de devolución adicional en la respuesta. La función puede utilizar operaciones de la API para consultar y modificar los recursos o registrar metadatos de eventos en un sistema externo.

## Ejemplo de invocación Después de la autenticación
<a name="aws-lambda-triggers-post-authentication-example"></a>

Este ejemplo de función Lambda posterior a la autenticación envía los datos de un inicio de sesión correcto a 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
```

------

Amazon Cognito transfiere la información del evento a la función de Lambda. A continuación, la función devuelve el mismo objeto de evento a Amazon Cognito con los cambios en la respuesta. En la consola de Lambda puede configurar un evento de prueba con los datos relevantes para el desencadenador de Lambda. El siguiente es un evento de prueba para este código de ejemplo:

------
#### [ JSON ]

```
{
  "triggerSource": "testTrigger",
  "userPoolId": "testPool",
  "userName": "testName",
  "callerContext": {
      "clientId": "12345"
  },
  "response": {}
}
```

------