Web网站身份验证简介
身份验证是验证客户端访问Web网站身份的行为。一般情况下,客户端端必须提供某些证据,一般称为凭据,来证明其身份。
通常,凭据包括用户名和密码,Internet信息服务(IIS)和ASP.NET都提供如下几种身份验证方案。
1、匿名身份验证
匿名身份验证可使用户访问Web站点的公共区域,不提示用户输入用户名和密码。iis使用特定用户账户(IUSR_计算机名)将存储好的凭据提供给Windows。默认情况下,IIS控制此账户的密码。
2.集成Windows身份验证
集成windows身份验证可使用NTLM或Kerberos V5身份验证。当Intemet Explorer试图访问受保护的资源时,IIS发送Negotiate和NTLM两个WWW身份验证头;如果Intemet Explorer不能识别Negotiate,将使用NrLM;所使用的机制由Intemet Explorer与IIS之间协商决定。
集成windows身份验证是Internet环境中最好的身份验证方案,在这种方案下用户拥有windows域账户。集成Windows身份验证与简要身份验证一样,不在网络上传递用户密码,而是变换哈希值。
3.基本身份验证
IIS实现基本身份验证。基本身份验证是HTTP I.O规范的一部分,它使用Windows用户账户。使用基本身份验证时,浏览器提示用户输入用户名和密码。然后此信息通过HTTP传递,在HTTP上使用Base64编码方式将其编码。基本身份验证还是有固有的不安全性。由于解码Base64编码数据很容易,因此基本身份验证实质上就是将密码作为纯文本发送。默认情况下,基本身份验证要求windows用户账户具有Web服务器本地登录权限。
4、摘要式身份验证
摘要式身份验证克服了基本身份验证以纯文本形式发送密码的主要弱点。摘要身份验证是一种质询/响应机制,它在网上发送摘要(又称为哈希)而非密码。当客户端试图访问要求摘要身份验证的资源时,IIs向该客户端发送一个质询,要求它创建一个摘要并将其发送到服务器。客户端连接服务器和客户端都知道的密码和数据,然后将一个摘要算法(由服务器指定)应用到该组合数据。
客户端将获得的摘要发送到服务器作为对质询的响应。服务器利用从Active Directory获得的客户端密码副本,使用与客户端相同的过程创建摘要。在Active Directory中使用可逆加密方法保存密码。如果服务器创建的摘要与客户端创建的摘要相匹配,则IIS验证该客户端的身份。
5.高级摘要式身份验证
高级摘要式身份验证是将用户凭据作为MD5哈希存储在域控制器中。因为将凭据作为MD5哈希存储在Active Directory中,所以访问域控制器的用户根本无法发现用户密码,甚至域管理员也不能发现该密码。在Web分布式创作和版本控制(WebDAV)目录中可以使用高级摘要式身份验证。在IIS 6.0中,高级摘要式身份验证优于摘要式身份验证,但仍然可以使用摘要式身份验证。
因为高级摘要式身份验证依赖于HTTP1.1协议,所以并非所有的浏览器均支持这种验证。如果与HTTP1.1不兼容的浏览器从使用高级摘要式身份验证的服务器请求文件,则该服务器会要求客户端提供高级摘要式身份验证凭据;与HTTP1.1不兼容的客户端拒绝该请求,因为客户端不支持高级摘要式身份验证。
6、证书身份验证
可以对两种类型的验证使用Web服务器的安全套接字层(SSL)安全功能。可以使用“服务器证书,允许用户在传送个人信息(如信用卡号码)之前进行网站验证。同样,也可以使用“客
户端证书”对请求网站信息的用户进行验证。
通过检查登录过程中用户Web浏览器提交的加密数字标识的内容进行SSL验证。服务器证书通常包含关于公司以及发证机构的信息。客户端证书通常包含关于用户和发证机构的识别信息。
因为访问文件等资源时需要使用Windows用户账户,所以可以将客户端证书映射到web服务器上的windows用户账户。创建并启用证书映射后,每次用户使用客户端证书登录时,windows服务器就会自动将用户与相应的Windows用户账户关联起来。这样,就可以自动验证使Windows证书登录的用户,而不必使用其他验证方法,如基本身份验证、摘要式身份验证或集成windows身份验证。
可以将一份客户端证书映射到一个Windows用户账户,或者将多个客户端证书映射到一个账户。例如,在服务器上有几个不同的部门或企业并且它们都有自己的网站,则可以使用多对一映射将每个部门或公司的所有客户端证书映射到各自的网站。达样,每个站点仅对自己的客户提供访问。
7、.NET Passport 身份验证