Spring Cloud微服務架構包含身份驗證的原始碼案例 -Gabriele
什麼是微服務架構以及它提供的優勢/劣勢?
可以輕鬆制定一系列好處,例如:
- 安全;
- 可擴充套件性;
- 自我一致,彼此獨立;
- 珍貴美麗的X²和......
所有這些喧囂的背後,所有美麗的單詞都能讓時尚成為現實嗎?最重要的是,如果我們想要整合身份登入驗證的提供者 Identity Provider ,那麼什麼是解決方案呢?
為了詳細解釋,我決定構建一個非常簡單的專案,演示Spring Cloud的強大功能和身份驗證和授權提供程式的美,所有微服務包含在一個專用的Docker容器中,它們可以相互通訊並通過docker啟動-容易構成。
首先,可以在這裡找到這個專案的程式碼(首先閱讀自述檔案!): https://github.com/hyseneim/cloud-application-starter
SpringCloud的架構圖:
原始碼說明:
Macrocategory 1:
- 客戶:轉發請求的主題。它可以是PC,移動裝置,智慧電視,極限是想象力!
Macrocategory 2:
- 授權和身份驗證提供程式(AAP):它公開請求訪問令牌,重新整理令牌和撤銷令牌,管理各種流(包括“ 密碼 ”流,使用其他微服務)所需的端點。他總是與服務發現/註冊處聯絡,通過該服務發現/註冊,他記錄並發現其他微服務的位置。
- 資料庫(MySQL):這個應用程式的DB選擇是無關緊要的(顯然,修改Spring聯結器)。儲存的唯一資訊與AAP相關,即:使用者表,角色,訪問/重新整理令牌和客戶端詳細資訊。
- API閘道器:通過Zuul實施,它與服務發現/登錄檔 “ 緊密聯絡 ”,以獲取有關其他微服務的資訊,這些微服務將被註冊為客戶端可用的路由。此外,它充當負載均衡器(通過功能區),以及請求的過濾器和代理(通過Hystrix)。此外,與所有/一些微服務的請求,讀取時間或套接字相關的超時可通過方便的Hystrix引數進行配置。
- 配置伺服器:它包含可能來自不同來源的所有微服務的配置。在Docker容器之外,它通常使用檔案系統或Git作為事實來源。但是,在容器內部,使用它的JAR 類路徑,前瞻性更改其他微服務的引用及其邏輯名稱(通過docker-compose.yml指定)。顯然,當您擁有配置伺服器的“ 叢集 ”時,不建議使用後一種方法。PS:在後一種情況下,藍綠色圖案可能會在更換配置時幫助您。
- 服務發現/註冊伺服器:上面廣泛提到,它允許發現和註冊微服務。Feign特別有用,您可以通過該工具使用包含所有錄音的暫存器來請求其他微服務。
- 微服務1:示例微服務,僅包含受所有非管理員使用者保護的Hello World端點,通過向AAP提交請求(通過Feign)來檢索使用者和角色。
此體系結構可以是您的個人或業務專案的具體基礎。