SpringCloud:搭建基於Gateway的微服務網關(一)


1.需求

最近在嘗試着寫一個開放平台,於是先搭建網關。

作用:統一的請求入口,完成對請求的跟蹤,限流(未做),鑒權,分發,封裝響應

2.工作原理

2.1.請求

在開放平台中申請對接口的使用,申請通過后會獲得:AccessId/SecretKey

API網關(服務訪問的地址):127.0.0.1:7000

請求path(業務接口的路徑):/v1/article/.......

 

將請求內容拼裝為String(格式為統一格式)

String stringToSign=
             HTTP-Verb + "\n" +    //請求的方法
             Content-MD5 + "\n"    //參數的MD5
             Content-Type + "\n" +   //請求的參數類型
             Timestamp + "\n" +    //請求的時間戳
             Headers + Url_String    //請求頭以及請求路徑

然后通過SecretKey對stringToSign進行加密,得到簽名串:sign

將AccessId:sign放入請求頭,作為鑒權的依據 :  Authorization: gateway:{AccessId}:{Signature}

發送請求

2.2.網關攔截

網關攔截該次請求,獲取鑒權信息,得到AccessId依據加密后的簽名串sign

從request中獲取請求信息(請求的方法,參數類型,時間戳,請求路徑等。。),重新組裝 stringToSign

將AccessId,sign,stringToSign,url(請求的path),method(請求的方法)作為參數,調用鑒權接口進行校驗

2.3.鑒權

通過AccessId,查數據庫,獲取SecretKey,以及用戶信息等

使用獲取的SecretKey對stringToSign進行加密,得到簽名串,對比原始簽名串,是否匹配,匹配則請求合法

其他校驗:對用戶信息進行校驗,用戶是否可用、對AccessId使用超期進行判斷等

通過url以及method獲取API信息(主要是獲取其服務名)

返回鑒權結果

2.4.服務分發

對鑒權結果進行判斷,合法則進行服務分發,將請求轉發到對應服務上

獲取響應結果

2.5.封裝響應

對響應結果進行處理,統一封裝為網關返回數據

 

 


免責聲明!

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



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