2016-02-21 61 views
1

那麼我們來看看基本的電子商務微服務。如何跨多個微服務提供用戶的身份?

  1. 身份和訪問。這個微服務將照顧用戶帳戶,角色
    和身份驗證。身份驗證方法將基於通常的基於令牌的流程(用戶輸入用戶名+密碼並且服務器通過cookie返回唯一和
    隨機令牌)。此服務也可用於獲取用戶配置文件。
  2. 購物車微服務。這種微服務可用於將產品放入購物車中。
    檢查購物車有什麼產品。等...

假設「身份和訪問」微服務將用於生成隨機令牌作爲一個成功的身份驗證的結果,並將該令牌鏈接到用戶,該令牌如何被用來使用戶的身份可用於購物車微服務?例如,當用戶將產品添加到他的購物車時,他將沿着授權令牌發送消息,並且購物車微服務必須基於該令牌識別用戶。

分佈式數據庫可以作爲選項嗎?一個數據庫,這些令牌存儲和鏈接到用戶構建,並且所有微服務都可以訪問?

還是應該所有的微服務都從一個特殊的身份和訪問API中獲取用戶的身份,這將根據訪問令牌公開用戶?

+0

可能的重複http://stackoverflow.com/questions/29644916/microservice-authentication-strategy –

回答

1

分佈式數據庫肯定與微觀服務的以下基本原則相沖突:

微服務擁有自己的數據,並通過良好定義的接口暴露它。 沒有其他微服務可以直接訪問其他微服務擁有的數據。

因此,在這種情況下,一種解決方案是擁有令牌微服務或您描述的最後一種解決方案。

+0

謝謝。接受和upvoted。結束了使用身份和訪問服務。從某個服務可以找到有關用戶或API的信息的數據庫是一回事。下游服務(僅讀取用戶信息)決不會干擾用戶數據庫的結構。如果使用API​​,則API結構也是如此。我認爲網絡上有很多誤導性的文章,關於什麼在服務解耦方面應該被認爲是一種好的做法。 HTTP API或數據庫API相同 –

+0

要繼續:這一切都取決於您同意的約定。 http API或數據庫都是訪問下游服務數據的簡單接口。所以從設計的角度來看它們是平等的。您甚至可以利用rdbms安全性概念來限制來自下游服務的某些操作/數據,而不是構建自己的HTTP API –

相關問題