分布式Session
傳統(tǒng)的單體應用的session
,在Spring cloud
微服務架構下,可以采用分布式session機制
爱榔,可以將用戶的認證信息存儲在共享存儲(如redis)中,用戶會話作為key實現(xiàn)簡單的分布式哈希映射楼雹,當用戶訪問微服務時,用戶數(shù)據(jù)可以從共享存儲中獲取尖阔。Spring Session
對分布式Session提供了支持贮缅,也與Spring Boot/Cloud
無縫集成。
API Tokens
隨著 Restful API
诺祸、微服務
的興起携悯,基于 Token 的認證現(xiàn)在已經(jīng)相當普遍了祭芦。
Token
一般會包含用戶的相關信息筷笨,其它微服務可以從Token里提取出用戶、權限等信息完成鑒權龟劲。
基于Token認證的典型流程:
圖片.png
- 用戶使用包含用戶名和密碼的credential從客戶端發(fā)起資源請求胃夏。
- 后端接受請求,通過授權中心昌跌,生產(chǎn)有效token字符串仰禀,返回給客戶端。
- 客戶端獲得token后蚕愤,再次發(fā)出資源請求答恶。
- 后端接受帶token的請求,通過授權中心萍诱,獲取相關資源悬嗓,返回給客戶端。
優(yōu)點:
- 服務端無狀態(tài):服務端不需要存儲Session裕坊,因為Token已攜帶用戶的相關信息
- 性能好:校驗Token不需要訪問遠程服務或數(shù)據(jù)庫
- 支持移動端
- 支持跨程序包竹、跨域調用
缺點:
- 每次用戶請求需要攜帶有效token,與Auth服務進行交互驗證
- Auth服務可能需要處理大量的生產(chǎn)token的操作,可能存在性能問題
基于Token的認證方案周瞎,業(yè)界推薦使用 JSON Web Tokens(JWT)苗缩,它足夠簡單且支持程度也比較好