本文介绍基于 Java 语言实现的各种 JWT 类库的对比及使用,有关 JWT 可以参考:JSON Web Token(JWT)入门。
在 https://jwt.io/#debugger-io 上可以看到各种编程语言的 JWT 实现库,截止目前基于 Java 语言的实现有:
-
Auth0 实现的
com.auth0 / java-jwt / 3.3.0
-
Brian Campbell 实现的
org.bitbucket.b_c / jose4j / 0.6.3
-
connect2id 实现的
com.nimbusds / nimbus-jose-jwt / 5.7
-
Les Hazlewood 实现的
io.jsonwebtoken / jjwt / 0.9.0
-
FusionAuth 实现的
io.fusionauth / fusionauth-jwt / 3.1.0
-
Vert.x 实现的
io.vertx / vertx-auth-jwt / 3.5.1
以下是各类 JWT 类库支持特性的对比:
JWT 类库 | 签名支持 | 验签支持 | Payload 字段支持 | 算法支持 |
---|---|---|---|---|
Auth0 | 是 | 是 |
iss 是sub 是aud 是exp 是nbf 是iat 是jti 是 |
HS256 是HS384 是HS512 是RS256 是RS384 是RS512 是ES256 是ES384 是ES512 是PS256 否PS384 否PS512 否EdDSA ? |
Brian Campbell | 是 | 是 |
iss 是sub 是aud 是exp 是nbf 是iat 是jti 是 |
HS256 是HS384 是HS512 是RS256 是RS384 是RS512 是ES256 是ES384 是ES512 是PS256 是PS384 是PS512 是EdDSA ? |
connect2id | 是 | 是 |
iss 是sub 否aud 是exp 是nbf 否iat 否jti 否 |
HS256 是HS384 是HS512 是RS256 是RS384 是RS512 是ES256 是ES384 是ES512 是PS256 是PS384 是PS512 是EdDSA ? |
Les Hazlewood | 是 | 是 |
iss 是sub 是aud 是exp 是nbf 是iat 是jti 是 |
HS256 是HS384 是HS512 是RS256 是RS384 是RS512 是ES256 是ES384 是ES512 是PS256 是PS384 是PS512 是EdDSA ? |
FusionAuth | 是 | 是 |
iss 是sub 是aud 是exp 是nbf 是iat 是jti 是 |
HS256 是HS384 是HS512 是RS256 是RS384 是RS512 是ES256 是ES384 是ES512 是PS256 否PS384 否PS512 否EdDSA ? |
Vert.x | 是 | 是 |
iss 是sub 是aud 是exp 是nbf 是iat 是jti 否 |
HS256 是HS384 是HS512 是RS256 是RS384 是RS512 是ES256 是ES384 是ES512 是PS256 ?PS384 ?PS512 ?EdDSA ? |
各类库详细介绍及使用参考:
因 connect2id nimbus-jose-jwt 和 Vert.x vertx-auth-jwt 对 JWT 官方规定的 Payload 字段支持不完整,这里未给出使用参考说明。
从易用性, 扩展性, 完整性等来看, 使用首先推荐 jose.4.j JWT。
网友评论