As chamadas de API do serviço OCI falham após serem submetidas a proxy por meio do Gateway de API
Descubra como diagnosticar e solucionar problemas de chamadas de API do serviço OCI que falham após serem submetidas a proxy por meio de um gateway, tendo criado com sucesso gateways de API e implantações de API com o serviço API Gateway.
As chamadas de API do serviço OCI podem falhar depois que o Gateway de API as processa, mesmo quando as mesmas chamadas são bem-sucedidas quando enviadas diretamente para o serviço OCI. Esse problema geralmente ocorre porque o serviço do OCI de destino valida uma assinatura de solicitação que não corresponde mais à solicitação que o serviço recebe.
Muitas APIs de serviço do OCI validam uma assinatura sobre o destino da solicitação final, host, método, corpo e cabeçalhos selecionados. Se o Gateway de API alterar qualquer valor assinado ao fazer proxy da solicitação, o serviço OCI de destino poderá rejeitar a solicitação.
Sintomas do Problema
Você pode ver um ou mais dos seguintes sintomas:
-
Um cliente pode chamar o serviço do OCI diretamente, mas a mesma chamada falha quando roteada por meio do Gateway de API.
-
Uma solicitação que usa a assinatura de chave da API do OCI ou outro fluxo de assinatura de solicitação do OCI só falha quando roteada por meio do gateway.
-
A solicitação com proxy retorna um erro de validação de autorização ou assinatura do serviço OCI de destino.
-
As chamadas para um ponto final de serviço do OCI, como IA Generativa ou outra API do OCI que espera solicitações assinadas do OCI, falham após o Gateway de API fazer proxy da solicitação.
Possíveis Causas
Esse problema pode ocorrer pelos seguintes motivos:
-
O cliente assina a solicitação original para o ponto final do Gateway de API em vez do ponto final do serviço OCI final.
-
O cabeçalho
Hostque o serviço OCI de destino recebe difere do valorhostque foi usado para criar a assinatura. -
O valor
(request-target)assinado não corresponde ao caminho e método de solicitação final. -
Os cabeçalhos de assinatura obrigatórios, como
date,hostoux-content-sha256, não correspondem à solicitação de saída final. -
O Gateway de API pode encaminhar cabeçalhos, mas não recalcula as assinaturas de solicitação do OCI para chamadas de serviço genéricas do OCI com proxy.
Revisar Requisitos de Assinatura
Confirme se o serviço do OCI de destino requer assinatura de solicitação do OCI. Em seguida, compare a solicitação do cliente com a solicitação que o serviço OCI de destino recebe.
Revise os seguintes detalhes da solicitação:
-
Inspecione o cabeçalho
Authorizationda solicitação do cliente. -
Confirme se o cabeçalho
Authorizationcomeça comSignature. -
Identifique os cabeçalhos incluídos na lista de cabeçalhos assinados.
-
Confirme se a assinatura foi criada para o URI de destino final, o método HTTP e o corpo da solicitação que o serviço OCI recebe.
Se a solicitação for assinada para o nome do host e o caminho do Gateway de API, em vez do ponto final do serviço OCI final, o serviço do OCI rejeitará a solicitação.
Revisar cabeçalhos assinados
Revise a solicitação assinada para cabeçalhos que a assinatura de solicitação do OCI geralmente usa:
-
Authorization -
date -
host -
x-content-sha256 -
content-type -
content-length
Se o serviço OCI de destino validar assinaturas de solicitação, os valores assinados deverão corresponder exatamente à solicitação de saída final.
Capture a resposta do Gateway de API e registre o opc-request-id retornado. Use o ID da solicitação para correlacionar a chamada com proxy com falha com logs e diagnósticos do lado do serviço.
Corrigir Chamadas Proxy de Serviço do OCI
Use um design que assine a solicitação que o serviço do OCI recebe. Não confie apenas no encaminhamento de cabeçalho para tornar uma solicitação de serviço do OCI assinada válida após o proxy.
Use a correção que corresponde ao seu padrão de integração:
-
Se o serviço OCI de destino exigir uma solicitação assinada, assine a solicitação de saída final fora do Gateway de API.
-
Se o Gateway de API tiver que fazer frente à integração, coloque um componente por trás do Gateway de API que gere a solicitação correta assinada pelo OCI para o serviço de destino. Para esse padrão, um back-end do serviço Functions geralmente é uma abordagem viável porque a função pode chamar o serviço OCI com seu próprio fluxo de autenticação do OCI.
Compreender limites de encaminhamento de cabeçalho
O Gateway de API pode encaminhar cabeçalhos, mas os cabeçalhos encaminhados não reparam incompatibilidades de assinatura de solicitação do OCI.
Passar o cabeçalho Authorization original inalterado não é suficiente quando um ou mais dos seguintes valores são alterados:
-
O valor final
host. -
O caminho da solicitação final.
-
O conjunto de cabeçalhos assinado.
-
O hash do corpo que o serviço OCI de destino valida.
Verificar Chamadas Proxy de Serviço do OCI
Depois de alterar o design de integração, verifique se a solicitação com proxy foi bem-sucedida.
Use as seguintes verificações:
-
Envie a solicitação por meio do caminho de solicitação atualizado.
-
Confirme se o serviço do OCI de destino aceita a solicitação.
-
Confirme se a solicitação foi assinada para o ponto final do serviço OCI final, em vez do ponto final do Gateway de API.
-
Confirme se o
opc-request-idretornado não corresponde mais a uma falha de assinatura ou autorização.
Para obter mais informações
Para obter mais informações, consulte: