[本周]如约而至;时间是争取来的,这回的[本周]是把若干零碎的时间利用起来成文的,完成对Asp.net身份验证、访问授权等内容的梳理,可能漏掉的东西会比较多,漏掉的还是希望大家来补充。顺便说一下上次[本周]Ajax 那点事 题目我认为很平实很低调了,没料到还是被批评了,这回考虑一下用了一个白开水一样的题目,没有问题了吧?言归正传……
观其大略:
1. Asp.net是依存于IIS的一个服务,说到Asp.net的安全相关的话题当然要有一个整体上的思路:IIS接收—》IIS验证—》IIS授权---》ASP.net验证---》Asp.net授权---》资源返回给用户
IIS从网络上接收到一个HTTP WEB请求可以使用SSL技术来保证服务器的身份,此外SSL也可以提供一个安全通道来保护客户端和服务器端的机密数据的传送。IIS使用基本 摘要式 或者其它的方式验证用户,如果网站中的大部分内容不需要验证就可以设定为匿名验证。验证之后是授权,通过授权IIS来允许或者禁止用户访问某资源。IIS可以使用ACL定义的NTFS权限或者针对IP地址的客户端授权。
IIS把Windows存取令牌传送到Asp.net,如果IIS使用的是匿名验证则为匿名Internet使用者的存取令牌(IUSER_MYMACHINE)。 ASP.net验证访问者(有三种方式)。Asp.net授权所需要的资源或者操作(有两种授权方法)。
Asp.net中程序的代码使用特别的身份来存取本机或者远程资源。
2. 身份验证:身份验证就是一个解决谁有权力进入系统的问题,通常的做法就是跟系统维护的用户名单进行核对,这样转化为一个实际的技术问题:如果有效的判断一个用户是不是系统的有效用户。这个过程就是—Authentication(身份验证)
专业说法:接收用户凭据,并根据指定的颁发机构来验证凭据的过程成为身份验证
3. Asp.net 提供三种身份验证方式:Windows验证 、Forms验证 、Passport验证
身份验证的使用是通过配置Web.config文件的< Authentication >配置节来实现的。
4. 授权:授权就是确认用户拥有足够的权限来访问请求的资源
5. Asp.net提供两类授权服务:文件授权服务 、URL授权服务
说点细节
1. < Authentication >配置节mode可用的参数:None Windows Forms Passport
2. Windows:IIS根据程序的设置执行身份的验证(基本 简要 或者集成Windows)
注意使用这种验证方式IIS中必须要禁用匿名访问。
3. Windows验证适用于受控环境中,比如企业的Intranet
4. Foms这种验证使用Cookie保存用户凭证,并将未将验证的用户重定向到登录页。通常这是的IIS配置为匿名访问
5. Forms适合部署于互联网的网站应用
6. Passport验证是通过微软的集中身份验证服务执行的,它为成员站点提供单点登录和配置文件服务
7. Passport适用于跨站点应用,一旦用户注销所有的护照信息就会清除,可以在公共场所使用它。
8. ACL面向的是文件,IIS提供通过验证的用户,通过比较ACL调用标记完成授权
9. URL授权检查的根据是URL本身而不是URL对应的文件,URL授权可以是应用程序像基于窗体的身份验证或者Passport的身份集成验证,因为这些验证中的用户和计算机或者域中的账户并不对应。还控制对虚拟资源的访问。
10. URL授权的配置:授权指令:allow deny 对应操作对象是roles users 还可以使用Verb属性区别不同的HTTP行为(POST /GET)
11. 通常情况下用户访问一个网站都是使用匿名访问,匿名访问的用户都会转化为操作系统上的一个帐号来访问服务器
<authentication mode=”windows”>
<identity impersonate=”true”>
12. Windows验证用户通过了验证之后,Asp.net会触发Global.asax文件中的WindowsAuthentication_OnAuthenticate事件,可以在这里添加代码把用户信息附加到请求上。
13. Passport验证的问题是有多少网站愿意把自己的用户数据放在微软的数据库中?
14. Asp.net使用基于角色的安全:把用户映射到一个角色组里面,这个角色组对应一定的权限,这样就实现了对一个群体的权限管理。所以角色应该是对一组具有相同权限用户的抽象。
上面所说的都是可以应用于实践的,问题集中在web.config的配置,和一些初始化操作,大家和容易找到相关内容,我还是提供一个纲要,呵呵;夜深了,睡了,晚安!
顺便问一句:爱要怎么说出口?
坚强2002
2007年8月5日夜