我认为可能是一个相对复杂的访问控制情况(没有太多经验,我可能完全错了)。该系统是私有/内部桌面应用程序,如果这有任何区别。
我正在处理的系统跟踪人员的证书(对表使用粗体)。只有某些用户可以访问此系统,使其受到一定程度的控制,但还需要进一步控制。例如;并非所有用户都应该能够访问管理员人员的证书,这应该仅限于HR。此外,某些用户可能会访问任何人员,但只能访问某些证书。
目前的想法是在证书& 人员,它是具有权限/访问级别的int。与this设置类似。 用户表格也会有一个" AccessLevel"字段,以便进行比较。
不确定访问级别的数量,目前正在考虑以下内容;
[Flags]
public enum AccessLevel
{
None,
ReadOnly,
Normal, // Can view all Certificates and Personnel that aren't set to Management
Management, // For "sensitive" Personnel and/or Certificates
HR, // Full access
Admin // Permission control/editing
}
之前没有对此级别的复杂性进行访问控制,我不确定我是否正朝着正确的方向前进?
答案 0 :(得分:0)
您应该避免在代码中编写授权逻辑。相反,您应该尝试外部化您的授权。使用可扩展访问控制标记语言XACML。 XACML为您提供了可扩展的体系结构,丰富的策略语言,以满足您的授权用例(以及更多),以及更高级的。
使用XACML,您可以编写有关不同操作(查看,编辑,控制...)的规则,您可以选择对您来说重要的参数/属性。例如,你可以写:
我最近在Cloud Identity Summit上发表了关于外部化授权的演讲。您可以找到我的幻灯片here。
HTH, 大卫。