IIS 身份验证

许多分布式应用程序的重要部分是标识某个人(称为主体或客户端)并控制客户端对资源的访问能力。身份验证是验证客户端身份的行为。一般情况下,客户端必须提供某些证据,一般称为凭据,来证明其身份。通常,凭据包括用户名和密码对。Internet 信息服务 (IIS) 和 ASP.NET 都提供几种身份验证方案。有关更多信息,请参见 ASP.NET 结构。
IIS 提供多种身份验证方案:
匿名(默认情况下启用)
基本
摘要式
集成 Windows 身份验证(默认情况下启用)
客户证书映射
无论选择哪个方法,在验证客户端身份后,IIS 都会将安全标记传递给 ASP.NET。如果将 ASP.NET 配置为使用 Windows 身份验证并启用模拟,ASP.NET 将模拟此安全标记代表的用户。有关更多信息,请参见 ASP.NET 模拟。
匿名
匿名身份验证可使用户访问 Web 站点的公共区域,不提示用户输入用户名和密码。尽管作为身份验证方案列出,但因为不要求客户端提供任何凭据,所以它并不进行任何技术性的客户端身份验证。相反,IIS 使用特定用户帐户 (IUSR_machinename) 将存储好的凭据提供给 Windows。默认情况下,IIS 控制此帐户的密码。IIS 是否控制该密码会影响匿名用户的权限。当 IIS 控制该密码时,子身份验证 DLL (iissuba.dll) 使用网络登录验证用户身份。此 DLL 的功能是验证 IIS 提供的密码并通知 Windows 该密码有效,于是验证该客户端。然而,它并不真的向 Windows 提供密码。当 IIS 不控制密码时,IIS 调用 Windows 中的 LogonUser() API 并提供帐户名、密码和域名,以使用本地登录进行登录。登录后,IIS 缓存安全标记并模拟该帐户。本地登录可使匿名用户访问网络资源,而网络登录不可以。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 About Authentication(关于身份验证)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiabasc.htm)。
当启用匿名身份验证时,IIS 不使用其他任何身份验证方案,除非 NTFS 权限拒绝访问资源。
优点
提供最佳性能,这是因为匿名身份验证不需要任何系统开销。
不需要管理个人用户帐户。
如果 IIS 不控制密码,可以访问网络资源。
缺点
不能逐个对客户端进行身份验证。
如果 IIS 不控制密码,帐户必须有本地登录能力。
实现
默认情况下,IIS 启用匿名身份验证并使用 IIS 控制密码的 IUSR_machinename 用户帐户。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 Enabling and Configuring Authentication(启用和配置身份验证)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiauths.htm?id=76)。
使用 Web.config 文件配置 ASP.NET,指定无身份验证或 Windows 身份验证。有关更多信息,请参见 ASP.NET 身份验证。
<!-- Web.config file -->
<system.web>
   <authentication mode="Windows" />
</system.web>
基本
IIS 实现基本身份验证,基本身份验证是 HTTP 1.0 规范的一部分,它使用 Windows 用户帐户。当使用基本身份验证时,浏览器提示用户输入用户名和密码。然后此信息通过 HTTP 传递,在 HTTP 上使用 Base64 编码方式将其编码。尽管大多数 Web 服务器、代理服务器和 Web 浏览器支持基本身份验证,但基本身份验证还是有固有的不安全性。由于解码 Base64 编码数据很容易,因此基本身份验证实质上就是将密码作为纯文本发送。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 About Authentication(关于身份验证)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiabasc.htm)。
IIS 元数据库包含 LogonMethod 属性,该属性为明文登录(如基本身份验证)指定登录方法。默认情况下,基本身份验证要求 Windows 用户帐户具有 Web 服务器本地登录权限。如果使用默认配置,IIS 在登录过程中将凭据进行缓存,这将减缓登录过程。通过指定网络登录或网络明文登录,IIS 在登录时不缓存凭据,这样加快了登录过程。本地登录可使用户访问网络资源,而网络登录不可以。但是,明文登录网络可使用户访问网络资源。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 LogonMethod ( http://www.microsoft.com/windows2000/en/server/iis/htm/asp/apro1zms.htm)。
为了提高这种身份验证方案的安全性,可以将其与安全套接字层/传输层安全 (SSL/TLS) 支持联合使用以加密 HTTP 会话。但是,SSL/TLS 会影响性能,这是因为它在每次交换时都对数据进行加密和解密。TLS 是 Netscape 的 SSL 的 Internet 工程任务组 (IETF) 版本,有时也称作 SSL 3.1。有关更多信息,请参见 Internet 工程任务组 (IETF) Web 站点 ( http://www.ietf.org/rfc/rfc2246.txt) 上的规范 (RFC 2246)。
当与 Kerberos v5 身份验证一同使用时,IIS 可以在运行 Windows 2000 和更高版本的已得到信任可对其委托的计算机之间委托安全凭据。委托允许代表进行委托的用户对资源进行远程访问。
优点
由于它是 HTTP 1.0 规范的一部分,基本身份验证是得到最广泛支持的用户身份验证方案。
可以通过代理服务器验证身份。
可以跟踪个人用户。
如果用户帐户有 Web 服务器的本地登录权限,则可以访问网络资源。
可与 Kerberos 一起使用,启用对安全凭据的委托。
缺点
若不使用 SSL/TLS,本身具有不安全性。但 SSL/TLS 会影响性能。
要求为每个用户创建个人 Windows 帐户。
实现
若要实现基本身份验证,请在 IIS 内配置它,并确保用户在 Web 服务器上有“本地登录”权限。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 Enabling and Configuring Authentication(启用和配置身份验证)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiauths.htm?id=76)。
如果实现基本身份验证,还应使用 SSL/TLS。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 Setting up SSL on Your Server(在服务器上配置 SSL)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iisslsc.htm) 和知识库文章 Q298805:HOW TO: Enable SSL for All Customers Who Interact with Your Web Site(如何:为与 Web 站点交互的所有客户启用 SSL)( http://support.microsoft.com/support/kb/articles/Q298/8/05.asp)。
如果 ASP.NET 应用程序需要作为基本身份验证的已验证用户来运行,请使用下面的 Web.config 文件配置。有关更多信息,请参见将 IIS 身份验证用于 ASP.NET 模拟。
<!-- Web.config file -->
<system.web>
   <authentication mode="Windows" />
</system.web>
摘要式
简要身份验证克服了基本身份验证的主要弱点:以纯文本形式发送密码。简要身份验证是一种质询/响应机制,它在网上发送简要(又称为哈希)而非密码。简要是一个通过将某数学函数(称为哈希函数或简要算法)应用到任意数量的数据后获得的固定大小的结果。该固定大小取决于加密级别。例如,如果一个 128 位简要由 32 个 ASCII 字符组成,则一个 40 位简要将包含 10 个 ASCII 字符。当客户端试图访问要求简要身份验证的资源时,IIS 向该客户端发送一个质询,要求它创建一个简要并将其发送到服务器。客户端连接服务器和客户端都知道的密码和数据。然后客户端将一个简要算法(由服务器指定)应用到该组合数据。客户端将获得的简要发送到服务器作为对质询的响应。服务器利用从 Active Directory 获得的客户端密码副本,使用与客户端相同的过程创建简要。在 Active Directory 中使用可逆加密方法保存密码。如果服务器创建的简要与客户端创建的简要相匹配,则 IIS 验证该客户端的身份。IIS 使用子身份验证 DLL (iissuba.dll) 验证用户身份,同时登录网络。就其自身而言,简要身份验证只是基本身份验证的稍加改进。如果没有 SSL/TLS,攻击者可以记录客户端与服务器之间的通信。使用此信息,攻击者就可以重放该事务。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 About Authentication(关于身份验证)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiabasc.htm)。
优点
在网络上发送简要,而非密码。
与代理服务器和防火墙一起使用。
不因保护密码而要求使用 SSL/TLS。
缺点
不能委托安全凭据。
仅 Internet Explorer 5.0 及更高版本支持它。
受制于重放攻击,除非使用 SSL/TLS。
要求使用可逆加密方法在明文中储存密码。
要求为 Active Directory 中的每个用户创建域帐户。
实现
若要在 Windows 2000 中使用简要身份验证,服务器必须可以访问为简要身份验证而设置的 Active Directory 服务器。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 Enabling and Configuring Authentication(启用和配置身份验证)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiauths.htm?id=76) 和知识库文章 Q222028,Setting Up Digest Authentication for Use with Internet Information Services 5.0(设置与 Internet 信息服务 5.0 一起使用的简要身份验证)( http://support.microsoft.com/support/kb/articles/Q222/0/28.asp)。
注意   将 Active Directory 配置为使用可逆加密方法存储密码之后,所有用户必须更改其 Active Directory 密码以便以这种方式储存每个密码。
如果实现简要身份验证,也应使用 SSL/TLS 来阻止重放攻击。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 Setting up SSL on Your Server(在服务器上配置 SSL)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iisslsc.htm) 和知识库文章 Q298805:HOW TO: Enable SSL for All Customers Who Interact with Your Web Site(如何:为与 Web 站点交互的所有客户启用 SSL)( http://support.microsoft.com/support/kb/articles/Q298/8/05.asp)。
如果 ASP.NET 应用程序需要作为 IIS 简要身份验证已验证的用户来运行,请使用下列 Web.config 配置。有关更多信息,请参见 ASP.NET 身份验证。
<!-- Web.config file -->
<system.web>
   <authentication mode="Windows" />
</system.web>
有关简要身份验证的更多信息,请参见 Internet Engineering Task Force (IETF) Web 站点上的规范 (RFC 2069) ( http://www.ietf.org/rfc/rfc2069.txt)。
集成 Windows 身份验证
集成 Windows 身份验证(以前称为 NTLM 身份验证和 Windows NT 质询/响应身份验证)可以使用 NTLM 或 Kerberos V5 身份验证,并且只能与 Internet Explorer 2.0 及更高版本一起使用。
当 Internet Explorer 试图访问受保护的资源时,IIS 发送两个 WWW 身份验证头,Negotiate 和 NTLM。
如果 Internet Explorer 识别 Negotiate 头,它将选择 Negotiate 头,因为首先列出 Negotiate 头。当使用 Negotiate 时,浏览器将同时为 NTLM 和 Kerberos 返回信息。在服务器端,如果客户端(Internet Explorer 5.0 和更高版本)和服务器(IIS 5.0 和更高版本)都运行 Windows 2000 和更高版本,并且都是同一域或多个受信域的成员,则 IIS 将使用 Kerberos。否则,服务器将默认使用 NTLM。
如果 Internet Explorer 不能识别 Negotiate,它将使用 NTLM。
因此,所使用的机制由 Internet Explorer 与 IIS 之间的协商来决定。
当与 Kerberos v5 身份验证一同使用时,IIS 可以在运行 Windows 2000 和更高版本的受信任并为委托配置的计算机之间委托安全凭据。委托允许代表进行委托的用户对资源进行远程访问。
集成 Windows 身份验证是 Intranet 环境中最好的身份验证方案,在这种用户拥有 Windows 域帐户,尤其是在使用 Kerberos 的时候。集成 Windows 身份验证与简要身份验证一样,不在网络上传递用户密码,而是交换哈希值。有关更多信息,请参见 IIS documentation(IIS 文档)( http://www.microsoft.com/windows2000/en/server/iis/)。
优点
可与 Kerberos 一起使用,启用对安全凭据的委托。
使用 Windows 的 Intranet 环境的最佳方案。
缺点
不能通过代理穿过防火墙验证身份,除非通过 PPTP 连接使用它。
如果选择了 NTLM,则它不支持对其他服务器的委托。
仅 Internet Explorer 2.0 及更高版本支持它。
仅 IIS 5.0 和更高版本支持 Kerberos。
实现
若要实现 Kerberos 或 NTLM,请将 IIS 配置为使用集成 Windows 身份验证。如果需要支持不运行 Internet Explorer 的客户端,可能需要启用联合 NTLM 或 Kerberos 的基本身份验证。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 Enabling and Configuring Authentication(启用和配置身份验证)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiauths.htm?id=76)。
若要使用 Kerberos,需要考虑下列特定细节:
客户端和服务器计算机上必须运行 Windows 2000 或更高版本,它们必须在 Windows 2000 或更高版本的域中。
必须为委托启用客户端用户帐户。
必须为委托启用服务帐户。
必须为委托启用参与计算机。
如果 ASP.NET 应用程序需要作为使用集成 Windows 身份验证的 IIS 已验证的用户来运行,请使用下列 Web.config 配置。有关更多信息,请参见 ASP.NET 身份验证。
<!-- Web.config file -->
<system.web>
   <authentication mode="Windows" />
</system.web>
客户证书映射
证书是一个数字化签署的声明,它包括有关一个实体和实体公钥的信息,将这两种信息绑定在一起。名为证书颁发机构 (CA) 的受信任单位(或实体)在它验证一个实体后向其颁发一个证书。证书可以包括各种类型的数据。例如,一个 X.509 证书包含以下数据:证书格式、证书序列号、签署证书使用的算法、颁发证书的 CA 的名称、请求证书的实体的名称和公钥以及 CA 的签名。X.509 客户证书简化了大用户库的身份验证,因为它们不依赖于集中的帐户数据库。只需通过检查证书就可以验证该证书。有关更多信息,请参见 Microsoft Windows 2000 公钥基础结构。
操作系统(如 Windows)仍需要用户帐户这一概念。证书映射可使管理员将单个证书(一对一的映射)或多个证书(多对一)与用户帐户相关联。多对一映射使用规则定义映射的证书条件。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 Mapping Client Certificates to User Accounts(将客户证书映射到用户帐户)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iimapsc.htm)。
IIS 使用 SSL/TLS 验证服务器,并提供一个加密的 HTTP 会话。IIS 也可以通过要求客户端提供证书来使用 SSL/TLS 验证客户端。当要求提供客户证书时,服务器为客户端提供一个服务器信任的证书颁发机构的列表。该列表从服务器的证书信任列表 (CTL) 导出的。如果客户端具有 CTL 中的证书颁发机构颁发的证书,则它将该证书副本发送到服务器以进行验证。如果证书有效,则 IIS 验证映射到该证书的用户的身份。因此,应将 IIS 上的 CTL 限制为您认为真正值得相信的那些证书颁发机构。有关更多信息,请参见 IIS documentation(IIS 文档)( http://www.microsoft.com/windows2000/en/server/iis/)。
优点
包括强身份验证方案。
提供一个服务器和客户端之间的双向身份验证。
可以访问网络资源。
缺点
不能委托安全凭据。
不是在所有的浏览器上都起作用。
需要 SSL/TLS。
配置很麻烦,但是,多对一比一对一简单。
实现
必须为证书身份验证配置 IIS。有关更多信息,请参见 IIS Documentation(IIS 文档)中的 Enabling and Configuring Authentication(启用和配置身份验证)( http://www.microsoft.com/windows2000/en/server/iis/htm/core/iiauths.htm?id=76)。
需要 Active Directory 为其颁发的证书设置一对一的映射。有关更多信息,请参见 Windows 2000 Web 站点中的“Step-by-Step Guide to Mapping Certificates to User Accounts”(将证书映射到用户帐户的逐步骤指南)( http://www.microsoft.com/windows2000/techinfo/planning/security/mappingcerts.asp)。
如果 ASP.NET 应用程序需要作为使用证书身份验证的 IIS 的已验证用户来运行,请使用下列 Web.config 配置。有关更多信息,请参见 ASP.NET 身份验证。
<!-- Web.config file -->
<system.web>
   <authentication mode="Windows" />
</system.web>

转载于:https://www.cnblogs.com/fanrsh/archive/2006/06/08/420776.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值