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

用戶鑑權

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

服務鑑權

微服務中,通常有多個服務,服務與服務之間相互調用時,有的服務接口比較敏感,好比資金服務,不容許其餘服務隨便調用,因此要進行服務調用的權限鑑定認證api

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

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

服務鑑權中心搭建

使用到的表有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

服務調用權限關係表spa

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 請求微服務1 ,被服務1的mvc攔截器攔截,進行是否受權服務權限校驗
3 驗證經過後,若是服務1要調用服務2 ,調用feigin攔截器,feign攔截器自動申請token,帶着這個token請求服務2
4 請求服務2時,被服務2的mvc攔截器攔截,進行驗證,看是否在受權的服務列表中,若是是返回調用結果code


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

相關文章
相關標籤/搜索