https://www.jianshu.com/p/22610b276bee
https://zhuanlan.zhihu.com/p/29345083
https://www.jianshu.com/p/604bb732ddd4
- 用戶進入網關開始登陸,網關過濾器進行判斷,如果是登錄,則路由到后台管理微服務進行登錄
- 用戶登錄成功,后台管理微服務簽發JWT TOKEN信息返回給用戶
- 用戶再次進入網關開始訪問,網關過濾器接收用戶攜帶的TOKEN
- 網關過濾器解析TOKEN ,判斷是否有權限,如果有,則放行,如果沒有則返回未認證錯誤。
服務之間的鑒權
因為我們都知道服務之間開源通過注冊中心尋到客戶端后,直接遠程過程調用的。對於生產上的各個服務,一個個敏感性的接口,我們更是需要加以保護。主題的流程如下圖:
筆者的實現方式是基於Spring Cloud的FeignClient Inteceprot(自動申請服務token、傳遞當前上下文)和Mvc Inteceptor(服務token校驗、更新當前上下文)來實現,從而對服務的安全性做進一步保護。
結合Spring Cloud的特性后,整體流程圖如下:
優化點
雖然通過上述的用戶合法性檢驗、用戶權限攔截以及服務之間的鑒權,保證了Api接口的安全性,但是其間的Http訪問頻率是比較高的,請求數量上來的時候,慢的問題是就會特別明顯。可以考慮一定的優化策略,比如用戶權限緩存、服務授權信息的派發與混存、定時刷新服務鑒權Token等。
結語
上述是筆者在項目里的大體思路,有興趣的朋友可以借鑒我的開源項目,歡迎star: