你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

凭据管理器中的 OAuth 2.0 连接 - 过程详细信息和流

适用于:所有 API 管理层级

本文提供有关在 Azure API 管理中使用凭据管理器管理 OAuth 2.0 连接的过程流的详细信息。 过程流分为两个部分:“管理”和“运行时”。

有关 API 管理中的凭据管理器的背景信息,请参阅关于 API 管理中的凭据管理器和 API 凭据

连接管理

凭据管理器中连接的“管理”部分负责为 OAuth 2.0 令牌设置和配置凭据提供程序,为提供程序启用同意流,以及设置一个或多个连接供凭据提供程序访问凭据。

下图总结了在 API 管理中创建使用授权代码授予类型的连接的过程流。

关系图显示了用于创建凭据的进程流。

步骤 说明
1 客户端发送用于创建凭据提供程序的请求
2 已创建凭据提供程序,并发送回响应
3 客户端发送用于创建连接的请求
4 创建连接,并发送回包含连接未“连接”信息的响应
5 客户端发送请求来检索登录 URL,以便在凭据提供程序上启动 OAuth 2.0 同意。 该请求包含要在最后一个步骤中使用的重定向后 URL
6 返回的响应包含一个登录 URL,应使用该 URL 来启动同意流。
7 客户端使用上一步骤中提供的登录 URL 打开浏览器。 浏览器会重定向到凭据提供程序的 OAuth 2.0 同意流
8 批准同意后,浏览器使用授权代码重定向到在凭据提供程序上配置的重定向 URL
9 API 管理使用授权代码来提取访问和刷新令牌
10 API 管理接收令牌并将其加密
11 API 管理重定向到步骤 5 中提供的 URL

凭据提供程序

配置凭据提供程序时,可以在不同的 OAuth 提供程序和授予类型(授权代码或客户端凭据)之间进行选择。 每个提供程序都需要特定配置。 需要牢记的重要事项:

  • 凭据提供程序配置只能有一种授予类型。
  • 一个凭据提供程序配置可以有多个连接

注意

借助通用 OAuth 2.0 提供者,可以使用支持 OAuth 2.0 流标准的其他标识提供者。

配置凭据提供程序时,凭据管理器会在后台创建一个凭据存储,用于缓存提供程序的 OAuth 2.0 访问令牌和刷新令牌。

连接到凭据提供程序

若要访问和使用提供程序的令牌,客户端应用需要连接到凭据提供程序。 访问策略根据 Microsoft Entra ID 标识允许给定连接。 可以为提供程序配置多个连接。

配置连接的过程因配置的授予而异,特定于凭据提供程序配置。 例如,如果要将 Microsoft Entra ID 配置为使用这两种授权类型,则需要两个凭据提供者配置。 下表概述了这两种授权类型。

授权类型 说明
授权代码 绑定到用户上下文,这意味着用户需要同意连接。 只要刷新令牌有效,API 管理就可以检索新的访问令牌和刷新令牌。 如果刷新令牌失效,用户需要重新授权。 所有凭据提供程序都支持授权代码。 了解详细信息
客户端凭据 不绑定到用户,通常在应用程序到应用程序方案中使用。 客户端凭据授权类型不需要同意,并且连接不会失效。 了解详细信息

对于基于授权代码授权类型的连接,必须向提供程序进行身份验证并同意授权。 在凭据提供程序成功登录并授权后,提供程序会返回有效的访问和刷新令牌,这些令牌由 API 管理加密并保存。

访问策略

为每个连接配置一个或多个访问策略。 访问策略确定哪些 Microsoft Entra ID 标识可以在运行时访问凭据。 连接目前支持使用服务主体、API 管理实例的标识、用户和组进行访问。

标识 说明 优点 注意事项
服务主体 当组织使用 Microsoft Entra ID 时,其令牌可用于验证和授予对特定 Azure 资源的访问权限的标识。 通过使用服务主体,组织可以避免在需要访问资源时创建虚拟用户来管理身份验证。 服务主体是表示已注册的 Microsoft Entra 应用程序的 Microsoft Entra 标识。 允许更紧密地访问连接和用户委派方案。 未绑定到特定 API 管理实例。 依赖于 Microsoft Entra ID 来强制实施权限。 获取授权上下文需要 Microsoft Entra ID 令牌。
托管标识 <Your API Management instance name> 此选项对应于绑定到 API 管理实例的托管标识。 默认情况下,为相应的 API 管理实例提供对系统分配的托管标识的访问权限。 标识与 API 管理实例绑定。 任何对 API 管理实例具有“参与者”访问权限的人都可以访问授予托管标识权限的任何连接。
用户或组 Microsoft Entra ID 租户中的用户或组。 允许限制对特定用户或用户组的访问。 要求用户具有 Microsoft Entra ID 帐户。

连接运行时

运行时”部分要求使用 get-authorization-context 策略配置后端 OAuth 2.0 API。 在运行时,策略从 API 管理为提供程序设置的凭据存储中提取和存储访问和刷新令牌。 当调用进入 API 管理并执行 get-authorization-context 策略时,它首先将验证现有授权令牌是否有效。 如果授权令牌已过期,API 管理将使用 OAuth 2.0 流刷新凭据提供程序中存储的令牌。 然后使用访问令牌来授权对后端服务的访问。

在策略执行期间,对令牌的访问也会使用访问策略进行验证。

下图显示了基于使用授权代码授权类型的连接来获取和存储授权和刷新令牌的示例过程流。 检索到令牌后,向后端 API 发出调用。

关系图显示了用于在运行时检索令牌的进程流。

步骤 说明
1 客户端向 API 管理实例发送请求
2 get-authorization-context 策略检查访问令牌是否对当前连接有效
3 如果访问令牌已过期但刷新令牌有效,则 API 管理会尝试从配置的凭据提供程序提取新的访问令牌和刷新令牌
4 凭据提供程序会返回访问令牌和刷新令牌,这些令牌已加密并已保存到 API 管理
5 检索令牌后,使用 set-header 策略将访问令牌作为授权标头附加到发往后端 API 的传出请求
6 向 API 管理返回响应
7 向客户端返回响应