21

现在这很奇怪。在完成对 .NET 中基于声明的解决方案的一些研究后,发现不同的作者在实际谈论同一问题时会引用 .NET 命名空间中的不同类。声明类(更不用说周围的其他 Identity、Principal、Manager、Helper 类)在 3 个不同的命名空间中定义。

很明显,WIF 是 .NET 3.5 和 4.0 的单独附加组件,并且它在 4.5 中被重写并成为核心的一部分。然而,对于新项目使用什么类有明确的指导确实很有帮助(这样移植到 4.5 之后可能会更容易)。还有其他人有关于这个主题的更多信息吗?

第一个链接: http: //msdn.microsoft.com/en-us/library/ms572956(v=vs.110)(System.IdentityModel.Claims 命名空间)

第二: http: //msdn.microsoft.com/en-us/library/microsoft.identitymodel.claims.claim.aspx (Microsoft.IdentityModel.Claims)

第三:(系统.安全.声明.声明)

4

3 回答 3

32

对于仍在寻找明确答案的任何人,MSDN 在其System.IdentityModel.Claims 命名空间页面上有以下信息......

System.IdentityModel.Claims 命名空间包含实现基于 Windows Communication Foundation (WCF) 声明的身份授权模型的类。该模型包括 Claim 类和 ClaimSet 类。

从 .NET Framework 4.5 和将 Windows Identity Foundation (WIF) 集成到 .NET Framework 开始,WCF 基于声明的标识模型已被 WIF 取代。WIF 提供基于声明的身份对象模型,可用于跨多个 Microsoft 产品堆栈(包括 CLR、WCF 和 ASP.NET)提供身份验证和授权。表示声明、声明类型以及基于声明的身份和主体的 WIF 类包含在 System.Security.Claims命名空间中。从 .NET 4.5 开始,应使用这些类而不是 System.IdentityModel.Claims 命名空间中的类。

于 2014-02-11T12:31:00.663 回答
8

微软的回答似乎是:“WIF 类现在分布在各种程序集中,主要的是System.Security.Claims,System.IdentityModelSystem.IdentityModel.Services.System.Security.Claims包含新的ClaimsPrincipalClaimsIdentity类(见下文)。.NET 中的所有主体现在都派生自。WIF 1.0ClaimsPrincipal中的类具有主要分布在(管道、WCF 集成)和(对 WS-Federation 的支持、会话管理)。这些更改也反映在配置部分。Microsoft.IdentityModelSystem.IdentityModelSystem.IdentityModel.Services

于 2012-10-15T13:03:50.040 回答
5

System.IdentityModel.Claims是 WCF/.Net 3.0 的一部分

Microsoft.IdentityModel.Claims扩展System.IdentityModel.Claims并且是 Windows Identity Foundation 类。

System.Security.Claims是.Net 4.5 版本。

因此,如果您使用 编写WIF,则应该使用Microsoft.IdentityModel.Claims.

于 2012-07-31T20:24:34.717 回答