Las llamadas de API de servicio de OCI fallan después de ser proxy a través de API Gateway
Descubra cómo solucionar problemas de llamadas de API de servicio de OCI que fallan después de ser proxy a través de un gateway, después de haber creado correctamente gateways de API y despliegues de API con el servicio API Gateway.
Las llamadas de API de servicio de OCI pueden fallar después de que API Gateway las aproxime, incluso cuando las mismas llamadas se realizan correctamente cuando se envían directamente al servicio OCI. Este problema a menudo se produce porque el servicio de OCI de destino valida una firma de solicitud que ya no coincide con la solicitud que recibe el servicio.
Muchas API de servicio de OCI validan una firma en el destino de solicitud final, el host, el método, el cuerpo y las cabeceras seleccionadas. Si API Gateway cambia cualquier valor firmado al enviar la solicitud mediante proxy, el servicio de OCI de destino puede rechazar la solicitud.
Emitir síntomas
Es posible que vea uno o más de los siguientes síntomas:
-
Un cliente puede llamar al servicio OCI directamente, pero la misma llamada falla cuando se enruta a través de API Gateway.
-
Una solicitud que utiliza la firma de claves de API de OCI u otro flujo de firma de solicitudes de OCI solo falla cuando se enruta a través del gateway.
-
La solicitud proxy devuelve un error de autorización o validación de firma del servicio de OCI de destino.
-
Las llamadas a un punto final de servicio de OCI, como Generative AI u otra API de OCI que espera solicitudes de OCI firmadas, fallan después de que API Gateway proxy la solicitud.
Causas posibles
Este problema se puede producir por los siguientes motivos:
-
El cliente firma la solicitud original para el punto final de gateway de API en lugar del punto final de servicio de OCI final.
-
La cabecera
Hostque recibe el servicio de OCI de destino difiere del valorhostque se utilizó para crear la firma. -
El valor
(request-target)firmado no coincide con el método y la ruta de solicitud final. -
Las cabeceras de firma necesarias, como
date,hostox-content-sha256, no coinciden con la solicitud de salida final. -
API Gateway puede reenviar cabeceras, pero no vuelve a calcular las firmas de solicitud de OCI para llamadas de servicio de OCI proxy genéricas.
Revisar requisitos de firma
Confirme si el servicio de OCI de destino requiere la firma de la solicitud de OCI. A continuación, compare la solicitud de cliente con la solicitud que recibe el servicio de OCI de destino.
Revise los siguientes detalles de solicitud:
-
Inspeccione la cabecera
Authorizationde la solicitud del cliente. -
Confirme si la cabecera
Authorizationempieza porSignature. -
Identifique los encabezados que se incluyen en la lista de encabezados firmados.
-
Confirme si la firma se ha creado para el URI de destino final, el método HTTP y el cuerpo de la solicitud que recibe el servicio OCI.
Si la solicitud está firmada para el nombre de host y la ruta de acceso de API Gateway en lugar del punto final del servicio OCI final, el servicio OCI rechaza la solicitud.
Revisar cabeceras firmadas
Revise la solicitud firmada para las cabeceras que la firma de solicitud de OCI suele utilizar:
-
Authorization -
date -
host -
x-content-sha256 -
content-type -
content-length
Si el servicio de OCI de destino valida firmas de solicitud, los valores firmados deben coincidir exactamente con la solicitud de salida final.
Capture la respuesta de API Gateway y registre el opc-request-id devuelto. Utilice el ID de solicitud para correlacionar la llamada proxy fallida con logs y diagnósticos del lado del servicio.
Corrección de llamadas de proxy de servicio de OCI
Utilice un diseño que firme la solicitud que recibe el servicio OCI. No confíe en el reenvío de cabecera solo para que una solicitud de servicio de OCI firmada sea válida después de la proxy.
Utilice la corrección que coincida con el patrón de integración:
-
Si el servicio de OCI de destino necesita una solicitud firmada, firme la solicitud saliente final fuera de API Gateway.
-
Si API Gateway debe presentar la integración, coloque un componente detrás de API Gateway que genere la solicitud correcta firmada por OCI en el servicio de destino. Para este patrón, un backend de Functions suele ser un enfoque viable porque la función puede llamar al servicio OCI con su propio flujo de autenticación de OCI.
Descripción de los límites de reenvío de cabecera
API Gateway puede reenviar cabeceras, pero las cabeceras reenviadas no reparan las discrepancias de firma de solicitud de OCI.
La transferencia de la cabecera Authorization original sin cambios no es suficiente cuando cambian uno o más de los siguientes valores:
-
El valor
hostfinal. -
La ruta de solicitud final.
-
Conjunto de encabezados firmados.
-
Hash de cuerpo que valida el servicio de OCI de destino.
Verificar llamadas de proxy de servicio de OCI
Después de cambiar el diseño de integración, compruebe que la solicitud con proxy se realiza correctamente.
Utilice las siguientes comprobaciones:
-
Envíe la solicitud a través de la ruta de solicitud actualizada.
-
Confirme que el servicio de OCI de destino acepta la solicitud.
-
Confirme que la solicitud está firmada para el punto final de servicio de OCI final en lugar del punto final de gateway de API.
-
Confirme que el
opc-request-iddevuelto ya no corresponde a un fallo de firma o autorización.
Para obtener más información
Para obtener más información, consulte: