簡體   English   中英

Keycloak 授權 - 最佳實踐角色與組

[英]Keycloak Authorization - best practice roles vs groups

我有一個使用 Keycloak 保護的 Web 應用程序。 為了使服務描述簡短,我們將用戶和文檔作為服務中的實體。 用戶可以訪問一個或多個文檔,並且可以編輯或閱讀該文檔。

目前我們有管理員、最終用戶、開發人員等角色。然后我們在 Keycloak 之外保留一個數據庫表,用於將文檔映射到用戶以及哪些用戶對哪些文檔具有什么訪問級別。 我們所有的最終用戶在 Keycloak 中都有 EndUser 角色。 每次最終用戶嘗試讀取/編輯文檔時,我們都必須在數據庫表中進行查找以進行授權。

我們想將該表遷移到 Keycloak。 據我了解,我基本上有兩種選擇:

  • 創建很多角色,每個文檔兩個,名稱分別為doc_read_[DOCUMENT-ID]doc_edit_[DOCUMENT-ID]等。 然后將正確的角色分配給正確的用戶。 這里的缺點是角色的數量會增加很多。 此外,附加到用戶的角色數量將非常大。

  • 為每個文檔創建一個組,名稱為文檔 ID。 有不同的子組進行讀/寫,然后將用戶添加到正確的組中。 缺點是組的數量會非常大。 另外,我將在組名上依賴授權,因此組名列表必須映射到令牌。

我不想為每個用戶添加帶有文檔 ID 的用戶屬性。 使用這種方法,我無法獲得文檔的概覽,也無法查看哪些用戶可以訪問給定的文檔。

這里的最佳做法是什么? 有沒有其他解決方案可以解決這個問題? 這一定是一個非常常見的設置。

這只是我的看法。

據我了解,這兩種解決方案都不是最理想的,為每個文檔添加一個角色是不自然的,而且粒度太細。 正如您已經提到的那樣,這會導致過多的角色,您可能必須將它們添加到令牌中。

我個人將 Keycloak 僅用於身份驗證部分並在后端進行授權部分。 我還將嘗試以反映允許哪些用戶角色操作它們的方式對文檔進行分組。

或者,您可能會嘗試使用 Keycloak 的授權功能來處理該用例,但是我從未使用過它,因此關於此選項我無話可說。

在我看來,您想要實現的目標與您的業務邏輯非常相關,我不建議您依賴 keycloak 來實現。 你的代幣會不斷增長,管理真的是一場噩夢。

我認為擁有具有良好緩存以查找權限的服務沒有問題,大部分數據不會隨着時間的推移而發生太大變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM