spring cloud jwt用戶鑒權及服務鑒權


用戶鑒權

客戶端請求服務時,根據提交的token獲取用戶信息,看是否有用戶信息及用戶信息是否正確

服務鑒權

微服務中,一般有多個服務,服務與服務之間相互調用時,有的服務接口比較敏感,比如資金服務,不允許其他服務隨便調用,所以要進行服務調用的權限鑒定認證

每個服務帶有2個攔截器: mvc攔截器和feign客戶端攔截器

service1(簡稱s1)調用service2(簡稱s2)時,s1的feign去服務鑒權中心獲取一個token,然后攜帶token及用戶上下文(用戶信息),去訪問s2,被s2的mvc攔截器攔截,s2的mvc攔截器去服務鑒權中心看s1是否合法,進行校驗,然后返回結果 
這里寫圖片描述 
這里寫圖片描述 
這里寫圖片描述

服務鑒權中心搭建

使用到的表有2張, 
分別是微服務記錄表和服務調用權限表,一個微服務可以調用多個其他微服務 
服務記錄表

CREATE TABLE `gate_client` ( `id` int(11) NOT NULL AUTO_INCREMENT,//服務id `secret` varchar(255) DEFAULT NULL,//服務秘鑰 `name` varchar(255) DEFAULT NULL//服務名稱 } 如: id=1 ,secret=123456,name=user-center
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

服務調用權限關系表

CREATE TABLE `gate_client_service` ( `id` int(11) NOT NULL AUTO_INCREMENT,//記錄id `service_id` varchar(255) DEFAULT NULL,//被調用者服務id `client_id` varchar(255) DEFAULT NULL//調用者服務id } service_id和client_id都對應gate_client表中的id字段
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

整個調用過程

1 網關申請客戶秘鑰 
2 請求微服務1 ,被服務1的mvc攔截器攔截,進行是否授權服務權限校驗 
3 驗證通過后,如果服務1要調用服務2 ,調用feigin攔截器,feign攔截器自動申請token,帶着這個token請求服務2 
4 請求服務2時,被服務2的mvc攔截器攔截,進行驗證,看是否在授權的服務列表中,如果是返回調用結果


權限請求查表的順序: 
jwt–>獲取用戶信息–>查詢此用戶的組(group)–>查詢分配的資源id–>查詢可以訪問的菜單,可以操作的頁面按鈕(訪問的api)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM