IIS 提供了多种身份验证方式,最常用和最基本的是 “基本身份验证”“Windows 身份验证”,我会重点讲解这两种,并提及其他方式。

iis 网站 用户名 密码
(图片来源网络,侵删)

核心概念:身份验证 vs. 授权

在开始之前,请理解两个关键概念:

  1. 身份验证:回答 “你是谁?” 这个问题,这是用户向服务器证明自己身份的过程,用户输入用户名和密码。
  2. 授权:回答 “你被允许做什么?” 这个问题,在服务器确认用户身份后,会根据用户身份决定其是否有权访问某个资源(例如某个文件夹或页面)。

我们的操作流程是:先启用身份验证方式,然后配置用户账户,最后授权这些用户访问特定网站或目录


基本身份验证

这是最常见的方法,适用于任何类型的用户账户(包括本地计算机账户和域账户)。

特点:

iis 网站 用户名 密码
(图片来源网络,侵删)
  • 兼容性好:几乎所有的浏览器都支持。
  • 安全性较低:用户名和密码在传输时是经过 Base64 编码的,不是加密的,如果网络不安全(如 HTTP 协议),很容易被窃取。强烈建议在使用基本身份验证时,网站必须配置为使用 HTTPS (SSL/TLS 加密)

操作步骤:

步骤 1:安装基本身份验证功能

如果你的 IIS 管理器中没有这个选项,需要先安装它。

  1. 打开 服务器管理器
  2. 点击 “管理” -> “添加角色和功能”
  3. 进入 “功能” 页面,向下滚动,找到并勾选 “IIS 管理器工具”
  4. 在展开的列表中,确保勾选了 “基本身份验证”
  5. 点击 “安装”

步骤 2:为网站或虚拟目录启用基本身份验证

  1. 打开 IIS 管理器
  2. 在左侧的“连接”窗格中,选择你想要保护的网站、应用程序或虚拟目录
  3. 在中间的“功能视图”中,双击 “身份验证” 图标。
  4. 在右侧,你会看到多种身份验证方式。禁用你不需要的(如果只允许基本身份验证,请禁用匿名身份验证、Windows 身份验证等)。
  5. 启用 “基本身份验证”

步骤 3:创建用户账户

你需要一个有效的用户账户来登录,你可以使用本地计算机的用户账户,也可以使用域账户。

使用本地计算机账户(推荐用于独立服务器):

  1. 打开 “服务器管理器” -> “工具” -> “计算机管理”
  2. 在左侧,展开 “本地用户和组” -> “用户”
  3. 在右侧窗格中,右键单击,选择 “新用户”
  4. 填写用户名、密码等信息,取消勾选“用户下次登录时须更改密码”,勾选“密码永不过期”(为了方便管理),然后点击 “创建”
  5. 记下这个用户名和密码。

步骤 4:授权用户访问

你需要告诉 IIS,哪些用户被允许访问这个网站/目录。

  1. 在 IIS 管理器中,再次选中你的网站、应用程序或虚拟目录
  2. 在“功能视图”中,双击 “授权规则”
  3. 在右侧,点击 “添加允许规则...”
  4. 操作:选择 “特定用户”
  5. 用户:点击右侧的“...”按钮,选择你刚刚创建的用户,或者直接输入 计算机名\用户名WEB-SERVER01\myadmin)。
  6. 权限:勾选你希望授予的权限,通常是 “读取”“执行”
  7. 点击 “确定”

完成! 当有人访问你的网站时,浏览器会弹出一个登录窗口,要求输入用户名和密码。


Windows 身份验证

这种方法使用 Windows 内置的用户账户进行验证,安全性更高,因为它与 Windows 的安全系统集成。

特点:

  • 安全性高:在 Kerberos 或 NTLM 协议下工作,密码不会在网络中明文传输。
  • 管理方便:可以直接使用域用户、本地用户或用户组。
  • 兼容性:某些旧版浏览器或非 Windows 客户端可能支持不佳。

操作步骤:

步骤 1:安装 Windows 身份验证功能

与基本身份验证类似,IIS 管理器中没有,需要安装。

  1. 打开 服务器管理器
  2. 点击 “管理” -> “添加角色和功能”
  3. 进入 “功能” 页面,向下滚动,找到并勾选 “IIS 管理器工具”
  4. 在展开的列表中,确保勾选了 “Windows 身份验证”
  5. 点击 “安装”

步骤 2:启用 Windows 身份验证并禁用其他方式

  1. 在 IIS 管理器中,选择你的网站、应用程序或虚拟目录
  2. 双击 “身份验证”
  3. 禁用 “匿名身份验证”(这是关键,否则用户可以直接访问,无需登录)。
  4. 启用 “Windows 身份验证”
  5. (可选)你可以启用“摘要式身份验证”作为 NTLM 的后备方案,但通常不需要。

步骤 3:授权用户访问

这一步与基本身份验证完全相同。

  1. 在 IIS 管理器中,选中你的网站/目录。
  2. 双击 “授权规则”
  3. 点击 “添加允许规则...”
  4. 操作:选择 “特定用户”“用户或组”
  5. 用户:输入 计算机名\用户名域名\用户名,或者点击“...”按钮进行选择,你也可以直接输入 AdministratorsUsers 等内置组名。
  6. 权限:勾选 “读取”“执行”
  7. 点击 “确定”

完成! 访问网站时,如果你的电脑在同一个域或工作组中,浏览器可能会自动尝试使用你的 Windows 凭据登录,如果失败或不被允许,则会弹出一个登录窗口。


其他身份验证方式简介

  • 匿名身份验证:这是默认开启的,它允许任何人访问网站,无需提供任何凭据,当你需要保护网站时,必须禁用它。
  • 摘要式身份验证:比基本身份验证安全一些,因为它对密码进行了哈希处理,但要求用户账户必须在 Active Directory 中,并且客户端浏览器必须支持。
  • .NET Passport 身份验证 (已弃用):旧的身份验证方式,现在已不再使用。
  • OpenID Connect / OAuth 2.0:这是现代 Web 应用程序的标准,用于第三方登录(如使用 Microsoft Account, Google, Facebook 账号登录你的网站),这通常需要开发者在代码中实现,而不是在 IIS 管理器中简单配置。

总结与最佳实践

特性 基本身份验证 Windows 身份验证
安全性 (密码明文传输) (使用 Kerberos/NTLM)
用户账户 本地用户、域用户 本地用户、域用户、域组
兼容性 非常好 (所有浏览器) 一般 (主要在 Windows 环境下)
适用场景 公开的互联网网站,但必须配合 HTTPS 企业内部网站、Intranet 应用

最佳实践建议:

  1. 始终使用 HTTPS:无论你选择哪种身份验证方式,只要涉及用户名和密码,就必须使用 SSL/TLS 证书来加密整个通信过程。
  2. 按需启用:只启用你需要的身份验证方式,并禁用其他所有方式,特别是,保护目录时,请禁用该目录下的“匿名身份验证”。
  3. 最小权限原则:只授予用户完成其任务所必需的最小权限,如果只是用来管理后台,就不要给“读取”整个网站的权限。
  4. 使用用户组:对于 Windows 身份验证,创建一个专门的用户组(如 WebAdmins),将需要访问的用户加入该组,然后在 IIS 授权规则中允许这个组,而不是单个用户,这样更易于管理。