摘 要:本文主要介绍了基于.NET的WEB认证种机制:Windows身份验证、Forms身份验证和Passport身份验证提供程序。介绍了各种机制使用的环境、实现技术并分别举例予以实现。
关键词:NET平台;WEB认证
1 引言
Web安全是一个极其复杂的主题,经常困扰着开发人员和最终的用户,但在当前的时代背景下这又是一个必须解决的问题。首先要解决的是“我是谁”的问题,即:Web的认证(针对不同的用户进行权限分配工作)。然后解决的是“我能干什么”的问题。即:Web的授权(用户登录后根据不同的权限访问系统不同的资源和实现不同的功能)。本文主要介绍在Net平台下Web认证的三种实现方式:Windows身份验证、Forms身份验证提供程序和Passport身份验证提供程序。
2 基本配置
ASP.NET 2.0 提供了三种不同的认证机制。如表2-1所示:
2.1 在Web.config中配置认证信息
在Web.config中配置认证信息。在应用中启动认证后,在Web.config文件的
其中,mode是必选的属性,它指定应用程序的默认身份验证模式,可选值为Windows、Forms、Passport或None,默认值为Windows。
3 Web应用中认证机制
3.1 Windows认证机制
如果应用程序使用Active Directory用户存储,则应该使用集成Windows身份认证,这时只需要一个域账号,用户既可以访问Web应用完成他们的业务又可以访问Active Directory中相关的资源。
在使用Windows认证时,IIS首先向操作系统或者Active Directory请求身份认证,通过后,IIS将向ASP.NET传递代表经过身份验证的用户或匿名用户账户的令牌。该令牌在一个包含在IPrincipal对象中的IIdentity对象中维护,IPrincipal对象进而附加到当前Web请求线程。可以通过HttpContext.User属性来访问IPrincipal和IIdentity对象。
在配置文件中,如果存在如下的配置,则表示启用了Windows认证。
启用Windows认证实质上就是在ASP.NET的处理管道中启用了WindowsAuthenticationModule,这个类负责创建WindowsPrincipal和WindowsIdentify对象来表示经过身份验证的用户,并且负责将这些对象附加到当前Web请求。
3.2 Form认证机制
窗体身份验证使用户登录到站点时创建的身份验证票,然后在整个站点内跟踪该用户。窗体身份验证票通常包含在一个Cookie中。然而,ASP.NET2.0版支持无Cookie窗体身份验证,结果是将票证传入查询字符串中。
如果一个用户请求一个需要经过身份验证的访问页,且该用户以前没有登录过该站点,则该用户重定向到一个配置好的登录页,该登录页提示用户提供凭据(通常是用户名和密码)。然后将这些凭据传递给服务器并针对用户存储(比如数据库中的表)进行验证。在ASP.NET 2.0中,用户存储访问可以由成员身份提供程序处理。对用户的身份进行验证后,用户重定向到原来的请求页面。
3.3 Passport身份验证
Passport认证是一种Microsoft提供的集中认证服务。用户可以使用Microsoft .NET Passport来访问服务,例如Microsoft Hotmail和Microsoft Windows Messager/MSN Messager。如果你用Passport服务注册了自己的站点,用户既可以使用相同的Passport来访问你的站点,他们不需要记住不同系列的凭据。要使用Passport认证,必须完成下列步骤:
(1)获取.NET Passport software development kit(SDK)
(2)在Web.Config文件中按如下代码配置Passport认证:
4 总结
本文首先介绍了Web应用的各种场景,然后主要介绍了基于.NET的WEB认证和授权三种机制:Windows身份验证、Forms身份验证和Passport身份验证。
参考文献:
姬宁,林晓,普杰信,一种基于SIP安全认证机制的研究,《计算机应用》2007.3