ASP.NET 安全模式
根据所请求资源的类型 ,IIS能够自己处理请求,也可以自己不处理请求。如果资源请求一个ASPX页面,则IIS将请求经过身份验证用户(或匿名用户)的安全令牌一起传递给ASP.NET。接下来要发生的取决于ASP.NET的配置。
ASP.NET支持3种授权方法:Windows,Passport和From。还有第四种可能的办法是None。表示ASP.NET自己根本不执行身份验证,完全依赖IIS身份验证。在这种情况下,匿名用户可以使用默认的ASP.NET账户访问资源。
1.Windows身份验证
基于Windows的身份验证在ASP.NET应用程序所在的Windows服务器和客户机之间处理。在基于Windows的身份验证模型中,
请求直接发送给IIS,进行验证过程。这种类型的身份验证在内联网环境中非常有用。在该环境下,可以让服务器处理这个验证过程,尤其是用户已登录到网络上时,只需获取并利用已有的证书完成验证过程。
IIS首先从域登录中获得用户证书。如果这个过程失败,IIS就显示一个弹出对话框,用户可以在其中输入或重新输入登录信息。要让ASP.NET应用程序使用基于Windows的身份验证,首先要创建一些用户和组。
2.Passport身份验证
验证终端用户的另一种方法是使用Microsoft的Passport标识系统。有Psaaport账户的用户可以有一个签名解决办法,也就是说,他只需这些证书就可以登录到Internet的站点或其他支持Passport的站点和应用程序上。
应用程序支持Passport身份验证时,请求会被重定向到Microsoft Passport站点上,在该站点上,用户可以输入证书。如果验证成功,用户就可以获得授权,请求被重定向回应用程序
护照身份验证是一个Microsoft集中式身份验证服务,护照提供一种对参与某种计划的所有站点的用户进行身份验证的方法。用户只需要登录一次,如果成功通过身份验证,就可以*遍历所有的成员站点。除了一次性登录服务外,护照还为成员站点提供了核心的配置文件服务。
登录服务器使用窗体信息来验证用户身份,如果成功,则创建一个Passport票据。接着,用户被重定向到原始的URL,并且该票据被加密后通过查询字符串进行传递。最后,浏览器按照重定向指令,再次请求原始的Passport保护的资源,然而,这时该请求包含一个有效的票据,使用PassportAuthenticationModule将允许请求通过。
3.窗体身份验证
Windows和Passport身份验证对于现实的Internet应用程序几乎都不适用。Windows身份验证是不切实际的,因为Web应用程序用户必须具有该应用程序的域中的Windows账户。对于Passport身份验证也可以得出相同的结论,因为Passport并不是免费的,而且安全性也有待考验。
因此,世纪的Web开发人员理想的身份验证机制是什么呢?Web编程最佳实践建议我们把一些比较样板化的代码置于每个非公共页面上,并把用户重定向到一个登陆页面。在该登录页面上,提示用户输入凭据,如果成功的通过了身份验证,则把它重定向到最初的请求页面。
窗体身份验证仅仅是ASP.NET内置的基础结构,用以实现上述登录模式。例如:依靠一个用户账户数据库,窗体身份验证是理想的选择。通过窗体身份验证实现的登录模式看上去与Windows和Passport身份验证没什么根本的区别,关键区别是,使用窗体身份验证时,一切都在应用程序的严格控制下发生。
通过调整应用程序的根目录下的Web.Config文件,可以为窗体身份验证建立一个ASP.NET应用程序。
示例:
<system.web>
<authentication mode="Froms">
<froms name=".ASPXAUTH"loginUrl="Login.aspx" path="/"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
<authentication>节指示用户定义的登录窗体的URL。ASP.NET仅向<authorization>节被显示拒绝访问的用户显示该窗体。符号“?”表示任何匿名的,胃镜身份验证的用户。
欢迎提出建议指导