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-Key ao 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.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.