将 API 插件与使用 OAuth 保护的 API 集成
保护 API 的另一种常见模式是使用 OAuth。 OAuth 是用于授权的行业标准协议。 OAuth 使用访问令牌保护对资源的访问。 若要获取访问令牌,请向标识提供者注册应用程序并指定其类型,例如公共或机密客户端。 根据应用程序的类型,可能需要配置额外的设置,例如机密或证书。
当用户打开应用程序时,它会启动获取访问令牌的过程。 应用程序遵循的确切步骤取决于应用程序的类型和它使用的流。 当用户完成授权流时,他们将获得一个访问令牌,可用于调用 API。
将 API 插件与使用 OAuth 保护的 API 集成时,需要保护 API 的应用程序的客户端 ID 和客户端密码。 还需要标识提供者的授权、令牌和(可选)刷新终结点。 智能 Microsoft 365 Copilot 副驾驶®使用此信息代表当前用户使用 API 进行身份验证并获取访问令牌。 由于信息是机密信息,因此可以安全地将其存储在 Microsoft 365(也称为保管库)的安全存储位置。 然后,在应用中引用保管库条目的 ID。 在运行时,声明性代理 (2) 加载插件,并从指定条目 (3a) 检索信息。 声明性代理遵循授权代码授予类型(也称为身份验证代码流),以获取访问令牌 (3b) ,该令牌用于调用 API (3c) 。 下面的架构展示了此流程。
为插件配置 OAuth 信息时,可以选择为代码交换启用证明密钥 (PKCE) 。 即使使用机密客户端保护 API 插件,Microsoft建议使用 PKCE,因为它以最小的开销为应用程序增加了额外的安全层。
将 OAuth 信息存储在保管库中可以保证其安全,并且不会将其公开给客户端。 由于插件仅引用 条目,因此还可以更新客户端密码,而无需重新部署插件。
在开发期间,可以手动在保管库中注册开发 OAuth 信息,方法是转到 Teams 开发人员门户,从打开 OAuth 客户端注册的“工具”部分,或使用 Microsoft 365 代理工具包。 在生产环境中,管理员通常会注册 OAuth 信息,并为你提供在 API 插件中使用的保管库条目的 ID。