• 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 
  • 相关阅读:
    LeetCode:Container With Most Water
    c#编写的基于Socket的异步通信系统
    关于Thread类中三个interrupt方法的研究与学习(转)
    使用svnkit 的相关实例及相关问题汇总
    创业早期,联合创始人如何避免窝里反?(转)
    程序员解决问题的60个策略(转)
    码农和程序员之间的5个关键差异(转)
    LayoutInflater的使用
    2014年中国95家企业入围世界500强,超日本
    How to get the source code of the chromium of the specified revision
  • 原文地址:https://www.cnblogs.com/shenfx318/p/623236.html
Copyright © 2020-2023  润新知