现在这很奇怪。在完成对.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)
答案 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.Claims
,System.IdentityModel
和System.IdentityModel.Services
。System.Security.Claims
包含新的ClaimsPrincipal
和ClaimsIdentity
类(见下文)。现在.NET中的所有主体都来自ClaimsPrincipal
。中Microsoft.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
。