jwt(json web token)是一種token認證方式,相對於傳統的session認證方式。
一、為什麼需要認證?
乙個系統,如果想使用其功能,勢必要進行登入操作,登入驗證使用者名稱和密碼,通過http通訊協議傳輸,但是http協議屬於無狀態協議,則登入之後的http通訊如果沒有認證,那麼任何未登入的人都可以去訪問了。所以需要認證這種方式來杜絕這樣的事情發生。
二、傳統session認證方式有如下幾個缺點:
1、使用者登入後session需要儲存在服務端中,當有大量使用者登入時候,服務端會儲存大量的session,缺點就是占用大量資源。
2、服務端session儲存位置如果為記憶體,則會影響負載均衡。
3、客戶端將session存放在cookie中,如果其他人獲得cookie,則可進行偽造。
三、jwt的優點
1、服務端無需儲存jwt,不需要占用大量資源。
2、jwt為json格式,占用流量小。
3、因為無狀態不儲存,所以完全不影響負載均衡。
四、jwt說明:
jwt分為三部分,head(頭),payload(載荷)以及簽名。
其中頭head寫明演算法型別(大部分為固定)並且使用base64進行編碼,載荷payload存放傳輸的資訊並且使用base64進行編碼,對於我們系統來說是jwtuser這個物件的json形式字串以及失效時間(我們系統當前為24小時)。
簽名就是講上述head和payload進行base64的字串連線以後,加鹽,組合加密,其中鹽是存放在服務端裡,對於我們系統來說,是服務端配置檔案中儲存,
最後的結果就是 head頭的base64編碼結果 + 『,』 + payload的base64編碼結果 + ',' + 簽名。
五、實現方式:
使用jjwt來進行實現(**以及quickstart可以在github上檢視)
六、傳輸方式:
客戶端http協議呼叫接入,接入系統rpc協議呼叫賬戶系統,賬戶系統如果登入成功,則生成jwt返回給接入系統,接入系統將jwt字串返回給客戶端,客戶端以後每次對於該使用者的http呼叫都在http請求頭資訊中新增此jwt字串。接入收到jwt之後,進行解析,如果解析出錯則異常丟擲不予操作。如果jwt正常,則繼續操作。
參考資料:
JWT 學習筆記
golang中jwt的使用 spring boot 整合 jwt 認識jwt json web token 入門教程 jwt全面解讀 講真,別再使用jwt了!jwt json web token 是一種開放標準 rfc 7519 用於作為json物件在各方之間安全的傳輸資訊。該資訊可以被驗證和信任,...
JWT原理學習
恩麼麼,用著用著就想知道實現對不對,我也想知道,然後就有了這個。1.建立物件,並暴露出兩個方法 let jwt encode payload,secret export default jwtlet jwt frombase64tostring str 實現乙個工具方法,轉base64 tobase...
JWT學習筆記(一)
jwt介紹 json web token jwt 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準 rfc 7519 該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入 sso 場景。jwt的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便於從資...