一张图了解javaJwt
1.什么是javaJwt?
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
JWT.IO allows you to decode, verify and generate JWT.https://jwt.io/
javaJwt is library of jwt implemented by java
2.javaJwt的類結構
術語解釋:
通常在傳輸數據時,為了使數據傳輸更可靠,要把原始數據分批傳輸,并且在每一批數據的頭和尾都加上一定的輔助信息,比如這一批數據量的大小,校驗位等,這樣就相當于給已經分批原始數據加一些外套,這些外套起到標示作用,使得原始數據不易丟失。
一批數據加上它的“外套”,就形成了傳輸通道中基本的傳輸單元,叫做數據幀或者數據包(有的地方數據幀和數據包不是同一概念比如網絡傳輸)。這些數據幀中的記錄信息的原始數據就是有效載荷數據,即payload data。
而消息體就是外套。即標記著原始數據的大小等的輔助信息。
1.The Header class represents the 1st part of the JWT, where the Header value is hold.
2.The Payload class represents the 2nd part of the JWT, where the Payload value is hold.
3.The Signature class represents the 3rd part of the JWT, where the Signature value is hold.
4.The JWTDecoder class holds the decode method to parse a given JWT token into it's JWT representation.
5.The JWTVerifier class holds the verify method to assert that a given Token has not only a proper JWT format, but also it's signature matches.
6.The JWTCreator class holds the sign method to generate a complete JWT (with Signature) from a given Header and Payload content.
?7.The Claim class holds the value in a generic way so that it can be recovered in many representations.
根據JWT的標準,這些claims可以分為以下三種類型:?
a.?Reserved claims(保留),它的含義就像是編程語言的保留字一樣,屬于JWT標準里面規定的一些claim。JWT標準里面定好的claim有:
- iss(Issuser):代表這個JWT的簽發主體;
- sub(Subject):代表這個JWT的主體,即它的所有人;
- aud(Audience):代表這個JWT的接收對象;
- exp(Expiration time):是一個時間戳,代表這個JWT的過期時間;
- nbf(Not Before):是一個時間戳,代表這個JWT生效的開始時間,意味著在這個時間之前驗證JWT是會失敗的;
- iat(Issued at):是一個時間戳,代表這個JWT的簽發時間;
- jti(JWT ID):是JWT的唯一標識。
b.?Public claims,略(不重要)
c.?Private claims,這個指的就是自定義的claim。比如前面那個結構舉例中的admin和name都屬于自定的claim。這些claim跟JWT標準規定的claim區別在于:JWT規定的claim,JWT的接收方在拿到JWT之后,都知道怎么對這些標準的claim進行驗證;而private claims不會驗證,除非明確告訴接收方要對這些claim進行驗證以及規則才行。
按照JWT標準的說明:保留的claims都是可選的,在生成payload不強制用上面的那些claim,你可以完全按照自己的想法來定義payload的結構,不過這樣搞根本沒必要:第一是,如果把JWT用于認證, 那么JWT標準內規定的幾個claim就足夠用了,甚至只需要其中一兩個就可以了,假如想往JWT里多存一些用戶業務信息,比如角色和用戶名等,這倒是用自定義的claim來添加;第二是,JWT標準里面針對它自己規定的claim都提供了有詳細的驗證規則描述,每個實現庫都會參照這個描述來提供JWT的驗證實現,所以如果是自定義的claim名稱,那么你用到的實現庫就不會主動去驗證這些claim。
參考文獻:
【1】http://www.cnblogs.com/lyzg/p/6028341.html
轉載于:https://www.cnblogs.com/davidwang456/p/6478968.html
總結
以上是生活随笔為你收集整理的一张图了解javaJwt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx假死导致的问题回顾
- 下一篇: spring-security-oaut