Bre*_*ias 37 authorization asp.net-mvc-4 asp.net-4.5
新的ASP.NET 4.5代码已将ASP.NET RoleProvider"重新定位"为ClaimsProvider.
我想弄清楚的是,基于"声明的"授权示例是什么样的(最好是在MVC4中)?我的Authorize属性如何与此功能交互?WebSecurity和Roles API没有改变; 没有"DoesUserHaveClaim()"签名.同样,目前尚不清楚Authorize属性如何与声明进行交互.
这种"声明授权"功能主要用于OAuth吗?如果是,请求如何转发到我的申请?一块饼干?或者这种声明提供程序功能是否适用于更广泛的用途?
简而言之,使用ClaimsPrincipal的故事是什么?
我所看到的最接近的东西是有意义的,就是这个讨论.但我怀疑这是过时的 - 它应该与MVC4互联网项目模板产生的相比.即便如此,它仍然没有建议如何在设置中使用Authorize属性.
我从这些来源找到了我的问题的答案:
Kev*_*ans 33
基于声明的安全性有助于将安全模型与应用程序域分离.声明可以是您想要附加到用户身份的任何内容,例如电子邮件,电话号码或指示用户是否是超级用户的标志.这为您提供了设置授权过程的最大灵活性.从历史上看,在ASP.NET应用程序中,您必须确定要允许的角色,并在编写应用程序时应用它们.然后检查用户是否在角色中授权他们.这会将您的安全模型与您的应用程序混合在一起.在基于声明的情况下,您具有更大的灵活性,并且更典型的是设置授权方案,该方案将资源(例如:订单管理系统中的订单)和操作(例如:读取,写入,执行)作为输入参数提供给您的授权过程,有效地将安全性与应用程序分离.看到ClaimsPrincipalPermissionAttribute用于此技术的示例.
OAuth需要基于声明的安全性,但它也适用于其他授权方案.您可以从ClaimsPrincipal.Current访问您在应用程序中使用的自定义声明.虽然ASP.NET安全管道默认情况下不执行此操作,但也存在将此信息存储在cookie中的技术.
您引用的讨论适用于Windows Identity Foundation(WIF),它现在是4.5中.NET的一部分,也是基于声明的身份是一等公民的原因.所有Principal类型都继承自ClaimsPrincipal.有关基于声明的安全性的概述,请查看此免费电子书" 基于声明的身份和访问控制指南(第2版) ".这个领域的真正专家是Dominick Baier,他的博客充满了关于这个主题的有用信息.他还有一个关于Pluralsight的在线培训课程,名为" ASP.NET 4.5中的身份和访问控制 ".
| 归档时间: |
|
| 查看次数: |
16341 次 |
| 最近记录: |