Spring-cloud學習筆記---分散式架構統一認證主流實現方案JWT簡介
Spring-cloud學習筆記—分散式架構統一認證主流實現方案JWT簡介
1.JWT改造統⼀認證授權中⼼的令牌儲存機制前的思考
- 當我們第⼀次登陸之後,認證伺服器頒發
token
並將其儲存在認證伺服器中,後期我們訪問資源伺服器時會攜帶token
,資源伺服器會請求認證伺服器驗證token有效性
,如果資源伺服器有很多,那麼認證伺服器壓⼒會很⼤ - 另外,資源伺服器向認證伺服器
check_token
,獲取的也是⽤戶資訊UserInfo
,能否把⽤戶資訊儲存到令牌中,讓客戶端⼀直持有這個令牌,牌的驗證也在資源伺服器進⾏,這樣避免和認證伺服器頻繁的互動 - 我們可以考慮使
JWT
進⾏改造,使⽤JWT機制
之後資源伺服器不需要訪問認證伺服器 - 在引入OAuth2的starter的時候,JWT就已經以來過來了
2. JWT令牌的介紹
通過上邊的測試我們發現
,當資源服務和授權服務不在⼀起時資源服務使⽤RemoteTokenServices
遠端請求授權 服務驗證token
,如果訪問量較⼤將會影響系統的效能。解決上邊問題
: 令牌採⽤JWT格式即可解決上邊的問題,⽤戶認證通過會得到⼀個JWT令牌
,JWT令牌
中已經包括了⽤戶相關的信 息,客戶端只需要攜帶JWT訪問資源服務
,資源服務根據事先約定的演算法⾃⾏完成令牌校驗,⽆需每次都請求認證 服務完成授權。
3. 什麼是JWT
JSON Web Token(JWT)
是⼀個開放的⾏業標準(RFC 7519),它定義了⼀種簡介的、⾃包含的協議格式,⽤於 在通訊雙⽅傳遞json物件,傳遞的資訊經過數字簽名可以被驗證和信任。JWT可以使⽤HMAC演算法
或使⽤RSA的公鑰/私鑰
對來簽名,防⽌被篡改。
4. JWT令牌結構
- JWT令牌由三部分組成,每部分中間使⽤點(.)分隔,⽐如:
xxxxx.yyyyy.zzzzz
Header
:頭部包括令牌的型別(即JWT)及使⽤的雜湊演算法(如HMAC SHA256或RSA){ "alg": "HS256", "typ": "JWT" }
Payload
:第⼆部分是負載,內容也是⼀個json物件,它是存放有效資訊的地⽅,它可以存放jwt提供的現成欄位,⽐如
:iss(簽發者),exp(過期時間戳), sub(⾯向的⽤戶)等,也可⾃定義欄位。 此部分不建議存放敏感資訊,因為此部分可以解碼還原原始內容。 最後將第⼆部分負載使⽤Base64Url編碼,得到⼀個字串就是JWT令牌的第⼆部分。{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } ``
Signature
:第三部分是簽名,此部分⽤於防⽌jwt內容被篡改。 這個部分使⽤base64url將前兩部分進⾏編碼,編碼後使⽤點(.)連線組成字串,最後使⽤header中宣告簽名演算法進⾏簽名。
base64UrlEncode(header):jwt令牌的第⼀部分。HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
base64UrlEncode(payload):jwt令牌的第⼆部分。
secret:簽名所使⽤的金鑰。
第三部分Signature
是防止篡改的,即使我們知道第一部分和第二部分的值,並且進行相同的機密演算法後,但是我們不知道secret
的值,所以會防止被篡改
相關文章
- 分散式系統架構筆記分散式架構筆記
- ZooKeeper學習筆記四:使用ZooKeeper實現一個簡單的分散式鎖筆記分散式
- 分散式系統學習筆記分散式筆記
- 前端架構之node jwt認證前端架構JWT
- (一)springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- koa 實現 jwt 認證JWT
- 架構學習筆記系列一架構筆記
- springcloud微服務分散式雲架構簡介SpringGCCloud微服務分散式架構
- Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介Java架構SpringCloud微服務分散式
- SpringBoot + Spring Security 學習筆記(三)實現圖片驗證碼認證Spring Boot筆記
- express實現JWT使用者認證系統ExpressJWT
- springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- (一)spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- (一)spring cloud微服務分散式雲架構-Spring Cloud簡介SpringCloud微服務分散式架構
- gcc簡介(學習筆記)GC筆記
- 深度解析:主流分散式架構的前世今生分散式架構
- Redis學習筆記(三)使用Lua指令碼實現分散式鎖Redis筆記指令碼分散式
- Kubernetes(k8s)學習筆記(一)——系統架構K8S筆記架構
- KAFKA介紹(分散式架構)Kafka分散式架構
- Dart語言學習筆記(一) —— Dart簡介Dart筆記
- MuJoCo 學習筆記:簡介 Overview筆記View
- Android 學習筆記架構篇Android筆記架構
- 架構學習筆記系列三架構筆記
- 架構學習筆記系列二架構筆記
- ASP.NET Core - JWT認證實現ASP.NETJWT
- JWT實現登入認證例項JWT
- DRF JWT認證(一)JWT
- 整合spring cloud雲架構 --spring cloud分散式系統中實現分散式鎖SpringCloud架構分散式
- hadoop 偽分散式模式學習筆記Hadoop分散式模式筆記
- GlusterFS分散式儲存學習筆記分散式筆記
- spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- 搭建JEESZ分散式架構--訊息中介軟體簡介分散式架構
- Mysql學習筆記---MySQL叢集架構之擴容方案MySql筆記架構
- 阿里P8架構師進階心得:分散式資料庫架構MyCat學習筆記送給你阿里架構分散式資料庫筆記
- 【分散式架構】(10)---基於Redis元件的特性,實現一個分散式限流分散式架構Redis元件
- SpringCloud學習筆記:SpringCloud簡介(1)SpringGCCloud筆記
- .NET 雲原生架構師訓練營(系統架構)--學習筆記架構筆記
- jwt 如何實現一個服務認證了另一個服務也可以認證JWT