2017-03-27 94 views
0

我正在爲不同的客戶端設置IdentityServer(identityserver3)。IdentityServer和MVC客戶端外鍵關係

我有一個問題,就是說我的IdentityServer託管在自己的服務器上,並有自己的數據庫。其他MVC客戶端的數據庫表的最佳方式是創建與身份服務器數據庫(用戶表)中的表的外鍵關係。

+1

你在這裏所描述聽起來不像是很好的做法,爲什麼該設計獲得額外的用戶信息你想讓db訪問你的用戶表給客戶端?你想在這裏做什麼? – Ming

+0

假設您在不同的服務器上有多個Web服務,它們可能有自己的DB,但使用這些服務的用戶是相同的。在每個服務的數據庫中,如果我想引用用戶表,我該怎麼做。例如,獲取服務中的所有項目都屬於用戶1. – David

+0

@Ming有幾個服務已經建好,它們都有自己的db。現在我們需要整合所有這些。由於我們想添加身份服務器來處理所有這些身份驗證和授權,並且我們沒有時間重新設計每個客戶端。所以我們面對這個挑戰,每個客戶都有自己的用戶表,因爲我們移動並將所有用戶表集成到了身份服務器,這些客戶失去了與用戶表的外鍵關係。 – David

回答

0

你不給身份到其他客戶端表的訪問,你可以做的是

  1. 添加用戶的元數據(從用戶表)進入令牌,索賠,以便它可以被讀取和在具有自己的用戶數據的其他MVC客戶端中使用需要加入。
  2. 或問題的參考權標,如果用戶的元數據太大添加到令牌,並且客戶可以通過撥打電話到getUserInfo端點
+0

如果在我的MVC客戶端中,我有一個包含列UserID的表,如何在這種情況下添加外鍵關係? – David

+0

@大衛你沒有,你的MVC客戶端做什麼?我們可能不在同一頁面上,因爲我認爲你的MVC客戶端應該只是某種查詢服務 - 如果是的話,根據用戶ID選擇自己的數據,爲什麼你需要加入表格? – Ming

+0

mvc客戶端有自己的businesslogic和數據庫,我有他們多個,他們是用不同的語言php + mysql,c#mssql,java oracle等寫的。現在我想將它們集成在一起,因爲它們都會有整合後的同一個用戶,但他們最初是由不同的團隊編寫的。因此我想使用身份服務器來提供中央身份驗證和授權。所以這裏面臨的挑戰是如何將外鍵關係添加到身份服務器數據庫中的所有客戶端數據庫的用戶ID(mysql mssql oracle) – David