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 Host que o serviço OCI de destino recebe difere do valor host que 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, host ou x-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 Authorization da solicitação do cliente.

  • Confirme se o cabeçalho Authorization começa com Signature.

  • 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-id retornado não corresponde mais a uma falha de assinatura ou autorização.

Para obter mais informações

Para obter mais informações, consulte: