2

在我的应用程序中添加,更新和删除各种实体的能力通常由相关用户之间定义的关系决定。这里有一个例子:如何处理ASP.NET MVC 4/EF应用程序中的复杂授权?

  1. 基本用户或他的上司可以创建与用户相关联的任务,但只有他的上司可以锁定任务,使基本的用户将不再能够添加/更新/删除它。在被锁定之前,两个人都可以更新任务。

什么是实现这些类型的复杂和先进的规则处理与用户的关系和实体的状态(新的,现有的),以及像可能是定义的用户,其他的事情,最好的方法与实体关联的状态?

感谢

回答

0

在银行我工作了,我们有这样的让整个银行的层次结构看他们的报告结构贷款的贷款管理系统。例如,市场主管可以立即看到他/她的所有报告的贷款组合。此外,他/她有能力从所有报告的列表中选择(直接或间接)名称来查看该员工的组合。我们不得不维护报告结构的HR数据库。一旦我们有了这些,我们就建立了用户函数(也可以作为存储过程来完成,但用户函数在我们的LINQ to SQL后端中运行良好)可以让我们检查用户x是否监督用户y。

因此,在您的示例中,只要您知道谁拥有该任务,并且有权访问可用于确定任务所有者是否向当前登录的用户报告的方法,则应该能够轻松启用/禁用页面上的“锁定”按钮。

合作就在于创建报告结构DB,并使其保持最新!

3

什么是实现这些类型的复杂和先进的规则处理用户的关系和实体的状态(新的,现有的),以及像也许用户其他的事情,最好的方法与实体关联的定义状态?

您想使用授权标准,即XACML,即可扩展访问控制标记语言。 XACML是:

  • 由OASIS开发的标准,就像SAML是
  • ,专注于细粒度访问控制的标准:考虑到用户信息,资源信息,状态,和上下文信息的访问控制
  • 实现基于属性的访问控制(ABAC)模型中的标准:用户信息,资源数据和状态都可以被视为属性
  • 使用策略和规则来构造的属性和授权/标准拒绝访问:XACML是基于策略的
  • 这是一个可以应用于多个图层的标准,例如跨数据层,数据层,MVC应用程序的业务层,可以应用于多种技术和语言的标准。 C#(MVC4和更多),Java,Python ...

有了XACML,可以方便地实现关系例如为:雇员可以批准交易,当且仅当交易金额<员工审批限制和交易没有被锁定

下一步该怎么办?

  • 查看NIST的页面ABAC
  • 退房OASIS XACML的page和规格
  • 退房现有的实现(开源和供应商,如一个我工作,Axiomatics。)
相关问题