0

我目前正在設計一個支持多種類型的用戶角色的REST風格的SQL支持的Web應用程序。我正在尋找實現授權抽象的想法,它既簡單又強大。Web應用程序的基於角色的授權系統?

系統的分層作用是沿着線:

superuser/admin -> group owner -> group user 

這個系統的一個真實世界的例子是:「我是一個學校的管理者,我有我的老師管理,他們所有課程都包含學生「。

我在思考一個UNIX模型,除了一個管理員的數據筒倉不能與另一個管理員重疊。在上面的例子中,一所學校不應該訪問另一所學校的數據。

  • 管理員角色對於他下面的每個組和用戶都具有完全的超級用戶權力。
  • 組所有者只能訪問組本身及其下的用戶。
  • 可以有多個管理員對數據的一個發射井,每組等多組業主
  • 管理員/組擁有者/用戶一般不會改變他們可以做什麼,在他們的能力將非常固定。可以改變的是他們可以對採取什麼樣的數據。

我絕對肯定有必須是幾個常規的模式在那裏,我可以啓動和開發自定義的授權系統圍繞它那是微調,以我的系統的需求。有ACL,Rails的CanCan中有很多庫,我相信還有更多。

我很想知道我的選擇是什麼,以及一些權衡是什麼。資源,閱讀,文章,書籍都會很棒。很可能我必須爲這個Web應用程序實現類似Parse.com的API(例如,API客戶端可以將自定義查詢編寫爲JSON映射,並且這些映射將在後端轉換爲SQL),並且這對於防止在各種不同的查詢變體中進行未經授權的訪問。

謝謝。

P.S.只是爲了澄清,我實際上並不在Rails上,我使用的堆棧沒有現有的授權庫,因此我需要自己開發。

回答