[英]Microservices to microservices communication securely
我想在不同的微服務之間進行通信,但出現的問題是微服務使用 jwt 令牌進行保護,我無法找到一種方法從第一個微服務向另一個微服務發送安全調用。 有沒有一種方法可以直接與服務方法通信,因為如果我打開我的 api,它將被濫用。
或者我必須通過 api 網關通過 api 網關發送每個請求並從那里進行安全通信。
這一切都取決於您的項目的確切要求是什么。
網關 API 通常用於向外部用戶隱藏微服務的復雜性,這些用戶通常有 1 個端點可以與之通信。
網關還可以處理安全性和驗證用戶(許多公司確實這樣做)。
現在,當您通過網關並且經過身份驗證的請求到達客戶端時,通常您已經在請求中擁有了用戶身份(網關放置在請求上的內容)。
所以你知道用戶“John Smith”觸發了請求。
現在,如果您需要調用另一個微服務,您應該做出決定(再次由您決定):
您是否需要在那里進行身份驗證(也許不必在微服務之間保護內部通信(
如果您確實需要在微服務之間進行身份驗證,誰來對請求進行身份驗證? 如果是網關,則所有身份驗證邏輯都在那里,但是您必須為每個請求進行額外的跳躍,這可能會很昂貴 或者如果是直接調用,則每個微服務都必須實現身份驗證邏輯。 當然,有像 spring security 這樣的東西,其他語言/生態系統也有類似的解決方案,但總的來說這可能很難實現。
如果您確實從微服務 A 到微服務 B 進行了經過身份驗證的調用,並且該流是由觸發對服務 A 的請求的用戶 John Smith 發起的,則您應該確定調用的語義是否為:
在技術實現方面,通常您可以使用所需的令牌向請求添加 JWT 標頭。 如果請求已經過身份驗證並且您需要生成用戶身份,則只需在請求中放置幾個標頭即可。
你可以有兩個api網關:
暴露在外面的那個會驗證令牌並將聲明發送到微服務,這些聲明用於驗證路由保護。
在微服務通信之間,使用第二個網關發送您已經擁有的聲明。 希望這可以幫助。 如果您找到任何替代方法,請告訴我們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.