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