Поделиться через


Несанкционированные ошибки (401) при вызове API

Ссылаясь на статью в Azure Управление API серии устранения неполадок, это третий сценарий лаборатории. Убедитесь, что вы выполнили инструкции по настройке лаборатории, чтобы повторно создать проблему.

Исходная версия продукта: служба Управление API
Исходный номер базы знаний: 4464930

Примечание.

Статья была полезной? Ваши входные данные важны для нас. Нажмите кнопку "Отзывы" на этой странице, чтобы сообщить нам, насколько хорошо эта статья работала для вас или как мы можем улучшить ее.

Симптомы

API эхо внезапно начал создавать различные типы HTTP 401 — неавторизованные ошибки при вызове операций под ним. Создание ресурсов и получение операций ресурсов отображают это сообщение об ошибке:

{
StatusCode: 401,
"message": "Доступ запрещен из-за недопустимого ключа подписки. Обязательно укажите действительный ключ для активной подписки".
}

В то время как остальные операции отображаются

{
StatusCode: 401,
"message": "Доступ запрещен из-за отсутствия ключа подписки. Обязательно включите ключ подписки при выполнении запросов к API".
}

Ожидаемый код HTTP-ответа для всех операций составляет 200, однако текст ответа будет отличаться, так как внутренний API всегда отражает то, что вы отправляете в виде текста запроса в дополнение к заголовкам.

Действия по устранению неполадок

  • Чтобы получить доступ к API, разработчикам необходимо сначала подписаться на продукт. Когда они подписываются, они получают ключ подписки, который отправляется как часть заголовка запроса, который хорошо подходит для любого API в этом продукте. Ocp-Apim-Subscription-Key — это заголовок запроса, отправленный для ключа подписки продукта, связанного с этим API. Значение ключа будет заполнено автоматически.

  • Что касается ошибки Access, отклоненной из-за недопустимого ключа подписки. Убедитесь, что укажите допустимый ключ для активной подписки, понятно, что вы отправляете неправильное значение заголовка запроса Ocp-Apim-Subscription-Key при вызове операции создания ресурса и извлечения ресурсов .

  • Ключ подписки можно проверить для определенного продукта на портале разработчика APIM, перейдя на страницу профиля после входа, как показано ниже.

  • Нажмите кнопку "Показать", чтобы просмотреть ключи подписки для соответствующих продуктов, на которые вы подписаны.

    Снимок экрана: ключи подписки для соответствующих продуктов.

  • Если вы проверяете заголовки, отправляемые на вкладке "Тест ", вы заметите, что значение заголовка запроса Ocp-Apim-Subscription-Key неправильно. Возможно, вам интересно, как это возможно, так как APIM автоматически заполняет этот заголовок запроса правильным ключом подписки.

  • Давайте проверим определение внешнего интерфейса для создания ресурса и получение операций ресурсов на вкладке "Конструктор". При тщательной проверке вы заметите, что эти операции получили неправильно закодированное значение заголовка запроса Ocp-Apim-Subscription-Key, добавленного на вкладку "Заголовки".

  • Вы можете удалить его, это должно устранить недопустимую проблему ключа подписки, но по-прежнему возникнет ошибка ключа подписки.

    Может поступить следующее сообщение об ошибке:

    HTTP/1.1 401 Неавторизовано

    Длина содержимого: 152
    Content-Type: application/json
    Дата: Солнце, 29 июля 2018 г. 14:29:50 GMT
    Различные: источник WWW-Authenticate: область AzureApiManagementKey="https://pratyay.azure-api.net/echo,name="Ocp-Apim-Subscription-Key",type="header" {
    StatusCode: 401,
    "message": "Доступ запрещен из-за отсутствия ключа подписки. Обязательно включите ключ подписки при выполнении запросов к API". }

  • Перейдите к API-интерфейсам Echo и проверьте, связан ли он с любым из доступных продуктов. В противном случае необходимо связать этот API с продуктом, чтобы получить ключ подписки.

    Чтобы получить доступ к API, разработчикам необходимо сначала подписаться на продукт. После этого они получат ключ подписки, который подходит для любого API в этом продукте. Создавая экземпляр службы управления API, вы автоматически становитесь его администратором. Поэтому вы по умолчанию будете подписаны на все продукты.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.