.NET声明在三个名称空间中

时间:2012-07-29 22:00:45

标签: .net wif claims-based-identity

现在这很奇怪。在完成对.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)

3rd:(System.Security.Claims.Claim)

3 个答案:

答案 0 :(得分:30)

对于仍在寻找明确答案的人,MSDN在System.IdentityModel.Claims Namespace页面上有以下信息...

  

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

     

从.NET Framework 4.5开始   将Windows Identity Foundation(WIF)集成到.NET中   框架,基于WCF声明的身份模型已被取代   WIF。 WIF提供了一个基于声明的身份对象模型   用于提供跨多个的身份验证和授权   Microsoft产品堆栈,包括CLR,WCF和ASP.NET。 WIF   代表声明,声明类型和身份的类   基于索赔的委托人包含在    System.Security.Claims 命名空间。 从.NET 4.5开始,这些   应该使用类而不是类中的类   System.IdentityModel.Claims名称空间。

答案 1 :(得分:8)

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

答案 2 :(得分:4)

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