0
点赞
收藏
分享

微信扫一扫

Java JWT开源库综述


Java JWT开源库综述

  • 2019.12.17日

一、简介

根据JWT官网的介绍,Java编程中可用的开源JWT库有:

  1. maven: com.auth0 / java-jwt / 3.3.0
  2. maven: org.bitbucket.b_c / jose4j / 0.6.3
  3. maven: com.nimbusds / nimbus-jose-jwt / 5.7
  4. maven: io.jsonwebtoken / jjwt / 0.9.0
  5. maven: io.fusionauth / fusionauth-jwt / 3.1.0
  6. maven: io.vertx / vertx-auth-jwt / 3.5.1

六种库的特性对比表

JWT特性

java-jwt

jose4j

nimbus-jose-jwt

jjwt

fusionauth-jwt

vertx-auth-jwt

签名







验证







iss 检查







sub 检查



X




aud 检查







exp 检查







nbf 检查



X




iat 检查



X




jti 检查



X



X

HS256算法







HS384算法







HS512算法







RS256算法







RS384算法







RS512算法







ES256算法







ES384算法







ES512算法







PS256算法

X




X

?

PS384算法

X




X

?

PS512算法

X




X

?

EdDSA算法

?

?

?

?

?

?

综上可见,完整实现了JWT特性的开源库只有jose4j和jjwt两个库。尽管在普通项目中以上六个库皆可用,但遇到某些特殊需求的场景,就可能需要更换库。有鉴于此,应优先选择jose4j和jjwt两个库。

二、开源库分析

1、jose4j

  • 见:https://bitbucket.org/b_c/jose4j/wiki/Home

jose4j是一个遵循JWT和JOSE规范套件的开源实现,以Apache 2.0许可证发布。jose4j采用Java编写,完全依靠JCA API进行加密。

<dependency>
    <groupId>org.bitbucket.b_c</groupId>
    <artifactId>jose4j</artifactId>
    <version>0.7.0</version>
  </dependency>

2、jwtk/jjwt

  • 见:https://github.com/jwtk/jjwt
  • GitHub目前有5.8k星。

JJWT旨在成为最易于使用和理解的库,用于在JVM和Android上创建和验证JWT令牌。

JJWT是基于JWT、JWS、JWE、JWK和JWA的RFC规范的纯Java的开源实现,以Apache 2.0许可证发布。

JJWT库由Okta的资深架构师Les Hazlewood创建,并由GitHub贡献者社区提供支持和维护。

另外,JJWT还额外添加了一些不属于该规范的便利扩展,例如JWS压缩和声明的执行。

JJWT的特征

  • 所有JDK和Android上的全功能实现
  • 自动化的安全最佳实践和断言
  • 易于学习,API易读
  • 方便易读的、流畅的接口,支持IDE的代码自动完成功能
  • RFC规范的完全兼容,并通过RFC-specified测试向量的测试
  • 稳定的实现,执行测试代码覆盖率100%。
  • 创建、解析和验证紧凑型JWT(compact JWTs,又名JWSs)的数字签名,支持所有标准JWS算法
  • 额外的增强功能:
  • 对较大的JWT的Body压缩,不仅是JWEs
  • 声明断言(需要特定的值)
  • 声明POJO的编组(marshaling)和解组(unmarshaling)
  • 基于期望的JWA算法生成安全密钥
  • 更多…

目前不支持的特性

  • 非紧凑型JWT的序列化和解析
  • JWE (Encryption for JWT)

这两个特性会在后续的版本中实现。

3、auth0/java-jwt

  • 见:https://github.com/auth0/java-jwt

<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.8.3</version>
</dependency>

4、Nimbus-JOSE-JWT

  • 见:https://bitbucket.org/connect2id/nimbus-jose-jwt/wiki/Home

5、FusionAuth/fusionauth-jwt

  • 见:https://github.com/fusionauth/fusionauth-jwt
  • GitHub目前才28星。

6、vert-x3/vertx-auth

  • 见:https://github.com/vert-x3/vertx-auth
  • GitHub目前才97星。


举报

相关推荐

0 条评论