Partilhar via


Erros não autorizados (401) ao invocar APIs

Referindo-se ao artigo sobre a série de solução de problemas do Gerenciamento de API do Azure, esse é o terceiro cenário do laboratório. Certifique-se de ter seguido as instruções de configuração do laboratório de acordo com isso, para recriar o problema.

Versão original do produto: Serviço de Gerenciamento de API
Número original do KB: 4464930

Observação

Esse artigo foi útil? Sua opinião é importante para nós. Use o botão Comentários nesta página para nos informar o quão bem este artigo funcionou para você ou como podemos melhorá-lo.

Sintomas

A API Echo de repente começou a lançar diversos tipos de erros HTTP 401 - Não autorizados ao invocar as operações sob ele. As operações Criar recurso e Recuperar recurso estão mostrando esta mensagem de erro:

{
"statusCode": 401,
"message": "Acesso negado devido a chave de assinatura inválida. Certifique-se de fornecer uma chave válida para uma assinatura ativa."
}

Considerando que o resto das operações estão mostrando

{
"statusCode": 401,
"message": "Acesso negado devido à falta de chave de assinatura. Certifique-se de incluir a chave de assinatura ao fazer solicitações a uma API."
}

O código de resposta HTTP esperado para todas as operações é 200, no entanto, o corpo da resposta varia, pois a API de back-end sempre ecoa o que você envia como um corpo de solicitação, além dos cabeçalhos.

Etapas para solucionar problemas

  • Para obter acesso à API, os desenvolvedores devem, primeiro, inscrever-se em um produto. Quando eles se inscrevem, eles recebem uma chave de assinatura que é enviada como parte do cabeçalho da solicitação que é boa para qualquer API nesse produto. Ocp-Apim-Subscription-Key é o cabeçalho de solicitação enviado para a chave de assinatura do produto associado a essa API. A chave é preenchida automaticamente.

  • Em relação ao erro Acesso negado devido a chave de assinatura inválida. Certifique-se de fornecer uma chave válida para uma assinatura ativa, fica claro que você está enviando um valor errado do cabeçalho de solicitação Ocp-Apim-Subscription-Keyao invocar as operações Criar recurso e Recuperar recurso.

  • Você pode verificar sua chave de assinatura para um produto específico no portal do desenvolvedor do APIM navegando até a página Perfil após o login, conforme mostrado abaixo.

  • Selecione o botão Mostrar para ver as chaves de assinatura dos respectivos produtos que você assinou.

    Captura de tela das chaves de assinatura dos respectivos produtos.

  • Se você verificar os cabeçalhos que estão sendo enviados da guia Teste, observará que o valor do cabeçalho de solicitação Ocp-Apim-Subscription-Key está errado. Você pode estar se perguntando como isso é possível, porque o APIM preenche automaticamente esse cabeçalho de solicitação com a chave de assinatura correta.

  • Vamos verificar a definição de front-end das operações Criar recurso e Recuperar recurso na guia Design . Após uma inspeção cuidadosa, você notaria que essas operações obtiveram um valor codificado incorreto do cabeçalho de solicitação Ocp-Apim-Subscription-Key adicionado na guia Cabeçalhos .

  • Você pode removê-lo, isso deve resolver o problema da chave de assinatura inválida, mas ainda assim você receberá um erro de chave de assinatura ausente.

    Você pode receber a seguinte mensagem de erro:

    HTTP/1.1 401 Não autorizado

    Comprimento do conteúdo: 152
    Tipo de conteúdo: application/json
    Data: Dom, 29 Jul 2018 14:29:50 GMT
    Variar: Origem WWW-Authenticate: AzureApiManagementKey realm="https://pratyay.azure-api.net/echo",name="Ocp-Apim-Subscription-Key",type="header" {
    "statusCode": 401,
    "message": "Acesso negado devido à falta de chave de assinatura. Certifique-se de incluir a chave de assinatura ao fazer solicitações para uma API." }

  • Vá para as configurações da API Echo e verifique se ele está associado a algum dos produtos disponíveis. Caso contrário, você deverá associar essa API a um produto para obter uma chave de assinatura.

    Os Desenvolvedores devem primeiro se inscrever em um produto para obter acesso à API. Com a assinatura, eles obtêm uma chave de assinatura que funciona para qualquer API no produto. Se você criou a instância do APIM, já é um administrador e, portanto, está inscrito em cada produto por padrão.