JSON Web Tocken

第一次聽老大分享這個,我是懵逼的,查了下阮大大有相關文章,記錄下本身的簡單理解 看完文章誤覺得,JWT競標CAS,其實否則;html

背景web

傳統的認證:算法

一、用戶向服務器發送用戶名和密碼。

二、服務器驗證經過後,在當前對話(session)裏面保存相關數據,好比用戶角色、登陸時間等等。

三、服務器向用戶返回一個 session_id,寫入用戶的 Cookie。

四、用戶隨後的每一次請求,都會經過 Cookie,將 session_id 傳回服務器。

五、服務器收到 session_id,找到前期保存的數據,由此得知用戶的身份。
複製代碼

JWT是一種將用戶信息存儲於客戶端,替代session的方案,主要解決的問題是高併發,那是如何作到userInfo不被篡改的呢?這時候Signature出場了~json

過程

用戶login => JWT服務給客戶端種下JWT => 調API帶着JWT => 服務端驗證信息bash

JWT原理

jwt由3部分組成,HEADER、PAYLOAD、SIGNATURE服務器

  1. HEADER,Json數據,放着JWT的元數據,例如簽名算法
  2. PAYLAOD,Json數據,放着須要傳遞的數據,userInfo、iss等等
  3. SIGNATURE,userInfo... => 算法加密 => JWT服務端祕鑰加密,可有兩種加密方式
  • 對稱加密:JWT服務用祕鑰加密,服務端用祕鑰解密
  • 非對稱加密:JWT服務用私鑰加密,服務端用公鑰解密

那麼JWT的缺點是什麼呢?session

缺點

更改userInfo,可經過設置expired-time實現,那麼時間設置的長短如何肯定呢?時間過短,成本較大;時間太長,userInfo更新不及時;併發

推薦文章:八幅漫畫理解使用 JWT設計的單點登陸系統高併發

相關文章
相關標籤/搜索