2010-08-02 84 views
2

我正在尝试评估是否使用基于经典委托人的授权与IdentityModel授权。这些天似乎微软正在推荐后者,但我还没有看到足够的成熟度或对它的支持。具体而言,我非常喜欢设置PrincipalPermissionAttribute的能力,并允许框架自动处理未经授权的类实例化和方法调用。基于Windows Identity Foundation的基于集成索赔的授权

我已经在使用ServiceAuthorizationManager并可以在那里执行评估...但非WCF情况如何?如何防止某些类的实例化并阻止之内执行WCF操作,而不是在它执行之前?

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

所以我想我的问题是...是微软的Windows身份基础(aka IdentityModel框架)真正成熟到足以使用此点?有没有完成我用IdentityModel描述的方法?

回答

2

你可以用WIF来实现这一切。其中,WIF插入.NET框架通过IPrincipalIIdentity接口。一个针对这两种编码的应用程序可能“只是工作”(就像大多数ASP.NET和WCF服务一样)。角色,作为无用的工件,自动被WIF映射,因此任何称为IPrincipal.IsInRole的工作者都应该工作。

This example显示了“一体化服务”的整合,并解释可能的实现(和扩展名)为一个更一般的“RequiresClaimAttribute”你的建议。

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

+0

谢谢,但除非我误解,RequiresRoleAttribute直接是RIA的一部分,因此无法在.NET Framework的其他部分进行扩展或重复使用,而PrincipalPermission本身在.NET Framework中受支持。我意识到WIF可以直接插入到委托人授权模型(我已经通过PrincpalAuthorizationPolicy为WCF服务执行此操作),但这并没有真正解决WIF的可用性问题,而是直接基于委托人的授权。 – Jeff 2010-08-03 05:18:53