加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC4安全性,身份验证和授权

发布时间:2020-12-15 20:41:16 所属栏目:asp.Net 来源:网络整理
导读:我正在使用Visual Studio 2011测试版工作在一个新的asp.net mvc4项目,并试图让我的头脑围绕整个安全的事情.它是一个内部Intranet应用程序,最初将使用单一登录,因此用户将不会提示输入 Windows ID /密码.该公司有一个用于存储不同应用程序角色的自定义应用程
我正在使用Visual Studio 2011测试版工作在一个新的asp.net mvc4项目,并试图让我的头脑围绕整个安全的事情.它是一个内部Intranet应用程序,最初将使用单一登录,因此用户将不会提示输入 Windows ID /密码.该公司有一个用于存储不同应用程序角色的自定义应用程序,可通过存储过程调用获得.它将需要一个用户的登录ID,并返回一些包含角色的集合. “MyApp.Data”,“MyApp.User”,“MyApp.Admin”,那么这是什么 – 这是一个自定义会员资格提供商,自定义角色提供者还是别的?

我一直在阅读授权,认证,会员资格,角色等所有内容,我目前无法看到树木的木头.我已经看到,现有的ASP.NET安全对象已经过试用和测试,除非有非常复杂的要求,内建的这些对象就足够了,所以我很高兴使用已经存在的内容.

所以如果用户已经登录到网络,这意味着它们是经过验证的 – 是否正确?如果是这样,那么我只需要实施授权.是否需要使用Authorize属性来装饰每个Controller或Action?如果我从我的自定义角色存储应用程序中检索角色,那么如何设置[Authorize(Roles =“ABC”)]的“ABC”部分?

我读了几篇文章和博客文章,包括Jon Galloway的这篇文章,但是我终于失去了意义:

Customizing Authentication and Authorization The Right Way

这么多问题…如果有人知道如何所有这些挂在一起的高级别的描述,那么我都是耳朵:)

解决方法

好的,没有一个答案给出一个高层次的看法,所有这些挂在一起我以为我会写下我的发现到目前为止:

>该公司使用Active Directory来存储用户登录详细信息,因为这用于成员资格我不需要自定义会员资格提供商.一旦用户登录到公司网络,那么它们被认证.添加全局授权过滤器可确保访问系统的任何用户都需要进行身份验证.来自Rick Anderson的最新信息msdn:

http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx

所以在Global.asax我会补充说:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new System.Web.Mvc.AuthorizeAttribute()); //new
}

>一旦用户认证,我需要照顾授权.该公司拥有一个现有的全球数据存储区,我不会更新访问权限,只能读取访问权限,因此我可以通过存储过程调用检索给定用户的角色.可能需要几天到几周的时间才能帮助台在请求之后创建角色,因此,最初将创建2个标准角色,即用户和管理员,随后的角色将存储在我们的应用程序数据库中.
>除了这两个标准角色,还需要后续的角色,如超级用户等.这些角色根据业务规则等具有各种权限,并且需要存储在我们的应用数据库中.所以在这种情况下,我将需要创建一个自定义角色提供程序,将相应的asp.net角色表添加到我的应用程序数据库,并将其插入到web.config中.这是一个ms页面,标题是管理授权使用角色,我正在选择一些:

http://msdn.microsoft.com/en-us/library/9ab2fxh0.aspx
>从目前为止,我所看到的唯一一个自定义角色提供程序所需的表格是Roles和UsersInRoles.

CREATE TABLE角色
(
Rolename Text(255)NOT NULL,
ApplicationName Text(255)NOT NULL,
CONSTRAINT PKRoles PRIMARY KEY(Rolename,ApplicationName)
)

CREATE TABLE UsersInRoles(用户名文本(255)NOT NULL,Rolename Text(255)NOT NULL,ApplicationName Text(255)NOT NULL,CONSTRAINT PKUsersInRoles PRIMARY KEY(用户名,Rolename,ApplicationName))>一旦设置完毕,我需要弄清楚如何将全球数据存储中的2个标准角色(User and Admin)与存储在我的应用数据库中的自定义角色合并,如果我可以使用(例如)[Authorize(Roles =“Admin,Superuser”)],或者我需要对AuthoriseAttribute进行子类化,并做一些更聪明的事情.>我只是意识到,当我使用AD进行身份验证时,我需要一种方法来添加/注入当前用户是其成员的角色集合.所以虽然我不需要任何自定义的成员资格提供者的功能,我仍然需要与httpContext.User交互来更新其角色集合.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读