凭证
凭证是开发者在应用程序中创建的身份认证令牌,用于通过网关对 API 请求进行身份认证。凭证是连接开发者应用程序与网关数据面身份 认证机制的纽带。
凭证类型
开发者门户支持三种凭证类型,分别对应 API 产品上配置的身份认证类型:
API Key(API 密钥)身份认证
API Key 身份认证凭证包含一个 API Key,开发者通常通过请求头或查询参数将其加入 API 请求。
| 字段 | 描述 |
|---|---|
| 密钥 | API Key 值。如果创建时未指定,则自动生成。 |
基本身份认证
基本身份认证凭证提供开发者使用 HTTP 基本身份认证方案在 API 请求中包含的用户名和密码对。
| 字段 | 描述 |
|---|---|
| 用户名 | 用于身份认证的用户名。 |
| 密码 | 用于身份认证的密码。 |
OAuth(DCR )
OAuth 凭证通过动态客户端注册(DCR)向外部身份提供商注册。开发者创建 OAuth 凭证时,门户会通过配置的 DCR 提供商注册客户端,并返回客户端 ID 和客户端密钥。
| 字段 | 描述 |
|---|---|
| 客户端 ID | OAuth 2.0 客户端标识符,由身份提供商分配。 |
| 客户端密钥 | OAuth 2.0 客户端密钥,由身份提供商分配。 |
| 重定向 URI | 向身份提供商注册的回调 URL。 |
| 客户端密钥过期时间 | 客户端密钥的过期时间戳(0 表示永不过期)。 |
凭证生命周期
创建
开发者在应用程序中创建凭证。凭证类型必须与应用程序订阅的 API 产品上启用的身份认证类型之一匹配。
- API Key 身份认证:如果未提供 API Key,则会自动生成。API Key 在存储前会经过 AES 加密。
- 基本身份认证:开发者提供用户名和密码。密码在存储前已加密。
- OAuth:门户调用 DCR 提供商注册新客户端。客户端 ID、客户端密钥和注册令牌会加密存储在门户数据库中。
重新生成
开发者可以重新生成凭证的身份认证信息:
- API Key 身份认证:生成新的 API Key,使原 API Key 失效。
- 基本身份认证:重新生成密码。
- OAuth(仅限 HTTP 桥):通过 DCR 提供商轮换客户端密钥。OIDC 类型的 DCR 提供商不支持客户端密钥轮换。
删除
删除凭证会将其从门户数据库中删除。对于 OAuth 凭证,门户还会从身份提供商中删除已注册的客户端。
凭证在运行时如何工作
当启用身份认证的 API 产品发布时,门户 API 会将 portal-auth 插件配置推送到关联的网关服务。此插件会根据门户数据库中存储的凭证验证传入的 API 请求。
身份认证流程如下:
- 开发者向网关发送 API 请求,并携带凭证(API Key、基本身份认证请求头或 OAuth 令牌)。
- 网关的
portal-auth插件从请求中提取凭证。 - 插件通过门户 API 的缓存开发者查询服务验证凭证。
- 如果凭证有效,并且开发者拥有该 API 产品的有效订阅,则请求将转发到上游服务。
- 如果凭证无效或开发者没有有效订阅,网关会返回身份认证错误。
安全
- 所有凭证密钥(API Key、密码、客户端密钥和注册访问令牌)在存储到数据库前均经过 AES 加密。
- 凭证值仅在创建时完整返回。随后的 API 响应会屏蔽敏感字段。
- 每个凭证都链接到一个开发者标识符记录,该记录可以在不暴露原始凭证值的情况下启用索引查找。