¿Por qué aparecen errores 401 no autorizados de API Gateway después de crear un autorizador de Lambda?

6 minutos de lectura
0

Mi API de Amazon API Gateway muestra errores 401 no autorizados después de crearle un autorizador de AWS Lambda. ¿Por qué ocurre esto y cómo puedo solucionar el problema?

Descripción breve

Nota: API Gateway puede devolver errores 401 no autorizados por muchas razones. Este artículo trata solamente los errores de respuesta 401 no autorizados devueltos por la API Gateway sin llamar a la función del autorizador de Lambda.

Cuando una API de API Gateway con un autorizador de Lambda recibe una solicitud no autorizada, API Gateway devuelve una respuesta de error 401 no autorizado.

Para autorizadores de Lambda basados en tokens

Los errores 401 no autorizados suelen producirse cuando falta un token requerido o el token no está validado por la expresión de validación del token del autorizador.

Para autorizadores de Lambda basados en parámetros de la solicitud

Los errores 401 no autorizados suelen producirse cuando faltan las fuentes de identidad configuradas, son nulas, están vacías o no son válidas.

Para solucionar este tipo de error, compruebe la información que debe incluirse en las solicitudes de la API revisando la configuración del autorizador de Lambda. A continuación, pruebe el autorizador llamando a la API con las fuentes de identidad o con el encabezado y el valor de token requeridos.

Nota: Por ejemplo, las configuraciones del autorizador de Lambda, consulte Creación de una función de autorizador de Lambda basada en un token y Creación de una función de autorizador de Lambda basada en solicitudes.

Resolución

Revise la configuración del autorizador de Lambda

  1. Abra la consola de API Gateway.

  2. En el panel de las API, elija el nombre de su API.

  3. En el panel de navegación, debajo del nombre de la API, seleccione Autorizadores. Se abrirá la página Autorizadores.

  4. Revise la configuración del autorizador para una de las siguientes opciones según su caso de uso:

Para autorizadores de Lambda basados en tokens

Si la carga útil del evento de Lambda se establece como Token, compruebe el valor Token Source. El valor Fuente del token debe usarse como encabezado de la solicitud en las llamadas a la API.

Importante: Si ha introducido una expresión regular en Validación del token, la API Gateway valida el token con esta expresión. Por ejemplo, si ha introducido la expresión regular \ w{5}, solo se validarán correctamente los valores de los símbolos con cadenas alfanuméricas de 5 caracteres.

-o-

Para autorizadores de Lambda basados en parámetros de la solicitud

Si la carga útil de eventos de Lambda está establecida como Solicitud, compruebe las fuentes de identidad configuradas. Las fuentes de identidad pueden ser encabezados, cadenas de consulta, cadenas de consulta de valores múltiples, variables stage, o variables $context.

Importante: Si la opción Almacenamiento en caché de autorizaciones está activada, las solicitudes a la API se validan con todas las fuentes de identidad configuradas.

  1. Si la opción Almacenamiento en caché de autorizaciones está activada (por ejemplo, «Autorización almacenada en caché durante 1 minuto»), desactive el almacenamiento en caché para realizar pruebas en el siguiente paso.

Para obtener más información, consulte Configuración de un autorizador de Lambda mediante la consola de API Gateway.

Implementación de la API

Si ha cambiado la configuración del autorizador de Lambda o cualquier otra configuración de la API, vuelva a implementar la API para que se apliquen los cambios.

Prueba del autorizador de Lambda

Para probar el autorizador de Lambda, realice una llamada de prueba a la API mediante una de las siguientes acciones:

Importante: Formatee la solicitud de acuerdo con la configuración de su autorizador de Lambda.

Para probar un autorizador de Lambda mediante la consola de API Gateway

  1. Abra la consola de API Gateway.

  2. En el panel de las API, elija el nombre de su API.

  3. En el panel de navegación, debajo del nombre de la API, seleccione Autorizadores.

  4. En la página Autorizadores, seleccione Probar junto a su autorizador.

  5. En el cuadro de diálogo Autorizador de prueba, realice una de las siguientes acciones según su caso de uso:

Para autorizadores de Lambda basados en tokens

  1. Elija Probar sin indicar ningún valor en Token de autorización. API Gateway devuelve un código de respuesta: 401 porque el token de autorización está vacío.

  2. Si la opción Validación del token está configurada con la expresión regular \ w{5}, introduzca un valor que no sea válido, como «abc123», en Token de autorización. A continuación, seleccione Probar. API Gateway devuelve un código de respuesta: 401 porque el valor de Token de autorización no cumple con la expresión de Validación del token.

  3. En el valor Token de autorización, introduzca permitir y, a continuación, seleccione Probar. API Gateway devuelve un código de respuesta: mensaje 200.

-o-

Para autorizadores de Lambda basados en parámetros de la solicitud

  1. Elimine los Parámetros de solicitud y seleccione Probar. API Gateway devuelve un código de respuesta: 401 porque faltan los Parámetros de solicitud.

  2. En Parámetros de solicitud, introduzca headerValue1, queryValue1, stageValue1 y elija Probar. API Gateway devuelve un código de respuesta: mensaje 200.

Para probar un autorizador de Lambda mediante Postman o curl

Para obtener instrucciones sobre cómo probar un autorizador de Lambda mediante la aplicación Postman, consulte Llamar a una API con los autorizadores de Lambda de la API Gateway.

Para obtener más información sobre curl, consulte el sitio web del proyecto cURL.

Nota:

  • Si ha desactivado la opción Almacenamiento en caché de autorizaciones para su autorizador de Lambda antes de realizar la prueba, puede volver a activarla al finalizar la prueba. Si reactiva Almacenamiento en caché de autorizaciones, asegúrese de volver a implementar la API para que se apliquen los cambios.
  • Si recibe errores de intercambio de recursos entre orígenes (CORS) del autorizador de Lambda, puede añadir los encabezados CORS a las respuestas DEFAULT 4XX de la API Gateway. Para obtener más información, consulte ¿Cómo puedo solucionar los errores de CORS desde la API de API Gateway?

Información relacionada

Control y administración del acceso a una API de REST en la API Gateway

¿Cómo puedo activar los registros de Amazon CloudWatch para solucionar problemas relacionados con la API de REST o la API de WebSocket en la puerta de enlace de la API?