Saltar al contenido

¿Cómo puedo solucionar los errores HTTP 403 desde API Gateway?

11 minutos de lectura
0

Cuando llamo a la API de Amazon API Gateway, aparece un error 403.

Descripción corta

Aparece un error de código de estado "HTTP 403" cuando un cliente no puede acceder a una URL válida. El servidor entiende la solicitud, pero los problemas del lado del cliente no permiten que el servidor la complete.

Las API de API Gateway pueden mostrar errores "HTTP 403" por los siguientes motivos:

ProblemaEncabezado de respuestaMensaje de errorCausa raíz
Acceso denegado"x-amzn-errortype" = "AccessDeniedException""User is not authorized to access this resource with an explicit deny in an identity-based policy"El autorizador Lambda de API Gateway que usa la API no autoriza a la persona que llama.
Acceso denegado"x-amzn-errortype" = "AccessDeniedException""User: user-arn is not authorized to perform: execute-api:Invoke on resource: api-resource-arn with an explicit deny"La autorización de AWS Identity and Access Management (IAM) que utiliza la API no autoriza a la persona que llama. O bien, la política de recursos asociada a la API niega explícitamente el acceso a la persona que llama. Para obtener más información, consulta Autenticación de IAM y política de recursos.
Acceso denegado"x-amzn-errortype" = "AccessDeniedException""User: anonymous is not authorized to perform: execute-api:Invoke on resource:api-resource-arn"La autorización de IAM que utiliza la API no autoriza a la persona que llama. O bien, la API tiene una política de recursos asociada que no permite explícitamente que la persona que llama invoque la API. Para obtener más información, consulta Autenticación de IAM y política de recursos.
Acceso denegado"x-amzn-errortype" = "AccessDeniedException""The security token included in the request is invalid."El usuario que llama ha usado claves de IAM que no son válidas para acceder a una API que utiliza la autorización de IAM.
La clave de API no es válida"x-amzn-errortype" = "ForbiddenException""Forbidden"La persona que llama usó una clave de API incorrecta en un método que requiere una clave de API. O bien, no asociaste la clave de API a un plan de uso que se conecta a la etapa. O bien, has desactivado la clave de API o la clave no existe.
Se ha filtrado AWS WAF"x-amzn-errortype" = "ForbiddenException""Forbidden"El filtrado del firewall de aplicaciones web bloquea la solicitud cuando se activa AWS WAF en la API.
Se utilizan incorrectamente nombres de DNS públicos para invocar una API privada"x-amzn-errortype" = "ForbiddenException""Forbidden"Has utilizado nombres de DNS públicos de forma incorrecta para invocar una API privada desde una Amazon Virtual Private Cloud (Amazon VPC). Por ejemplo: faltan los encabezados Host o x-apigw-api-id en la solicitud. Para obtener más información, consulta Invocación de una API privada mediante nombres de host de DNS públicos específicos de punto de enlace.
Se invoca un nombre de dominio personalizado sin una asignación de rutas base"x-amzn-errortype" = "ForbiddenException""Forbidden"El usuario que llama invoca un dominio personalizado y no asigna una ruta base a una API. Para obtener más información, consulta Nombre de dominio personalizado para las API de REST públicas en API Gateway.
Se invoca un nombre de dominio personalizado privado"x-amzn-errortype" = "ForbiddenException""Forbidden"No has asociado el nombre de dominio personalizado privado al punto de enlace de VPC.
La URL de la etapa de la solicitud no es válida"x-amzn-errortype" = "ForbiddenException""Forbidden"La URL de la solicitud del usuario que llama incluye una etapa que no existe. Para obtener más información, consulta Invocación de las API de REST en API Gateway.
Se usa un certificado de cliente que no es válido para invocar un nombre de dominio personalizado de API Gateway que requiere TLS mutua"x-amzn-errortype" = "ForbiddenException""Forbidden"El almacén de confianza del nombre de dominio personalizado no emite el certificado de cliente que figura en la solicitud de la API o el certificado no es válido. Para obtener más información, consulta ¿Cómo soluciono los errores HTTP 403 Forbidden de un nombre de dominio personalizado de API Gateway que requiere TLS mutua?
Se usa el punto de enlace execute-api predeterminado para invocar una API de REST que tiene un nombre de dominio personalizado"x-amzn-errortype" = "ForbiddenException""Forbidden"El usuario que llama usa el punto de enlace execute-api predeterminado para invocar una API de REST después de desactivar el punto de enlace predeterminado. Para obtener más información, consulta Deshabilitación del punto de enlace predeterminado para las API de REST.
Se usan reglas de enrutamiento con un nombre de dominio personalizado"x-amzn-errortype" = "ForbiddenException""Forbidden"No configuraste una regla de enrutamiento coincidente con el nombre de dominio personalizado. Para obtener más información, consulta Solución de problemas con las reglas de enrutamiento.
La ruta del recurso no existe"x-amzn-errortype" = "IncompleteSignatureException""Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header. Authorization=allow"Se ha enviado una solicitud con un encabezado Authorization a una ruta de recursos de API que no existe.
El token de autenticación ha vencido"x-amzn-errortype" = "InvalidSignatureException""Signature expired"El token de autenticación de la solicitud ha vencido.
La firma no es válida"x-amzn-errortype" = "InvalidSignatureException""The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method."La firma de la solicitud no coincide con la del servidor cuando el usuario que llama accede a una API que usa la autorización de IAM.
Se invoca una API con el dominio personalizado activado cuando la URL del dominio incluye la etapa"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"Una asignación de API especifica una API, una etapa y, opcionalmente, una ruta que se utilizará para la asignación. Cuando asignas la etapa de una API a un dominio personalizado, no necesitas incluir la etapa en la URL. Para obtener más información, consulta Uso de las asignaciones de API para conectar las etapas de la API a un nombre de dominio personalizado para las API de REST.
Falta el token de autenticación"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"La solicitud no tiene un token de autenticación.
Falta el token de autenticación"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"Has enviado una solicitud a un método de API que no existe en la API.
Falta el token de autenticación"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"Has enviado una solicitud a un recurso de la API que no existe en la API.
La ruta del recurso no existe"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"Se ha enviado una solicitud sin ningún encabezado Authorization a una ruta de recursos de API que no existe. Para obtener más información, consulta ¿Cómo puedo solucionar los errores 403 "Missing Authentication Token" en el punto de enlace de la API de REST de API Gateway?

Resolución

Confirmación de si el recurso solicitado existe en la definición de la API

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Utiliza la consola de API Gateway o la AWS CLI para verificar las siguientes configuraciones:

  • Has desplegado la API con la definición de API más reciente.
  • El recurso solicitado existe en la definición de la API.

Identificación de la causa del error

Para identificar la causa del error, configura el registro de acceso de Amazon CloudWatch para la API. A continuación, consulta los eventos de registro de la API en CloudWatch para determinar si las solicitudes llegan a la API de API Gateway. Si las solicitudes llegan a la API de API Gateway y hay mensajes de error en tus registros, puedes seguir solucionando los problemas de API Gateway. Si las solicitudes llegan a otros recursos, es posible que otros servidores proxy o servicios sean la causa del error.

Nota: Las API HTTP no admiten el registro de ejecución.

Si puedes reproducir el error, usa el comando curl -v para obtener más detalles sobre la comunicación entre el cliente y la API:

curl -X HTTP\_VERB -v https://api-id.execute-api.region.amazonaws.com/stage

Nota: Sustituye la URL de ejemplo por la URL de invocación de la API.

Verificación de la API de REST y redireccionamiento de la asignación de API

Si usas un nombre de dominio personalizado que requiere TLS mutuo e invoca una API HTTP, es posible que recibas errores 403.

Crea una nueva asignación de API para probar la invocación de la API de REST para el nombre de dominio personalizado. Para identificar la causa de los errores, consulta los eventos de registro de la API de REST en CloudWatch. Después de identificar y resolver el error, redirige la asignación de API a la API HTTP.

Verificación de si el encabezado de la solicitud es correcto

Si el error se debe a una clave de API que no es válida, verifica que se haya enviado el encabezado x-api-key en la solicitud. Si no incluiste el encabezado o no es correcto, actualiza el encabezado de la solicitud.

Verificación de si se ha configurado correctamente la configuración de DNS en los puntos de enlace de Amazon VPC de la interfaz

Nota: Las siguientes tareas se aplican a las API que invocas desde una Amazon VPC que solo tenga un punto de enlace de VPC de la interfaz.

Comprueba que la configuración de DNS del punto de enlace de la interfaz esté configurada correctamente en función del tipo de API que utilices.

Para invocar una API regional de AWS desde una Amazon VPC, desactiva los nombres de DNS privados en el punto de enlace de la interfaz. A continuación, un DNS público puede resolver el nombre de host del punto de enlace. Para obtener más información, consulta Creación de una API privada.

Para usar el nombre de DNS privado de la API para invocar una API privada desde una Amazon VPC, activa los nombres de DNS privados en el punto de enlace. Entonces, los recursos de subred local de Amazon VPC pueden resolver el nombre de host del punto de enlace de la interfaz.

Nota: Si activas el DNS privado y utilizas el URI predeterminado, no necesitas configurar el nombre DNS público de la API privada ni un alias de Amazon Route 53.

Revisión de la política de recursos de la API

Revisa la política de recursos de la API para comprobar las siguientes configuraciones:

Revisión de los mensajes de solicitud y respuesta HTTP

Reproduce el error en un navegador web. Utiliza las herramientas de red del navegador para capturar los mensajes de solicitud y respuesta HTTP y, a continuación, analizarlos con el fin de determinar dónde se produjo el error.

Nota: Para el análisis sin conexión, guarda los mensajes en un archivo HTTP Archive (HAR).

Información relacionada

Common errors (Errores comunes)

¿Cómo permito que solo direcciones IP específicas accedan a mi API de REST de API Gateway?

¿Cómo soluciono los problemas al conectarme a un punto de enlace de API privada de API Gateway?

¿Cómo puedo activar los registros de CloudWatch para solucionar problemas con mi API de REST o API de WebSocket de API Gateway?

curl en el sitio web de curl