.NET安全属性。是否可以创建自定义安全模型?

.NET安全属性。是否可以创建自定义安全模型?,.net,security,authentication,custom-attributes,.net,Security,Authentication,Custom Attributes,常见问题:如何使用类/方法属性在任何.NET应用程序(例如WCF应用程序)中实现用户访问权限区分系统 因此,我们有: 一组用户 一组角色(例如,enumRole) 每个用户都有自己的角色集 可以为特定角色指定每个类/方法 [AuthorizationAttribute(角色=新角色[]{Role.Admin}] 公共类UserService:IUserService { } 如果用户的角色集不包含此角色,则用户不能访问该方法 更新。我试着把问题描述得更清楚。Akton的解决方案很好地解决了这个问

常见问题:如何使用类/方法属性在任何.NET应用程序(例如WCF应用程序)中实现用户访问权限区分系统

因此,我们有:

  • 一组用户
  • 一组角色(例如,enum
    Role
  • 每个用户都有自己的角色集
  • 可以为特定角色指定每个类/方法

    [AuthorizationAttribute(角色=新角色[]{Role.Admin}] 公共类UserService:IUserService {

    }

  • 如果用户的角色集不包含此角色,则用户不能访问该方法


  • 更新。我试着把问题描述得更清楚。Akton的解决方案很好地解决了这个问题。

    可以像您建议的那样创建属性化安全模型,但这并不容易。您的安全对象必须继承自和您的安全属性(或实现接口)。然后:

  • 实现该方法。创建一个对象,称之为
    MySecurityProperty
    ,该对象实现
    IContextProperty
    IContributeObjectSink
    接口,并将其添加到
    IConstructionCallMessage.ContextProperties
    集合中
  • 在构造对象的实现中,将其称为实现IMessageSink接口的
    mysecurityspect
  • 在的实现中,您实际上会检查调用是否有效。如果它强制转换为,表示方法调用,则可以查询
    IMethodMessage
    的属性,查看它是否正在使用您的安全属性调用方法或类,并执行相应的检查。如果调用未经授权,则引发相应类型的异常
  • 你需要几个小时才能让它工作,但一旦它工作了,它就有意义了。它只是.Net框架中一个非常缺乏支持的部分。除了复杂性之外,最大的问题是它迫使您的安全类从ContextBoundObject继承,而不是从任何其他库类继承。ContextBoundObject还继承自,这可能会干扰序列化


    请参阅以获得更深入的解释。

    可以按照您的建议创建属性化安全模型,但这并不容易。您的安全对象必须继承自和您的安全属性(或实现接口)。然后:

  • 实现该方法。创建一个对象,称之为
    MySecurityProperty
    ,该对象实现
    IContextProperty
    IContributeObjectSink
    接口,并将其添加到
    IConstructionCallMessage.ContextProperties
    集合中
  • 在构造对象的实现中,将其称为实现IMessageSink接口的
    mysecurityspect
  • 在的实现中,您实际上会检查调用是否有效。如果它强制转换为,表示方法调用,则可以查询
    IMethodMessage
    的属性,查看它是否正在使用您的安全属性调用方法或类,并执行相应的检查。如果调用未经授权,则引发相应类型的异常
  • 你需要几个小时才能让它工作,但一旦它工作了,它就有意义了。它只是.Net框架中一个非常缺乏支持的部分。除了复杂性之外,最大的问题是它迫使您的安全类从ContextBoundObject继承,而不是从任何其他库类继承。ContextBoundObject还继承自,这可能会干扰序列化


    请参阅以获得更深入的解释。

    是的,这确实是解决我问题的好办法,而且对我很有效。谢谢你,你帮了我很多。是的,这真的是解决我问题的好办法,对我来说很有效。谢谢你,你帮了我很多。我真的找不到任何理由来结束这个问题——阿克顿给了我一个很好的答案。所以,不难说出这里要问什么。我真的找不到任何理由来结束这个问题——阿克顿给出了一个很好的答案。因此,不难看出这里的问题是什么。