将 API 插件与使用密钥保护的 API 集成
保护 API 的常见方法之一是使用 API 密钥。 API 密钥是 API 所有者颁发的任意字符串,用于授予你对 API 的访问权限。 许多常用服务使用 API 密钥来保护对其 API 的访问。 颁发 API 密钥的 API 提供程序控制密钥是否允许你访问整个 API 图面和所有资源,或者仅允许访问其特定部分。 该服务还控制密钥的有效期。
由于 API 密钥的简单性,API 密钥易于使用。 若要调用使用 API 密钥保护的 API,只需在 API 请求中包含 API 密钥。 然后,API 会验证密钥,并处理请求或拒绝身份验证或授权错误。 然而,这种简单性是有代价的。 API 密钥不会对用户进行身份验证,这意味着 API 无法代表用户执行作。 使用相同的 API 密钥调用 API 的所有用户具有相同的权限。
每个 API 提供程序定义它期望你如何随请求一起传递 API 密钥。 例如,API 可能要求使用特定的查询字符串参数或请求标头。
智能 Microsoft 365 Copilot 副驾驶®支持按以下方法传递 API 密钥:
- JSON Web 令牌 (JWT)
GET https://api.contoso.com/orders
Authorization: Bearer API_KEY
- 查询字符串参数
GET https://api.contoso.com/orders?api_key=API_KEY
- 自定义标头
GET https://api.contoso.com/orders
X-API-Key: API_KEY
API 密钥是不应公开共享的机密值。 生成与使用 API 密钥保护的 API 集成的 API 插件时,会将 API 密钥存储在 Microsoft 365(也称为保管库)的安全存储位置。 然后,在应用中引用保管库条目的 ID。 在运行时,声明性代理 (2) 加载插件,并将入口 ID 解析为实际 API 密钥 (3a) ,用于调用 API (3b) 。 下图演示了此过程。
通过将 API 密钥存储在保管库中,可以安全地管理 API 密钥,而无需公开它。 此外,由于应用不直接引用 API 密钥,因此无需更新应用即可对其进行更新。
在开发期间,可以自行在保管库中注册开发 API 密钥,方法是转到 Teams 开发人员门户,从打开 API 密钥注册的“工具”部分,或使用 Microsoft 365 代理工具包。 在生产环境中,管理员通常会注册 API 密钥,并为你提供在 API 插件中使用的保管库条目的 ID。