2016-08-05 62 views
1

我的應用程序代表用戶自動執行外部系統上的某些操作。我們將這個應用程序庫存BC稱爲此上下文。DDD - 對外部環境的憑證

由於這是我的應用程序的主要特徵之一,它被建模爲一個域服務,並實施一個反腐敗層。迄今爲止都很棒。

另外,用戶可能在外部系統上有幾個不同的帳戶,我的應用程序會爲他們處理這些帳戶。所以我有一個單獨的有限上下文,我保留外部系統的用戶詳細信息和帳戶ID。我們說身份BC。

現在,Inventory BC的反腐敗層需要外部系統帳戶ID和憑證。賬戶ID是庫存BC的一部分,用於分隔不能通過這些外部賬戶進行的外部賬戶和操作。但我不確定應該在哪裏存儲憑據以及如何從庫存ACL中檢索憑證。

我是否應該將身份證明文件中的憑證保存在身份證BC中?然後我想我可以讓一個應用程序服務返回給定帳戶ID的憑證並從庫存ACL中調用它。

還是有更好的做法嗎?

編輯1:另外,如果我想將所有的上下文合併爲一個,那麼什麼是合適的?

編輯2:在我的外部系統的域服務上,應該將憑證作爲參數的一部分嗎?還是應該繼續使用ACL級別的憑據解決方案?

回答

1

這一切都有點模糊,但在身份證件BC中的外部系統證書與系統的用戶詳細信息一起感覺就像是漏洞抽象。是不是一個反腐敗層準確地保護你免受這個問題?

如果您認爲ACL的工作是從您的世界適應外部系統的世界,那麼我認爲從您的ID映射到其ID也是它的工作,並且只有它才能訪問外部標識。如何以及在哪裏存儲這些ID是技術細節。也許將它們存儲在與您的內部ID相同的數據庫表中會更方便。但我認爲他們不應該是身份BC的一部分。

+0

當用戶在我的應用程序上註冊時,他們還會在外部系統上註冊他們的帳戶,ID和憑證。因此,我將外部ID視爲我的域名的一部分,因爲它也用於驗證無法在其外部帳戶中執行的操作。 – jam01

+0

我不確定爲什麼需要知道外部ID。但這可能是因爲我並沒有真正得到最後一句話:) – guillaume31

+0

欣賞你的幫助,一直困住這一段時間。我的意思是用戶在外部系統中有帳戶A和B.您可以在A或B內移動,但不能從一個移動到另一個。所以我需要區分它們。 – jam01