"验证"与"授权"是对网页资源安全管理的两道门。

验证(Authentication):检查用户是否是合法的用户。就像是网站大门口的保卫,服责验证使用的用户名和密码。

授权(Authorization):检查用户是否有访问某种资源的权限。例如有的人虽然能过了环保局门口保卫的验证,进入环保局,但他可能是一个普通科员,那他就没有局长职责。

验证与授权的底层运作:

首先,打开windows操作系统的“管理工具”->“计算机管理”->“本地用户和组”->“用户”。会看到右侧的窗口中列出了好多的计算机用户,但细心的朋友会发现,你安装完IIS后会多出一个用户“IUSR_***”,这个用户是做什么用的呢?答案是:它是Windows IIS匿名者所使用的授权账号。而“IUSR-***”中的“***”就是您的计算机名。

然后,你再在c:\inetpub\wwwroot(IIS默认的文件夹)文件夹上右击,选择“属性”(NTFS格式),在“组和用户名称”列表中你会看到当前文件夹授权给了“IUSR_***”这个Internet来宾帐户了。这个授权是必须,不要删掉。

最后,在 “Internet信息服务管理器(IIS)”中右击“默认站点”,选择“目录安全性”->“身份验证和访问控制”->“编辑”打开“身份验证对话框”,在“用户名”的文本框中会看到“IUSR_***”这个用户名。

现大家明白了,客户机通过网络来访问你的网站的时候,是借用了“IUSR_***”这个用户来访问你的网站的。而“IUSR_***”这个用户的权限控制是受“NTFS”的ACL进行设置的。所以IIS的身份验证的底层运作的主要控管者是由“NTFS”权限管理系统来实现的。

身份验证:

Asp.net2.0中提供的身份验证模式有三种:

1)      Windows身份验证:通过windows的ACL和IIS配合进行验证的。网站本身没有帐户管理功能,全部委托Windows的安全机制来实现。管理员必须为每一个访问网站的用户分配一个服务器Windows上的账户。这样问题就来了,在Internet环境下你很难让管理员为每一个用户分配一个账号,所以这种验证方式不适用于Internet环境,只适于公司内部的受控环境中。所以在这里我就略去不说了。

2)      Forms身份验证:通过自己的帐户管理系统和IIS配合进行验证,并把验证的身份保存在Cookies中。这种方式适合于Internet环境。

3)      Passport身份验证:此验证方式是通过微软提供的Passport服务进行验证,当然,你需要给微软交不菲的$了。这种验证方式我也就略去不说了。

设置你的网站的验证模式:

1)      依次打开“Internet信息服务管理器(IIS)”-“默认站点”-“属性”-“ASP.NET”-“身份验证”。在“身份验证设置”中的下拉列表中选择你要实现的身份验证方式(这里我们选择Forms)。

2)      将站点开启IIS匿名访问。

3)      创建登录页面(用户名和密码两个文本框和一个登录按钮)

4)      编写“登录”按钮的代码,验证用户名和密码

5)      设置网站登录程序

<authentication mode="Forms">

<forms loginUrl="Users.aspx" name="auth" protection="All" timeout="60" path="/" />

</authentication>

<forms>元素的属性介绍:

name:将来保存Cookie的名称。

loginUrl:网站的登录首面,当未通过身份验证去访问网站某页面时就会被自动转回所指定的页面(Users.aspx)。

protection:Cookie的保存模式,All代表保存时加密,传输中验证。

path:Cookie的保存路径。若path=”/” Cookie保存为administrator@localhost[1].txt,若path=”mygod” Cookie保存为administrator@mygod[1].txt

timeout:Cookie的有效期。单位是分钟

FormsAuthentication类:

RedirectFromLoginPage(string,bool):验证通过后网页转向用户要访问的网页去。

RedirectToLoginPage():将网页转向指定登录页面。

SignOut():移除用户身份验证的信息。

Authenticate(string ,string):对照配置文件中的验证凭据进行验证。返回bool型数据,代表用户是否登录成功。

SetAuthCookie(string,bool):为用户产生一个用户验证票据,并将用户资料记录Cookie。

HashPasswordForStoringInConfigFile(string ,passwordformat):将字符串按照指定的加密方式进行单向加密,返回加密后的字符串。

授权:

Asp.net2.0中的授权分两种:文件授权和URL授权。

文件授权:实际上是通过ACL来进行设置来访用户对网页的访问权限。这种方法对程序开发人员来说太笨拙。这里不多说了。

URL授权:将用户和角色对应至数据库中用户与角色,选择性地允许与拒绝特定用户或角色。

URL授权是由UrlAuthorizationModule来执行的。作为开发者只需要对Web.Config文件进行相关配置就可以了。如:

</system.web>

<authorization>

<deny users="bbb"></deny>

<deny roles="admin"></deny>

</authorization>

</system.web>

这样就可以拒绝bbb用户和所有的角色是admin的用户。

?-匿名用户

*-所有用户

需要说明的一点是,asp.net是按照文件夹进行授权的。要对不同的网页进行不同的授权的话,那你可以把文件分散到不同的文件夹中去,然后在不同的文件夹中建立不同的web.config文件,对该文件夹下的页面进行不同的授权。

转载于:https://www.cnblogs.com/30ErLi/archive/2010/09/17/1829051.html

asp.net2.0安全性(3)--验证与授权相关推荐

  1. asp.net2.0密码强度验证

    1.建立Default.aspx文件,代码如下: <%@ Page Language="C#" AutoEventWireup="true"  CodeF ...

  2. ASP.NET2.0小技巧--内部控件权限的实现

    谈<内业办公自动化>(可以到http://www.aspx-net.com/测试)的实现技巧之一:     在使用ASP.NET2.0的身份验证和授权时,有时候我们需要提供比页面更高一级的 ...

  3. VS2005+SQL2005 ASP.NET2.0数据库连接

                                              VS2005+SQL2005 ASP.NET2.0数据库连接 对于的新手来说,整个数据库连接不太容易,根据连接过程中 ...

  4. ASP.NET2.0雷霆之怒盗链者的祝福【月儿原创】

    ASP.NET2.0雷霆之怒盗链者的祝福 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.3.28 所谓盗链就是指其他网站把我们 ...

  5. 深度解析ASP.NET2.0中的Callback机制

    callback的一般使用方法还算简单,直接参照msdn的帮助和范例就足够了.但是想要真正用好.用精,或者想开发一些基于callback机制的WEB组件,那么,就要先深入了解callback的实现机制 ...

  6. Asp.net2.0实现Word转换Html,同时分享系列笑话

    前两天在园子里看到了BlackSoul 写的<asp.net将word转换为html保存 >的文章,觉得很实用,但是搭建项目时候缺不是那么回事儿,中间有很多问题,比如说word组建的引用. ...

  7. DotNetTextBox V3.0 所见即所得编辑器控件 For Asp.Net2.0(ver 3.0.7Beta) 增加多语言!

    英文名:DotNetTextBox V3.0 WYSWYG Web Control For Asp.Net2.0 中文名:DotNetTextBox V3.0 所见即所得编辑器控件 For Asp.N ...

  8. VS2005 ASP.NET2.0安装项目的制作(包括数据库创建、站点创建、IIS属性修改、Web.Config文件修改)

    站点: 如果新建默认的Web安装项目,那它将创建的默认网站下的一个虚拟应用程序目录而不是一个新的站点.故我们只有创建新的安装项目,而不是Web安装项目.然后通过安装类进行自定义操作,创建新站如下图: ...

  9. ASP.Net2.0小技巧 保持滚动条的位置 焦点移动到某个控件 $符号轻松的使用FindControl...

    您可能不知道的ASP.Net2.0小技巧 <!-- 页码和简介 --> 1.  在提交页面之后,保持滚动条的位置 可以在page指令上加上MaintainScrollPositionOnP ...

最新文章

  1. C# 学习笔记(8) 控件的跨线程访问
  2. Tableau系列之构建和浏览数据视图
  3. Ruby学习笔记_索引贴
  4. C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))
  5. linux下与windows下的换行符
  6. vuex的购物车效果 index.js
  7. 防止跨站攻击——CSRFToken
  8. PHP中使用 fsockopen curl 模拟异步处理
  9. JS修改链接地址实现页面动态跳转的方法
  10. Box plot (箱形图) 中 quartile (四分位数)原理,及python_matplotlib中Q1和Q3定义的不同
  11. 如何让机器产生意识之意识具象化
  12. 前端战五渣学JavaScript——深克隆(深拷贝)
  13. 中文分词之维特比算法详解
  14. 【云原生之Docker实战】使用docker部署DokuWiki知识库系统
  15. 将picpick汉化及矩形截屏
  16. Normalized Discounted Cumulative Gain
  17. ARM交叉编译工具链分类说明
  18. 电脑投屏到电视android,电脑怎么投屏到电视?看完这篇文章你就懂了
  19. 数字和字符的对照关系表(编码表)
  20. 运动手环SRRC认证办理

热门文章

  1. 说说JavaScriptCore
  2. MYSQL批量按条件更新不同的数据
  3. C++ 加载Live2D官方Cubism SDK for Native
  4. c语言作业集答案,C语言习题集及答案
  5. 图片宽度自适应浏览器宽度
  6. swoole 简单的聊天室
  7. adb 操作安卓模拟器--备忘
  8. str、tuple、dict之间的相互转换
  9. Ajax表单提交给C#后台选中的checkbox值
  10. 树网的核(codevs 1167)