.NET 4.5中的microsoft.identityModel和system.identityModel有什么区别?

13
我可能不是第一个问这个问题的人,但现在我们应该使用哪一个? 据我所知,它始于一个非常小的System.IdentityModel用于WCF。 然后出现了添加了很多内容的Microsoft.IdentityModel类。 这是在http://social.technet.microsoft.com/wiki/contents/articles/1898.aspx#v3q10中的情况。
但是现在在4.5中,我发现System.IdentityModel几乎拥有来自Microsoft.IdentityModel的所有类(尽管似乎进行了一些重构,并且web.config中的配置略有不同)。 现在微软发布一个JSON Web Token处理程序作为nuget,它依赖于Microsoft.IdentityModel和System.IdentityModel。(JWTSecurityTokenHandler驻留在Microsoft.IdentityModel.Tokens.JWT中,派生自System.IdentityModel.Tokens.SecurityTokenHandler)。
这变得相当令人困惑。 有没有人知道我应该使用哪一个?
2个回答

11
WIF 1.0版本是从微软下载'Windows Identity Foundation'得到的,它针对.NET 3.5(并兼容.NET 4.0)。由于它是一个非核心版本,所有类型都必须存在于非核心命名空间(Microsoft.IdentityModel等)和非核心程序集中。
当前的WIF 4.5版本已直接集成到核心.NET 4.5 Framework,IClaimsPrincipal接口的最极端例子已被替换为ClaimsPrincipal基类。因此,所有.NET IPrincipal实现现在都是从这个基类派生而来的-这是直接在mscorlib.dll中实现的。故System.IdentityModel等命名空间存在。
预发布的JWT Handler(nuget)当然是一个非核心版本。如果JWT标准在那时得到确认,我不会感到惊讶它将被纳入核心.NET vNext中,但在那之前,框架命名指南要求JWTSecurityTokenHandler等位于Microsoft.IdentityModel中。
我能理解你的困惑; 我很高兴只需担心.NET 4.5的项目-目前为止。 :)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接