我有一個C#.net應用程序,它既服務於公司的內部用戶,也服務於外部客戶。我需要進行細粒度的授權,比如誰訪問什麼資源。所以我需要基於資源或基於屬性的內容,而不是基於角色的授權。Web應用程序的細粒度授權
什麼在我腦海中是要麼:
- 實現自己的授權機制和SQL表對我的.NET應用程序
- 使用/實現一個標準的機制,比如已經實現XACML軟件(例如Axiomatics)
第一種方法的問題是它不是集中式的,也不是標準的,因此其他系統不能將其用於授權。
第二種方法的問題是它可能較慢(由於每個資源需要額外的調用)。此外,我不確定市場上的應用程序是否支持XACML等標準授權以使未來的集成更容易。
因此,一般來說對於應該爲內部用戶和外部客戶提供服務的Web應用程序,細粒度授權有什麼好的做法?
訪問權限是否可以表述爲策略(覆蓋很多情況的一般規則)還是用戶彼此之間共享決策,基本上是任意的? – kgilpin
@kgilpin:訪問權限既可以是通用的,也可以是特定的。如「僅A組可以讀取發票」,並且具體如「用戶X對賬戶Alpha有讀取權限」一樣。 – kaptan
我認爲目前關於基於角色的訪問控制(RBAC)實際上存在一些混淆。在其正式的構想中,RBAC非常有能力做你想做的事。您描述了兩個角色:「帳單讀者」和「帳戶Alpha的讀者」。下面有兩個來自基於屬性的訪問控制供應商的答案,但上面描述的規則對我來說聽起來並不屬於基於屬性的。有人認爲「RBAC無法做到這一點」,因爲人們將RBAC的形式與RBAC的一些相當薄弱的實現相混淆。 – kgilpin