Защита API с помощью подписок

Завершено

При публикации API в Управлении API использование ключей подписки является самым простым способом защитить доступ к этим интерфейсам API. Разработчики, которым требуется использовать опубликованные API, должны включать действительный ключ подписки в HTTP-запросах при выполнении вызовов к этим API. Иначе все вызовы немедленно игнорируются шлюзом Управления API. Они не передаются в серверные службы.

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

Примечание.

Служба "Управление API" также поддерживает другие механизмы защиты доступа к API, в том числе OAuth 2.0, сертификаты клиента и список разрешений IP-адресов.

Подписки и ключи

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

К трем основным областям подписок относятся следующие:

Область Сведения
Все API Применяется к каждому API, доступному из шлюза
Один API Это область применяется к одному импортированному API и всем его конечным точкам
Товар Продукт является коллекцией из одного или нескольких API, настроенных в службе управления API. Один и тот же API может быть назначен нескольким продуктам. Вы можете определять для продуктов различные правила доступа, квоты и условия использования.

Все вызовы приложения к защищенному API должны содержать ключ.

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

Image showing the Subscriptions screen.

Каждый ключ подписки содержит первичный и вторичный ключ. Такой подход позволяет упростить повторное создание ключа. Например, если вы хотите изменить первичный ключ, не допуская при этом простоя, используйте в приложениях вторичный ключ.

При выполнении вызовов к API в продуктах с активированной подпиской клиентам необходимо предоставлять ключ. Разработчики могут получить ключ, отправив запрос на подписку. При утверждении запроса необходимо отправить им ключ подписки безопасным образом, например в зашифрованном сообщении. Этот шаг является основной частью рабочего процесса службы управления API.

Вызов API с использованием ключа подписки

При выполнении вызовов к конечным точкам API, которые защищены с использованием подписки, приложения должны включать в запросы HTTP действительный ключ. Ключи могут передаваться как в заголовке запроса, так и в виде строки запроса в URL-адресе.

По умолчанию используется имя заголовка Ocp-Apim-Subscription-Key или строка запроса subscription-key.

Чтобы протестировать вызовы API, можно использовать портал разработчика или средства командной строки, например curl. Ниже приведен пример запроса GET, который содержит заголовок с ключом подписки и выполняется с помощью портала разработчика.

Call API from developer portal

Ниже показано, как передать ключ в заголовке запроса с помощью средства командной строки curl:

curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path

В следующем примере показана команда curl, которая передает ключ в виде строки запроса в URL-адресе:

curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>

Если в заголовке или в строке запроса в URL-адресе отсутствует ключ, шлюз API возвратит ответ 401 Доступ запрещен.