使用基于操作的安全性的ASP.Net安全性

时间:2010-02-24 15:42:04

标签: asp.net security

我过去在ASP.Net中使用过的所有安全资料大部分都是基于角色的。这很容易实现,ASP.Net适用于这种类型的安全模型。但是,我正在寻找比简单的基于角色的安全性更细粒度的东西。

基本上我希望能够编写这样的代码:

if(SecurityService.CanPerformOperation("SomeUpdateOperation")){
    // perform some update logic here
}

我还需要这样的行级安全访问:

if(SecurityService.CanPerformOperation("SomeViewOperation", SomeEntityIdentifier)){
   // Allow user to see specific data
}

再次,细粒度的访问控制。有没有这样的东西已经建成?我可以放入ASP.Net并开始使用的一些框架,或者我将不得不自己构建它?

2 个答案:

答案 0 :(得分:1)

您是否看过授权经理(AzMan)? http://msdn.microsoft.com/en-us/library/bb897401.aspx

它包含在Server 2003中,并且在服务器2008中有一些更新,并附带一个MMC管理工具。

您可以使用2003版本的服务器将数据存储在xml文件或AD / ADAM分区中,而在服务器2008中,他们添加了SQL支持。

此工具允许您以角色,任务和层次结构的层次结构将安全对象链接在一起。操作

您可以在Asp.net中将其用作基于角色的提供程序,但它们也包含.net类,以便您可以直接访问授权存储内容。

答案 1 :(得分:0)

我认为您可能正在寻找声明式安全性。声明性安全性允许您很好地“声明”谁可以在MSDN上访问代码上的属性,这里是基于角色的安全性的页面。这是一个例子:

[PrincipalPermissionAttribute(SecurityAction.Demand, Role="admins")]
public class foo
{
    [PrincipalPermissionAttribute(SecurityAction.Demand, Role="Domain Admins")]
    public void bar()
    {
      ....
    }
}