我是身份系统开发的新手,我正在考虑在ASP.NET MVC 3体系结构(在控制器级别实现)中使用声明主体和声明身份进行授权。
我可以看到一些使用HttpContext.User.Identity
进行授权的实现,有些使用IClaimsPrincipal
。根据我在几篇文章中的理解(较差),IClaimsPrincipal
是一种基于声明的方法,为应用程序级别的使用提供HttpContext.User.Identity
上下文。如果我使用ADFS 2.0作为STS/FP服务,这两种方法之间的区别是什么?哪一种更有效?
IClaimsPrincipal
是IPrincipal
的WIF扩展。IClaimsPrincipal
提供了IClaimsIdentity
的集合,同样,IClaimsIdentity
继承了IIdentity
。
如果您在ASP.NET中使用WIF,那么IClaimsPrincipal
/IClaimsIdentity
和HttpContext.User.Identity
实际上是相同的方法。作为身份验证管道的一部分,WIF会将您的HttpContext.User.Identity
设置为IClaimsIdentity
,这样您就可以访问它,如下所示:
IClaimsIdentity claimsId = HttpContext.User.Identity as IClaimsIdentity;