category
为了帮助您管理对后端API的访问,API管理实例包含一个凭据管理器。使用凭据管理器管理、存储和控制从API管理实例访问API凭据。
笔记
- 目前,您可以使用凭据管理器来配置和管理后端OAuth 2.0 API的连接(以前称为授权)。
- 凭证管理器没有引入任何突破性的更改。OAuth 2.0凭据提供程序和连接使用现有的API管理授权API和资源提供程序。
OAuth 2.0 API的托管连接[Managed connections]
使用凭证管理器,您可以大大简化跨使用OAuth 2.0的一个或多个后端或SaaS服务对用户、组和服务主体进行身份验证和授权的过程。使用API管理的凭据管理器,无需编写一行代码即可轻松配置OAuth 2.0、同意、获取令牌、在凭据存储中缓存令牌以及刷新令牌。使用访问策略将身份验证委托给API管理实例、服务主体、用户或组。有关OAuth 2.0的背景,请参阅Microsoft身份平台和OAuth 2.0授权代码流。
此功能使API能够在有或没有订阅密钥的情况下公开,对后端服务使用OAuth 2.0授权,并通过服务集成降低在提升、实施和维护安全功能方面的开发成本。
API管理凭证管理器和支持的SaaS身份提供商的示意图。
示例用例
使用API管理中管理的OAuth连接,客户可以轻松连接到使用OAuth 2.0的SaaS提供商或后端服务。以下是一些示例:
- 通过附加存储的授权令牌【stored authorization token】和代理请求,轻松连接到SaaS后端
- 通过附加授权令牌将代理请求发送到Azure App Service web应用程序或Azure Functions后端,授权令牌稍后可以应用转换逻辑将请求发送到SaaS后端
- 通过附加多个访问令牌来轻松执行联邦,从而向“GraphQL联邦后端”发出代理请求
- 公开检索令牌端点,获取缓存令牌,并代表用户从任何计算(例如控制台应用程序或Kubernetes守护进程)调用SaaS后端。使用支持的语言组合您最喜欢的SaaS SDK。
- 连接到多个SaaS后端时的Azure Functions无人值守场景。
- Durable Functions通过SaaS连接更接近Logic Apps。
- 使用OAuth 2.0连接,API管理中的每个API都可以充当逻辑应用程序自定义连接器。
凭证管理器是如何工作的?
凭证管理器中的令牌凭证由两部分组成:管理和运行时。
- 凭证管理器中的管理部分负责为OAuth 2.0令牌设置和配置凭证提供者,启用身份提供者的同意流,并设置一个或多个与凭证提供者的连接以访问凭证。有关详细信息,请参阅连接管理。
- 运行时部分使用获取授权上下文策略来获取和存储连接的访问和刷新令牌。当调用进入API管理并执行get-authorization-context策略时,它首先验证现有授权令牌是否有效。如果授权令牌已过期,API管理将使用OAuth 2.0流刷新身份提供程序中存储的令牌。然后,访问令牌用于授权对后端服务的访问。有关详细信息,请参阅连接运行时。
何时使用凭证管理器?
以下是使用凭据管理器的三种场景。
配置场景
配置凭据提供程序和连接后,API管理器可以测试连接。API管理器将测试后端OAuth API配置为使用实例的托管标识使用get-authorization-context策略。API管理器然后可以通过调用测试API来测试连接。
凭证管理器初始配置场景图。
无人值守场景
默认情况下,在创建连接时,会为API管理实例的托管标识预先配置访问策略和连接。为了使用这样的连接,不同的用户可以登录到客户端应用程序,如静态web应用程序,然后该应用程序调用通过API管理公开的后端API。要进行此调用,使用获取授权上下文策略应用连接。由于API调用使用与用户上下文无关的预配置连接,因此会向所有用户返回相同的数据。
凭据管理器的托管身份场景图。
参与(用户委托)场景
为了为调用需要用户上下文的后端SaaS API的客户端应用程序(如静态web应用程序)的用户提供简化的身份验证体验,您可以代表Microsoft Entra用户或组身份启用对连接的访问。在这种情况下,配置的用户只需要登录并提供一次同意,然后API管理实例将创建并管理他们的连接。当API管理获得要转发到外部服务的传入调用时,它将连接中的访问令牌附加到请求。当API请求和响应面向个人时(例如,检索用户特定的配置文件信息),这是理想的选择。
凭证管理器的用户委托场景图。
如何配置凭据管理器?
要求
- 必须为API管理实例启用托管系统签名标识。
- API管理实例必须在端口443(HTTPS)上具有到internet的出站连接。
可利用性
所有API管理服务层- 自托管网关不支持
- 主权云或以下地区不支持:澳大利亚中部、澳大利亚中部2、印度中部
分步示例
- 配置凭据管理器-GitHub API
- 配置凭据管理器-Microsoft Graph API
- 配置凭据管理器-用户委派访问
- Configure credential manager - GitHub API
- Configure credential manager - Microsoft Graph API
- Configure credential manager - user-delegated access
安全考虑
访问令牌和其他秘密(例如,客户端秘密)使用信封加密进行加密,并存储在内部多租户存储中。使用每个数据唯一的密钥,使用AES-128对数据进行加密。这些密钥使用存储在Azure密钥库中的主证书进行非对称加密,并每月轮换一次。
限制
Resource | Limit |
---|---|
Maximum number of credential providers per service instance | 1,000 |
Maximum number of connections per credential provider | 10,000 |
Maximum number of access policies per connection | 100 |
Maximum number of authorization requests per minute per connection | 250 |
常见问题(FAQ)
访问令牌何时刷新?
对于类型为授权代码的连接,访问令牌刷新如下:在运行时执行get-authorization-context策略时,API管理会检查存储的访问令牌是否有效。如果令牌已过期或即将过期,API管理使用刷新令牌从配置的身份提供程序获取新的访问令牌和新的刷新令牌。如果刷新令牌已过期,则会抛出错误,需要重新授权连接才能正常工作。
如果客户端密钥在身份提供者处过期,会发生什么?
在运行时,API管理无法获取新令牌,并发生错误。
- 如果连接的类型为授权码【authorization code】,则需要在凭据提供程序级别【credential provider level】更新客户端密钥。
- 如果连接类型为客户端凭据【client credentials】,则需要在连接级别【connection level】更新客户端密钥。
使用在VNet内部运行的API管理是否支持此功能?
是的,只要端口443上的出站连接启用到AzureConnectors服务标记。有关更多信息,请参阅虚拟网络配置参考。
删除凭据提供程序时会发生什么?
所有基础连接和访问策略也将被删除。
访问令牌是否由API管理缓存?
在经典和v2服务层中,访问令牌由API管理实例缓存,直到令牌到期时间前3分钟。如果访问令牌距离到期时间不到3分钟,则缓存的时间将是访问令牌到期之前的时间。
访问令牌不缓存在消费层中。
相关内容
- Configure credential providers for connections
- Configure and use a connection for the Microsoft Graph API or the GitHub API
- Configure a connection for user-delegated access
- Configure multiple connections for a credential provider
- 登录 发表评论
- 9 次浏览
Tags
最新内容
- 1 week 5 days ago
- 2 weeks 6 days ago
- 3 weeks 2 days ago
- 3 weeks 2 days ago
- 3 weeks 5 days ago
- 3 weeks 6 days ago
- 4 weeks ago
- 4 weeks 1 day ago
- 4 weeks 1 day ago
- 4 weeks 1 day ago