JWT认证组件实现了基于JWT(JSON Web Token)进行认证鉴权的功能。支持从HTTP请求的URL参数、请求头或Cookie中解析JWT,并验证该Token是否有权限访问。
功能类型
认证鉴权
字段说明
ComponentConfig
参数 | 类型 | 是否必填 | 默认值 | 描述 |
Config | 是 | - | JWT认证配置。 |
JwtSpec
参数 | 类型 | 是否必填 | 默认值 | 描述 |
JwkConfig | 是 | - | 配置JWK的方式。 | |
JwtSources | 是 | - | 提取JWT的方式,仅支持单一提取源。 |
JwkConfigSpec
参数 | 类型 | 是否必填 | 默认值 | 描述 |
Type | 否 | - | JWK配置类型。 | |
RemoteJwks | 否 | - | 远程JWKS配置。 |
JwkConfigType
值 | 描述 |
Remote | 远程获取JWK。 |
RemoteJwksSpec
参数 | 类型 | 是否必填 | 默认值 | 描述 |
Url | 否 | - | 远程JWK地址。 |
URI
完整的FQDN名称,包含协议、主机名和路径。ALB实例将通过所在交换机的IP对该地址发起访问,需确保目标地址网络可达;如果目标地址位于公网,则ALB所在交换机需配置公网SNAT。
示例
http://example.com/jwt/pubkeys远程JWK返回内容按RFC 7518标准实现,返回值示例如下:
{
"keys": [
{
"e": "公钥的指数,例如AQAB",
"kid": "Key ID",
"kty": "使用的加密算法的家族,例如RSA,必填,大小写敏感",
"alg": "使用的具体的加密算法,例如RS256,必填,大小写敏感",
"use": "密钥的用途,例如sig,用于签名",
"n": "公钥的模值"
},
{
"kty": "oct",
"k": "yMsZ3vkBL4fEwJrNOPW6RztnYpdQ0UlVTum7H1qAehD",
"alg": "HS256"
}
]
}JwtSourcesSpec
参数 | 类型 | 是否必填 | 默认值 | 描述 |
Headers | 否 | - | 从HTTP请求头中提取JWT。 | |
Params | String[] | 否 | - | 从URL参数中提取JWT。 |
Cookies | String[] | 否 | - | 从Cookie中提取JWT。 |
JwtHeaderSpec
参数 | 类型 | 是否必填 | 默认值 | 描述 |
Name | String | 是 | Authorization | 请求头中的字段名。 |
ValuePrefix | String | 否 | Bearer | 请求头对应值的前缀,在提取Token前会被去除。 |
错误码信息
HTTP状态码 | 出错信息 | 原因说明 |
401 | Jwt is missing | 请求未提供JWT。 |
401 | Jwks remote fetch is failed | 远程Jwks地址访问超时。 |
401 | Jwt verification fails | JWT payload校验失败。 |
401 | Jwt is expired | 请求提供的Token已超时。 |
401 | Jwt signature is an invalid Base64url encoded | 请求提供的Token无法base64解码。 |