簡體   English   中英

微服務的API授權

[英]API Authorization with microservices

我有一個多租戶項目,它將調用多個微服務來執行特定任務。

我希望微服務從發送的請求中了解要使用哪個數據庫,因為每個租戶都將使用微服務,但是,租戶將擁有自己的數據庫。 我有另一個解決方案,它有一個處理API密鑰管理的Web項目。

例如,假設API密鑰管理位於以下域中:portal.example.com

當tenant.example.com在microservice.example.com上調用微服務時,我希望某些中間件在微服務端監聽請求,並從請求中獲取APIKey,通過檢查portal.example.com服務以及是否通過APIKey有效,請獲取此API密鑰的租戶並確定要用於微服務的連接字符串。

我覺得這不太有效,因為它需要太多的調用才能確定要使用的連接字符串,有人能想到一種確定連接字符串但還要驗證APIKey的更好方法嗎?

問題的性質似乎需要有關某些業務決策和體系結構決策的更多信息。

但是,根據您到目前為止提供的信息,我想說的是,您引用的連接字符串也可能是數據泄漏的問題。 假設授權服務中發送錯誤的連接字符串時出錯,則可能會不小心將客戶端連接到另一個數據庫,而不是實際發出請求的客戶端。 第二點是,這也使授權服務成為單點故障。 如果失敗或惡意用戶訪問它,則所有租戶都會受到影響。

可能需要評估的一件事是使用OAuth的客戶端憑據對不同的應用程序進行身份驗證,而不是讓體系結構來處理此問題。 每個應用程序反映一組不同的數據庫參數。 在OAuth身份驗證階段,它將把用戶重定向到正確的應用程序。 總之,為每個租戶部署了一組應用程序,其中通過OAuth對租戶進行了身份驗證。

一種略有不同的替代方法是,將一個租戶使用的整個堆棧部署並復制到另一個租戶,並使用其各自的數據庫憑據。 僅當您受到開發資源的限制時,我才主張這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM