微服務之間的通訊安全(一)-針對認證和SSO現有架構的問題


 

  目前為止,我們已經實現了一個基於微服務,前后端分離的架構(前端服務使用SpringBoot模擬),如上圖;並且在網關上做了限流、認證、審計、授權等安全機制;在前端做了SSO單點登陸。

但是目前的架構還是有一些問題的:

1、限流:

  在前面網管安全我們也說過網關上不要做細粒度的限流,主要為服務器硬件設備的並發處理能力做限流。但是對於各位服務之間,比如說訂單限流100,庫存限流100,訂單調用了庫存。網關轉發100到訂單,轉發100到庫存,並且這訂單的100各請求也調用庫存,庫存請求達到200,服務可能就會掛掉。

2、認證:

  目前的做法是,經過OAuth2流程以后,給前端發送令牌。每次前端請求都會帶着這個令牌,在網關上,回調用認證服務器校驗這個令牌。通過后再請求頭中放入username,再轉發到其他微服務,其他微服務從請求頭中獲取username,得到當前用戶。

  改流程存在以下問題:

  2.1、效率低:網關上每個請求都要取認證服務器校驗令牌。多一次網絡開銷,認證服務器壓力也會變大,並且如果認證服務器掛了,所有的請求都無法訪問微服務了。

  2.2、不安全:傳遞用戶信息,是再請求頭中添加username,網關轉發到訂單服務,訂單服務從請求頭中獲取用戶信息,那么如果再有一個別的服務,直接調用訂單服務,在請求頭中添加一個username,訂單服務也會認為是該用戶請求的,不安全。我們不能通過請求或請求頭中的一個明文參數來判斷一個用戶是誰。

3、授權:

  只能控制當前請求是否能調用某個微服務,而不能控制微服務之間的調用。

4、服務雪崩:

  如果某個微服務因為網絡或數據庫等問題,導致服務響應變慢,再有別的服務對他進行調用,別的服務也會變慢。僅僅是因為一個服務除了問題,而導致大量的服務不可用。

 

接下來,我們就來解決這些問題。

 


免責聲明!

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



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