使用订阅密钥调用 API

已完成

发布 API 时,通常希望对可通过网关访问 API 的人员进行某种程度的控制。 订阅密钥是限制对 API 的访问权限的一种方式。

在这里,你将了解如何使用订阅密钥保护 API。

订阅和密钥

若要保护 API,可以使用订阅密钥。

注意

在生产 API 管理环境中,通常将订阅密钥与其他机制相结合,以保护 API 免受未经授权的使用,例如证书身份验证或 OAuth 2.0 授权。 这些超出了本模块的范畴。

订阅密钥是唯一自动生成的字符串,可以通过客户端请求的标头进行传递,也可以作为 URL 中的查询字符串进行传递。 该密钥与订阅(范围可为不同区域)直接相关,可以对权限和策略进行精细控制。 主要订阅范围是:

  • 所有 API
  • 单个 API
  • 产品

调用受保护 API 的应用程序必须在请求中包含密钥。

你可以随时重新生成这些订阅密钥。 例如,在怀疑已与未经授权的用户共享密钥时,重新生成订阅密钥。

订阅密钥。

每个订阅具有两个密钥,即主要密钥和辅助密钥。 具有两个密钥可为重新生成密钥提供便利。 例如,如果希望更改主要密钥并避免停机,可在应用中使用辅助密钥。

对于已启用订阅的产品,必须在调用该产品中的 API 时提供密钥。 作为开发人员,可通过提交订阅请求来获取密钥。 此过程是 API 管理工作流的核心部分。

注意

新建用户并为其提供订阅密钥,以便他们可以访问 API 是 API 管理工作流的核心部分,但本模块未进行相关介绍。

使用订阅密钥调用 API

调用受订阅保护的 API 终结点时,应用程序必须在所有 HTTP 请求中包含有效的密钥。 密钥可在请求标头中传递,也可以在 URL 中以查询字符串的形式传递。

默认标头名称为 Ocp-Apim-Subscription-Key,默认查询字符串为 subscription-key。

若要测试 API 调用,可以使用开发人员门户(如果它在服务层中可用)、命令行工具(如 curl)或其他 REST 工具。

下面是使用 curl 命令在请求标头中传递密钥的 GET 请求的示例:

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

以下是以查询字符串形式在 URL 中传递密钥的 curl 命令示例:

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

如果未在标头中传递密钥,或者作为 URL 中的查询字符串传递,则从 API 网关获取 401 拒绝访问 响应。