2016-12-05 153 views
1

我正在嘗試構建純JavaScript Rest-Client應用程序,該應用程序必須支持從REST服務器匿名檢索信息,該服務器已支持用於外部應用程序的認證/授權的JWT。該服務器已被其他客戶端應用程序使用,支持多租戶。實際上將租戶信息嵌入到JWT中。將JWT用於匿名和經過身份驗證的用戶

此外,應用程序需要支持將某些資源標記(或選擇)爲收藏的用戶(人類),因此用戶/角色創建以及用戶的進一步認證/授權需要一種機制。但是這些用戶不能被隔離到單個租戶,他們會希望跨租戶使用資源。

因此,現在我發現我需要使用JWT值來進行匿名數據檢索,當然這應該與租戶無關。這意味着我必須創建一個具有隻讀資源權限的特殊角色的用戶,除了創建用戶的權限(當客戶端註冊時),這應該與租戶無關。當用戶登錄到系統時,JWT應該替換爲具有用戶憑證的那個用戶憑證,以便與租戶無關。我不確定這是否完全正確,那麼我們應該如何處理這樣的情況呢?

我的另一個擔心是,我們有相同的後端支持認證和證書存儲爲人客戶(租戶無關)和應用客戶端(租戶感知),所以邏輯是稍微複雜一點,以便處理這裏的特權和租戶限制。這可能只是我的印象,但我覺得在邏輯和/或數據存儲中,應用程序用戶和人類用戶應該是分開的。

但是我不完全確定,我想知道你們中的一些人是否有以前的經驗或對這個主題有一些想法?

回答

1

您可以嘗試以下方法:創建用戶,爲用戶分配需要訪問的租戶的只讀角色。

的數據會像 用戶1 - tenant1 - 管理角色 用戶1 - tenant2 - 數據讀取器作用 用戶1 - 3租戶 - 用戶角色

在智威湯遜,我們確保用戶被授權。然後我們得到可訪問租戶的列表,並查看他是否可以訪問上述數據所需的租戶數據,然後完成授權。

HTH

+0

謝謝你,我會嘗試你的方法,並再次發表評論的經歷,也許我的問題太基礎 – carpinchosaurio

+0

意見,最後我用你的基於角色的邏輯的方法,對客戶更換JWT匿名或經過驗證的用戶,租戶不可知用戶的數據存儲現在是分開的,我發現將租戶信息與JWT本身分開很有用,現在我對每個請求都使用了特殊的標題。它現在正在工作並且可以維護。謝謝你的想法。 – carpinchosaurio

相關問題