我們有三種微服務:microA,microB & microC。如何構建Microservice和OpenID連接?
- 毫安&微型B正在推動產品1
- 毫安&的MicroC正在推動產品2.
顯然,我們需要一個安全層,在我們的情況下實施的「ID連接」供應商符合業務需求。我們將OpenID提供程序添加到堆棧中。
用戶/權限管理是很容易&自然:我們每個微服務的用戶的OpenID標識符對權利的一個子集相關聯:
例如在服務毫安,我們存儲用戶的OpenID XXX可以做到這一點。它在微服務級別被隔離。尊重我們語境的界限。精細。
當用戶在product1上使用OpenID登錄時,我們向用戶授予訪問令牌+ Id令牌。
當product1公開第三方使用的API時,情況就變得更加複雜。
現在,假設我的用戶來到第三方webapp並提示登錄&允許第三方獲得有關product1 API的一些權利。
如果我理解正確的OpenID連接,所有關於OAuth2的身份驗證,但我們如何處理經典的OAuth2範圍管理呢?
我發現,最好的情況是:
使整個ID連接到具有認證信息
,然後再拍全的OAuth2過程到另一個授權服務器要求用戶向第三方授予一些範圍?
這意味着在第三方:
- 用戶將被提示登錄的OpenID提供
- 然後重定向並提示是否接受範圍請求
這是正確的嗎?如果是,則OAuth2服務器流類似於對最終用戶的4個HTTP請求,因此執行兩次就像執行八個請求以完成Authentication + Authorization流。看起來太龐大了。
感謝您的反饋。 對於第三方來說,全部是關於請求特定範圍。 在你的例子中,OpenId微服務應該知道product1,product2(etc)的所有特定範圍。 因爲在登錄(請求訪問令牌)時,第三方可能需要某個產品的特定「正確」。 – ludofleury