spring cloud單點登入
概述
基於springcloud的單點登入服務及基於zuul的閘道器服務(解決了通過zuul轉發到認證服務之後session丟失問題)
詳細
一、準備工作
學習前請先系統的學習一下eureka、zuul、spring security,否則上手可能會比較困難,我當時買的《springcloud微服務實戰》,這本書寫的還不錯。
該專案基於springcloud Dalston.SR1。因公司決定使用spring cloud,前期做認證服務時發現通過zuul閘道器把請求轉發到認證服務之後session丟失,一直報csrf驗證失敗問題,網上的大部分資料也不靠譜,通過研究解決掉該問題,特做了一個例子,供大家參考
二、專案截圖
三、各個服務說明
① 服務註冊(基於eureka):專案名稱:service-registry-server 埠號:8761
啟動類:cn.com.springcloudtest.cloud.service.registry.ServiceRegistryServerApplication
② 閘道器服務(基於zuul): 專案名稱:api-gateway-server 埠號:8080
啟動類:cn.com.springcloudtest.cloud.api.gateway.ApiGatewayServerApplication
③ 認證服務(基於oauth2及spring security): 專案名稱:uaa-server 埠號:7769
啟動類:cn.com.springcloudtest.cloud.uaa.UaaServerApplication
認證服務使用redis儲存了session,客戶端保存於mysql資料庫
四、配置檔案說明
有些配置作者也沒全部搞明白,網上找的設定,但是這麼設定確定是沒問題的
① service-registry-server服務註冊配置資訊不再過多描述,標準用法
② api-gateway-server閘道器服務配置資訊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
③ uaa-server配置資訊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
|
五、java程式碼配置
①、api-gateway-server服務配置都集中在WebSecurityConfigurer類中,配置比較簡單
②、uaa-server服務配置都集中在AuthorizationServerConfigurer和WebSecurityConfigurer中,AuthorizationServerConfigurer是jwt相關的配置,WebSecurityConfigurer是安全相關的配置,重要的部分程式碼中已經做了註釋
六、專案執行效果
注:專案執行前請閱讀readme.txt檔案
使用者名稱:[email protected] 密碼:admin