asp.net-web-api – 使用WIF和OWIN中间件的角色与声明授权Asp.ne
我正在尝试使用
Windows Identity Foundation 2来保护asp.net web-api 2.0.我必须做出的选择是基于角色的授权和基于声明的授权.作为一种做法,我在DbInitializer中添加了一个用户,并为他分配了两个角色(管理员和经理).当我登录与用户,我看到ClaimsPrincipal在调试模式下,它已经具备,索赔有关的角色(管理员和经理).所以这里是问题:
>如果角色也被视为声明,那么b / w角色和声明的区别是什么? 我该怎么办?使用基于角色的系统,我只需使用适当的Authorize(Role =“Admin”)属性来修饰操作方法.我如何管理索赔?我是否需要将它们添加到数据库中并通过我的应用程序向不同用户授予/撤销这些声明? 解决方法
原则上,角色和索赔之间没有太大的区别.我已经全神贯注于基于声明的授权,做了大量的研究和一些测试项目.在一天结束时,一切都归结于你决定使用哪一个.
如您所述,角色被添加为声明类型.因此,在交货方面,它没有任何区别.但是MVC / WebApi已经有内置的基础设施来处理角色,并且如果用户没有所需的角色则拒绝.所以你不必自己做很多事情. 但是我发现你可以拥有太多的角色,而且他们的维护成本太高了.此外,您不能为用户分配太多角色 – 他们的身份验证cookie将变得庞大,最终由于浏览器中的cookie大小限制而无法登录(每个cookie 4K,所有HTTP头16K). 声称您可以更灵活.您可以有许多不同类型的声明(我们每个控制器少于一个)和一些声明值(读取,创建,编辑,删除).对于下降大小的应用程序(我们有100以上),您将需要有很多角色(每个控制器4个)来建模这种级别的权限控制.对于声明,我们有声明类型(人物,产品,订单)的枚举和声明值的枚举(创建,读取,删除).在cookie中,您可以将整数设置为声明类型和声明值 – 这可以在身份验证cookie上节省大量空间. 但有了声明,您必须自己编写身份验证机制的代码. 我一直在玩这个概念here,这对于MVC来说是authentication filter,但是WebApi过滤器看起来非常相似.现在这个原型的结果正在生产中并且运行良好. 总的来说,你的问题的答案是“它取决于”.主要是关于身份验证的细化程度以及应用程序的大小. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET表单身份验证 – 在调试时使用测试帐户自动登录?
- asp.net-mvc – ASP.NET MVC使用自定义角色提供程序重定向到
- 使用IronRuby的ASP.net MVC?
- 仅为匿名配置ASP.NET缓存?
- asp.net-mvc-3 – asp.net mvc 3验证摘要不显示通过不显眼的
- asp.net-mvc-3 – 自定义成员资格提供程序和统一依赖注入
- asp.net-mvc – 从MVC5框架OAuth/OWin身份提供程序与外部au
- 禁用ASP.net文本框而不实际禁用它?
- asp.net-mvc – ASP.NET MVC – Partial View可以有一个控制
- asp.net-mvc – 如何在Google.Apis调用中使用ASP.NET MVC O
- 如何实现ASP.NET 2.0,Coldfusion 5和Classic ASP
- asp.net-mvc-3 – 在MVC3区域中使用Webform
- asp.net – 值得学习经典ASP?
- asp.net-mvc – mvc ActionLink中的RouteValueDi
- LoginView中的ASP.NET LoginStatus不会触发Loggi
- asp.net-mvc – MVC EditorFor里面的另一个Edito
- asp.net – DotNetOpenAuth.WebServerClient.XSR
- asp.net – 插入未编译
- 发布asp.net网站给出“对象引用未设置为对象的实
- asp.net – 将href绑定到Code Behind属性