各類JWT庫(java)的使用與評價


【搬運工】 出處:http://andaily.com/blog/?p=956

在 https://jwt.io/ 網站中收錄有各類語言的JWT庫實現(有關JWT詳細介紹請訪問 https://jwt.io/introduction/),

其中JAVA語言到目前(2018-06)有6個實現庫,如下圖:

jwt

按順序依次是

Auth0實現 的 java-jwt

Brian Campbell實現的 jose4j

connect2id實現的 nimbus-jose-jwt

Les Haziewood實現的 jjwt

Inversoft實現的prime-jwt

Vertx實現的vertx-auth-jwt.

 

以下是各個庫的使用測試

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM