各种JWT库(java)的使用与评价

【搬运工】 出处:http://andaily.com/blog/?p=956java

在 https://jwt.io/ 网站中收录有各种语言的JWT库实现(有关JWT详细介绍请访问 https://jwt.io/introduction/),git

其中JAVA语言到目前(2018-06)有6个实现库,以下图:github

jwt

按顺序依次是算法

Auth0实现 的 java-jwt测试

Brian Campbell实现的 jose4j网站

connect2id实现的 nimbus-jose-jwt加密

Les Haziewood实现的 jjwtserver

Inversoft实现的prime-jwtjwt

Vertx实现的vertx-auth-jwt.blog

 

如下是各个库的使用测试

java-jwt

oauth0

完整测试连接  https://github.com/monkeyk/MyOIDC/blob/1.1.0/myoidc-server/src/test/java/myoidc/server/infrastructure/Auth0JwtTest.java

点评:

Auth0提供的JWT库简单实用, 依赖第三方(如JAVA运行环境)提供的证书信息(keypair);

有一问题是在 生成id_token与 校验(verify)id_token时都须要 公钥(public key)与密钥(private key), 我的感受是一不足(实际上在校验时只须要public key便可)

 

jose4j

jose4j

完整测试连接: https://github.com/monkeyk/MyOIDC/blob/1.1.0/myoidc-server/src/test/java/myoidc/server/infrastructure/Jose4JTest.java

点评:

jose4j提供了完整的JWT实现, 能够不依赖第三方提供的证书信息(keypair, 库自己自带有RSA的实现),类定义与JWT协议规定匹配度高,易理解与上手

对称加密与非对称加密都有提供实现

 

nimbus-jose-jwt

nimbus

完整测试连接: https://github.com/monkeyk/MyOIDC/blob/1.1.0/myoidc-server/src/test/java/myoidc/server/infrastructure/NimbusJoseJwtTest.java

点评:

nimbus-jose-jwt库类定义清晰,简单易用,易理解 , 依赖第三方提供的证书信息(keypair), 对称算法 与非对称算法皆有实现.

 

jjwt

jjwt

完整测试连接: https://github.com/monkeyk/MyOIDC/blob/1.1.0/myoidc-server/src/test/java/myoidc/server/infrastructure/JJwtTest.java

点评:

jjwt小巧够用, 但对JWT的一些细节包装不够, 好比 Claims (只提供获取header,body)

 

prime-jwt

primejwt

完整测试连接: https://github.com/monkeyk/MyOIDC/blob/1.1.0/myoidc-server/src/test/java/myoidc/server/infrastructure/PrimeJwtTest.java

点评:

prime jwt库怎么说呢, 有些地方不符合JAVA语言规范, 支持对称算法(HMAC) 与非对称算法(RSA), 也算容易理解

 

vertx-auth-jwt

vertxjwt

完整测试连接: https://github.com/monkeyk/MyOIDC/blob/1.1.0/myoidc-server/src/test/java/myoidc/server/infrastructure/VertxAuthJwtTest.java

 点评:

Vertx Auth Jwt 库算是最不容易理解的一个库了.花了很多时间才弄通这一示例. 不容易上手. 而且生成与校验id_token 时都须要公钥与私钥,不足.

 

———————————————————

如下是在使用中的一些总结或注意点

1. 几乎全部库都要求JAVA版本1.7或更高版本, 1.6或如下的版本须要二次开发(或不支持)

2.从易用性, 扩展性, 完整性等来看, 使用首先推荐 jose4j, 其次是 Nimbus-jose-jwt.

3. JWT是实现OIDC的基石,掌握其使用对实现OIDC有很大帮助(同时对JAVA证书使用, PKI体系的掌握也有要求)

 

 

https://github.com/monkeyk/MyOIDC

相关文章
相关标签/搜索