使用订阅密钥调用 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 拒绝访问 响应。