你当前正在访问 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 管理中创建使用授权代码授予类型的连接的过程流。

显示用于创建凭据的流程图。

步骤 Description
1 客户端发送用于创建凭据提供程序的请求。
2 已创建凭据提供程序,并发送回响应。
3 客户端发送用于创建连接的请求。
4 创建连接,并发送回包含连接未“连接”信息的响应。
5 客户端发送请求以检索登录 URL,以在凭据提供程序上启动 OAuth 2.0 同意。 该请求包含要在最后一个步骤中使用的重定向后 URL。
6 返回响应时,应使用登录 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 配置为使用这两种授权类型,则需要两个凭据提供程序配置。 下表汇总了两种授权类型。

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

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

访问策略

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

身份 Description 优点 注意事项
服务主体 当组织使用 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。

显示在运行时检索令牌的流程图。

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