各種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

相關文章
相關標籤/搜索