WCF是否具有MVC的[Authorize]属性的等价物?

时间:2011-01-09 20:05:03

标签: .net wcf

我想用属性修饰某些操作合同,以通过自定义逻辑授权调用者,如下所示:

[ServiceBehavior]
public class Service1
{
    [OperationContract]
    [Authorize] // ?? this should make sure only admins can call this method
    public List<SampleItem> GetCollection()
    {
        return new List<SampleItem>() { new SampleItem("Only Admins see me") };
    }
}

[授权]应检查呼叫者是否有权呼叫此操作;如果不是 - 它应该返回错误错误。

感谢。

3 个答案:

答案 0 :(得分:21)

没有开箱即用 - 但是WCF的顶级大师JuvalLöwy在MSDN杂志上发表了一篇非常有趣的文章,关于Declarative WCF Security,它的方向是一致的。

Juval确定了几个关键的安全方案,并将每个方案包装成WCF服务行为,以作为服务器端服务类的属性应用。确实很有意思!

答案 1 :(得分:3)

WCF没有任何特殊属性用于此目的,但您可以使用PrincipalPermissionAttribute - .NET中基于声明性角色的安全性的通用方法。

答案 2 :(得分:2)

在我的WCF应用程序中,我基本上覆盖了所有默认的身份验证和授权内容,并使用PrincipalPermissionAttribute的一些自定义处理来检查我的自定义安全权限。

我在这篇文章中有一些关于我如何做到这一点的代码信息:.NET Declarative Security: Why is SecurityAction.Deny impossible to work with?