我想要弄清楚的是,什么是“基于声明”的授权示例(最好是在MVC4)?我的Authorize属性如何与此功能交互? WebSecurity和Roles API没有改变;没有“DoesUserHaveClaim()”签名。类似地,不清楚Authorize属性如何与声明进行交互。
此“声明授权”功能主要是否用于OAuth?如果是,如何将索赔转交给我的申请?一个cookie?或者这个声明提供者功能是否用于更广泛的用途?
简而言之,使用ClaimsPrincipal的故事是什么?
我看到的最近的东西,有点有意义,是this discussion.但我怀疑是日期 – 它应该与什么MVC4互联网项目模板生成。即使如此,它仍然没有建议如何使用Authorize属性与设置。
更新
我从这些来源找到了我的问题的答案:
> The remarks section of ClaimsPrincipal解释说,WebSecurity,Roles和AuthorizeAttribute API实际上根据需要归结为声明检查。
> A claims-based MVC4 example is here(与其他人一起)。
>基本SAML story is shown here。
解决方法
OAuth需要基于声明的安全性,但它也适用于其他授权方案。您在应用程序中使用的自定义声明可以从ClaimsPrincipal.Current访问。还有一些技术可以将此信息存储在Cookie中,尽管ASP.NET安全流水线在默认情况下不会这样做。
您引用的讨论是针对Windows身份基础(WIF),现在是在4.5的一部分,并且是为什么基于声明的身份是一流的公民。所有Principal类型都继承ClaimPrincipal。有关基于声明的安全性的良好概述,请查看此免费电子书“A Guide to Claims-Based Identity and Access Control (2nd Edition)”。在这个领域的真正的专家是Dominick Baier和his blog充满了关于这个主题的有用的信息。他还有一个伟大的在线培训课程Pluralsight称为“Identity & Access Control in ASP.NET 4.5”。