2

我正在尝试评估是否使用经典的基于 Principal 的授权与 IdentityModel 授权。微软最近似乎在推荐后者,但我还没有看到足够的成熟度或支持。具体来说,我真的很喜欢设置 aPrincipalPermissionAttribute并允许框架自动处理防止未经授权的类实例化和方法调用的能力。

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

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

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

4

1 回答 1

2

您可以使用 WIF 实现这一切。除其他外,WIF 通过IPrincipalIIdentity接口插入 .NET 框架。针对这两个编码的应用程序可能会“正常工作”(就像大多数 ASP.NET 和 WCF 服务一样)。角色,作为一个人工制品,由 WIF 自动映射,因此任何调用IPrincipal.IsInRole的框架都应该工作。

此示例显示了与“RIA 服务”的集成,并按照您的建议解释了更通用的“ RequiresClaimAttribute ”的可能实现(和扩展)。

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

于 2010-08-03T04:09:10.553 回答