IIS中的身份验证

本文摘自MSDN:
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vsent7/html/vxconiisauthentication.asp 
 

身份验证与凭据

许多分布式应用程序的重要部分是标识某个人(称为主体或客户端)并控制客户端对资源的访问能力。身份验证是验证客户端身份的行为。一般情况下,客户端必须提供某些证据,一般称为凭据,来证明其身份。通常,凭据包括用户名和密码对。Internet 信息服务 (IIS) 和 ASP.NET 都提供几种身份验证方案。  

匿名

匿名身份验证可使用户访问 Web 站点的公共区域,不提示用户输入用户名和密码。IIS 使用特定用户帐户 (IUSR_machinename) 将存储好的凭据提供给 Windows。默认情况下,IIS 控制此帐户的密码。IIS 是否控制该密码会影响匿名用户的权限。

优点

  • 提供最佳性能,这是因为匿名身份验证不需要任何系统开销。
  • 不需要管理个人用户帐户。
  • 如果 IIS 不控制密码,可以访问网络资源。

缺点

不能逐个对客户端进行身份验证。

  • 如果 IIS 不控制密码,帐户必须有本地登录能力。
  • ASP.NET Web.Config
  • 使用 Web.config 文件配置 ASP.NET,指定无身份验证或 Windows 身份验证。  

集成 Windows 身份验证

集成 Windows 身份验证可以使用 NTLM 或 Kerberos V5 身份验证,当 Internet Explorer 试图访问受保护的资源时,IIS 发送两个 WWW 身份验证头,Negotiate 和 NTLM。如果 Internet Explorer 不能识别 Negotiate,它将使用 NTLM。 因此,所使用的机制由 Internet Explorer 与 IIS 之间的协商来决定。

集成 Windows 身份验证是 Intranet 环境中最好的身份验证方案,在这种用户拥有 Windows 域帐户,尤其是在使用 Kerberos 的时候。集成 Windows 身份验证与简要身份验证一样,不在网络上传递用户密码,而是交换哈希值。

优点

  • 可与 Kerberos 一起使用,启用对安全凭据的委托。
  • 使用 Windows 的 Intranet 环境的最佳方案。

缺点

  • 不能通过代理穿过防火墙验证身份,除非通过 PPTP 连接使用它。
  • 如果选择了 NTLM,则它不支持对其他服务器的委托。
  • 仅 Internet Explorer 2.0 及更高版本支持它。
  • 仅 IIS 5.0 和更高版本支持 Kerberos。  

基本

IIS 实现基本身份验证,基本身份验证是 HTTP 1.0 规范的一部分,它使用 Windows 用户帐户。当使用基本身份验证时,浏览器提示用户输入用户名和密码。然后此信息通过 HTTP 传递,在 HTTP 上使用 Base64 编码方式将其编码。基本身份验证还是有固有的不安全性。由于解码 Base64 编码数据很容易,因此基本身份验证实质上就是将密码作为纯文本发送。默认情况下,基本身份验证要求 Windows 用户帐户具有 Web 服务器本地登录权限。

优点

  • 由于它是 HTTP 1.0 规范的一部分,基本身份验证是得到最广泛支持的用户身份验证方案。
  • 可以通过代理服务器验证身份。
  • 可以跟踪个人用户。
  • 如果用户帐户有 Web 服务器的本地登录权限,则可以访问网络资源。
  • 可与 Kerberos 一起使用,启用对安全凭据的委托。

缺点

  • 若不使用 SSL/TLS,本身具有不安全性。但 SSL/TLS 会影响性能。
  • 要求为每个用户创建个人 Windows 帐户。  

摘要式

简要身份验证克服了基本身份验证的主要弱点:以纯文本形式发送密码。简要身份验证是一种质询/响应机制,它在网上发送简要(又称为哈希)而非密码。当客户端试图访问要求简要身份验证的资源时,IIS 向该客户端发送一个质询,要求它创建一个简要并将其发送到服务器。客户端连接服务器和客户端都知道的密码和数据。然后客户端将一个简要算法(由服务器指定)应用到该组合数据。客户端将获得的简要发送到服务器作为对质询的响应。服务器利用从 Active Directory 获得的客户端密码副本,使用与客户端相同的过程创建简要。在 Active Directory 中使用可逆加密方法保存密码。如果服务器创建的简要与客户端创建的简要相匹配,则 IIS 验证该客户端的身份。

优点

  • 在网络上发送简要,而非密码。
  • 与代理服务器和防火墙一起使用。
  • 不因保护密码而要求使用 SSL/TLS。

缺点

  • 不能委托安全凭据。
  • 仅 Internet Explorer 5.0 及更高版本支持它。
  • 受制于重放攻击,除非使用 SSL/TLS。
  • 要求使用可逆加密方法在明文中储存密码。
  • 要求为 Active Directory 中的每个用户创建域帐户。  

以上几种身份验证方式对应的ASP.NET Web.Config为

1 <system.web>
2    <authentication mode="Windows" />
3 </system.web>4 

posted on 2007-01-17 23:22  shenfx  阅读(2457)  评论(0编辑  收藏  举报

导航