API7 网关 AI Agent Skill:jwt-auth 插件
jwt-auth 插件使用 JSON Web Token(JWT)对请求进行身份认证。消费者会注册 key 和 secret(或用于非对称算法的公钥)。客户端在请求头、查询参数或 Cookie 中包含已签名 JWT。API7 企业版会校验签名和声明,然后携带消费者身份请求头转发请求。
适用场景
- 基于令牌的无状态身份认证
- 非对称密钥校验(RS256、ES256、EdDSA),API7 企业版只需要公钥
- 基于自定义声明识别消费者
- 与外部令牌签发方集成,例如自建身份认证服务、Auth0 等
消费者凭证参考
| 字段 | 类型 | 是否必填 | 默认值 | 说明 |
|---|
key | string | 是 | — | JWT 载荷中用于匹配消费者的唯一 标识符 |
secret | string | 有条件 | — | 用于 HMAC 算法(HS256/HS384/HS512)的共享密钥,在数据库中加密存储 |
public_key | string | 有条件 | — | 用于 RSA/ECDSA/EdDSA 算法的 PEM 公钥 |
algorithm | string | 否 | "HS256" | 签名算法,参见下方支持的算法列表 |
exp | integer | 否 | 86400 | 令牌有效期,单位为秒,不是 UNIX 时间戳 |
base64_secret | boolean | 否 | false | 如果 secret 使用 Base64 编码,则设为 true |
lifetime_grace_period | integer | 否 | 0 | 允许的时钟偏差,单位为秒 |
key_claim_name | string | 否 | "key" | 包含消费者 key 的 JWT 声明 |
支持的算法
| 系列 | 算法 |
|---|
| HMAC | HS256、HS384、HS512 |
| RSA | RS256, RS384, RS512 |
| RSA-PSS | PS256, PS384, PS512 |
| ECDSA | ES256, ES384, ES512 |
| EdDSA | EdDSA |
路由/服务配置参考
| 字段 | 类型 | 是否必填 | 默认值 | 说明 |
|---|
header | string | 否 | "authorization" | 从请求头提取 JWT |
query | string | 否 | "jwt" | 从查询参数提取 JWT |
cookie | string | 否 | "jwt" | 从 Cookie 提取 JWT |
hide_credentials | boolean | 否 | false | 转发到上游前移除 JWT |
key_claim_name | string | 否 | "key" | 包含消费者 key 的 JWT 声明,必须与凭证配置匹配 |
anonymous_consumer | string | 否 | — | 用于未通过身份认证的请求的消费者 |
claims_to_verify | array | 否 | ["exp","nbf"] | 要校验的声明(exp、nbf) |
令牌查找优先级
- 请求头(默认:
authorization):支持 Bearer <token> 前缀
- 查询参数(默认:
jwt)
- Cookie(默认:
jwt)
分步操作:使用 HS256 启用 jwt-auth