使用Windows Identity Foundation进行基于声明的集成授权

时间:2010-08-02 14:52:31

标签: .net wcf authorization wif

我正在尝试评估是否使用经典的基于Principal的授权与IdentityModel授权。这些天微软似乎推荐后者,但我在成熟度或支持方面还没有看到足够多。具体来说,我非常希望能够设置PrincipalPermissionAttribute并允许框架自动处理,以防止未经授权的类实例化和方法调用。

我已经在使用ServiceAuthorizationManager并且可以在那里进行评估......但是非WCF场景呢?那么阻止某些类的实例化并阻止方法调用 WCF操作中,而不是在它执行之前?

我也已经在使用IoC机制,并且已经考虑使用拦截器和自定义激活器,对类或方法上的假设RequiresClaimAttribute执行基于声明的评估...但我真的不喜欢这样的一种方法,因为它需要任何需要授权支持的对象才能使用IoC容器进行解析和构建......

所以我想我的问题是......微软的Windows身份基础(又名IdentityModel框架)真的足够成熟,可以在这一点上使用吗?有没有办法完成我用IdentityModel描述的内容?

1 个答案:

答案 0 :(得分:2)

你可以用WIF实现这一切。除此之外,WIF还通过 IPrincipal IIdentity 接口插入.NET框架。针对这两个编码的应用程序可能“正常工作”(就像大多数ASP.NET和WCF服务一样)。角色,作为一个用于授权的工件也会被WIF自动映射,因此任何调用 IPrincipal.IsInRole 的frameowrk都应该有效。

This example显示与“RIA服务”的集成,并按照您的建议解释了更为通用的“ RequiresClaimAttribute ”的可能实施(和扩展)。< / p>

关于成熟度问题。我想这取决于你如何定义它。它是.NET框架的一个相对较新的补充,但它已发布并得到完全支持。我知道使用WIF的几个(生产)应用程序。一些更大,一些更小,一些在私营部门,一些在政府解决方案。您必须评估适用性和适合您自己的背景和约束。