Web 身份验证工作原理
Web 身份验证是 Web 浏览器和 Web 服务器之间的通信,涉及少量超文本传输协议 (HTTP) 标头和错误消息。
通信流程如下所示:
-
- Web 浏览器发出请求,例如 HTTP-GET。
- Web 服务器执行身份验证检查。如果因需要进行身份验证而不成功,服务器会返回与以下类似的错误消息:
您没有权限查看此网页
您无权使用您提供的凭据查看此目录或页。 - Web 浏览器使用服务器的响应来构建包含身份验证信息的新请求。
- Web 服务器执行身份验证检查。如果检查成功,Web 服务器就将最初请求的数据发回 Web 浏览器。
身份验证方法
注意:使用下列某些身份验证方法时,您必须使用已用 NTFS 文件系统格式化的驱动器,因为 NTFS 格式化的驱动器的安全级别最高。
IIS 支持以下几种 Web 身份验证方法。
匿名身份验证
IIS 创建 IUSR_ComputerName 帐户(其中 ComputerName 是正在运行 IIS 的服务器的名称),用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。您可以将匿名用户访问重置为使用任何有效的 Windows 帐户。
注意:您可以为不同的网站、虚拟目录、物理目录和文件建立不同的匿名帐户。
如果基于 Windows Server 2003 的计算机是独立服务器,则 IUSR_ComputerName 帐户位于本地服务器上。如果该服务器是域控制器,则 IUSR_ComputerName 帐户是针对该域定义的。
基本身份验证
使用基本身份验证可限制对 NTFS 格式的 Web 服务器上文件的访问。使用基本身份验证,用户必须输入凭据,而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。
要使用基本身份验证,请授予每个用户进行本地登录的权限,为了使管理更加容易,请将每个用户都添加到可以访问所需文件的组中。
注意:因为用户凭据是使用 Base64 编码技术编码的,但它们在通过网络传输时不经过加密,所以基本身份验证被认为是一种不安全的身份验证方式。
Windows 集成身份验证
Windows 集成身份验证比基本身份验证安全,而且在用户具有 Windows 域帐户的内部网环境中能很好地发挥作用。在集成 Windows 身份验证中,浏览器尝试使用当前用户在域登录过程中使用的凭据,如果此尝试失败,就会提示该用户输入用户名和密码。如果您使用集成 Windows 身份验证,则用户的密码将不传送到服务器。如果用户作为域用户登录到本地计算机,则此用户在访问该域中的网络计算机时不必再次进行身份验证。请注意,如果您使用的是 Windows 集成身份验证,则必须使用 Microsoft Internet Explorer 2.0 或更高版本作为 Web 浏览器。
注意:您不能通过代理服务器使用集成 Windows 身份验证。
摘要式身份验证
摘要式身份验证克服了基本身份验证的许多缺点。在使用摘要式身份验证时,密码不是以明文形式发送的。另外,您可以通过代理服务器使用摘要式身份验证。摘要式身份验证使用一种质询/响应机制(集成 Windows 身份验证使用的机制),其中的密码是以加密形式发送的。要使用摘要式身份验证,请注意下列要求:
- 用户和 IIS 服务器必须是同一个域的成员或被同一个域信任。
用户必须有一个存储在域控制器上 Active Directory 中的有效 Windows 用户帐户。
该域必须使用 Microsoft Windows 2000 或更高版本的域控制器。
必须将 IISSuba.dll 文件安装到域控制器上。此文件会在 Windows 2000 或 Windows Server 2003 的安装过程中自动复制。
必须将所有用户帐户配置为选择“使用可逆的加密保存密码”帐户选项。要选择此帐户选项,必须重置或重新输入密码。
注意:如果您使用的是摘要式身份验证,则必须使用 Microsoft Internet Explorer 5.0 或更高版本作为您的 Web 浏览器。
.NET Passport 身份验证
Microsoft .NET Passport 是一项用户身份验证服务,它允许单一签入安全性,可使用户在访问启用了 .NET Passport 的网站和服务时更加安全。启用了 .NET Passport 的站点依靠 .NET Passport 中央服务器来对用户进行身份验证。但是,该中央服务器不会授权或拒绝特定用户对各个启用了 .NET Passport 的站点进行访问。控制用户的权限由网站负责。选择此选项时,对 IIS 的请求必须在查询字符串或 Cookie 中包含有效的 .NET Passport 凭据。如果 IIS 不检测 .NET Passport 凭据,这些请求就会被重定向到 .NET Passport 登录页。
客户证书映射
客户证书映射是一种在证书和用户帐户之间创建映射的方法。在此模型中,用户提供一个证书,系统检查此映射以确定应登录到哪个用户帐户。您可以使用以下两种方法之一将证书映射到 Windows 用户帐户:
- 通过使用 Active Directory。
- 或者 -
通过使用 IIS 中定义的规则。
有关如何将客户证书映射到用户帐户的其他信息,请在 IIS 文档中搜索“客户证书映射”。如果安装了 IIS,则可以通过下列方式之一访问帮助文件:
- 右键单击 Internet 服务管理器中的任一节点,然后单击“帮助”。
- 或者 -
启动 Windows 资源管理器,找到 hard disk:\Windows\Help 文件夹,然后打开 Lismmc.chm。
您可以配置各种身份验证方法,以便控制对 IIS 服务器中以下项目的访问:
- IIS 服务器上托管的所有 Web 内容。
IIS 服务器上托管的各个网站。
网站中的各个虚拟目录或物理目录。
网站中的各个网页或文件。
如何配置 IIS 网站身份验证
- 使用管理帐户登录到 Web 服务器。
- 启动 IIS 管理器,或者打开 IIS 管理单元。
- 展开“Server_name”,其中 Server_name 是服务器的名称,然后展开“网站”。使用下列方法之一(视情况而定),然后单击“属性”:
-
- 要为 IIS 服务器上托管的所有 Web 内容配置身份验证,请右键单击“网站”。
- 要为单个网站配置身份验证,请右键单击所需的网站。
- 要为网站中的虚拟目录或物理目录配置身份验证,请单击目标网站,然后右键单击所需目录,如“_vti_pvt”。
- 要为网站中的单个网页或文件配置身份验证,请单击所需的网站,单击包含所需的文件或网页的文件夹,然后右键单击所需的文件或网页。
- 在“ItemName 属性”对话框中(其中 ItemName 是所选项目的名称),单击“目录安全性”或“文件安全性”选项卡(根据需要)。
- 在“匿名访问和身份验证控制”下,单击“编辑”。
- 单击以选中“匿名访问”复选框来启用匿名访问。要关闭匿名访问,请单击以清除此复选框。
注意:如果关闭匿名访问,您就必须配置某种其他形式的身份验证访问。
要更改用于匿名访问此资源的帐户,请单击“浏览”,单击要使用的用户帐户,然后单击“确定”。 - 在“身份验证的访问”下,如果要使用集成 Windows 身份验证,请单击以选中“Windows 集成身份验证”复选框。
注意:此身份验证方法以前称为 Microsoft Windows NT 质询/响应或 NT LAN 管理员 (NTLM)。 - 如果要使用摘要式身份验证,请单击以选中“Windows 域服务器的摘要式身份验证”复选框。在收到以下消息时,单击“是”:
注意:您必须将用户帐户配置为选中“使用可逆的加密保存密码”帐户选项。如果要使用基本身份验证,请单击以选中“基本身份验证(以明文形式发送密码)”复选框。在收到以下消息时,单击“是”: 在“领域”框中键入领域名。 -
- 要指定用来对使用基本身份验证的用户进行身份验证的域,请在“默认域”框中键入所需的域。
- 此时您还可以在“领域”框中输入一个值。
- 如果要使用 .NET Passport 身份验证,请单击以选中“.NET Passport 身份验证”复选框。
注意:选择此选项后,其他身份验证方法将不可用。单击“确定”,然后在“Item Name 属性”对话框中,单击“确定”。如果“继承覆盖”对话框打开,请按下列步骤操作: -
- 单击“全选”,以便将新的身份验证设置应用到所更改的项目内的所有文件或文件夹。
- 单击“确定”。
- 退出 IIS 管理器或者关闭 IIS 管理单元。