使用 Windows 身份验证 (最常用、最推荐)

这种方法会弹出一个标准的 Windows 登录对话框,要求用户输入用户名和密码,验证的是用户在 服务器本地Active Directory (域) 中的账户权限。

iis访问网站输入密码
(图片来源网络,侵删)

适用场景:

  • 公司内部网站,只有特定部门的员工可以访问。
  • 网站管理后台,只有管理员账户才能登录。
  • 需要精细控制不同用户权限(A用户只读,B用户可读写)。

操作步骤:

第 1 步:安装必要的 IIS 角色服务

确保你的 Windows 服务器上已经安装了 “Windows 身份验证” 功能。

  1. 打开 服务器管理器
  2. 点击 “添加角色和功能”
  3. 在 “功能” 向导页面中,展开 “Web 服务器 (IIS)” -> “安全性”
  4. 勾选 “Windows 身份验证”
  5. 点击 “下一步” 完成安装。

第 2 步:在 IIS 管理器中启用身份验证

  1. 打开 IIS 管理器
  2. 在左侧的 “连接” 窗格中,找到并点击你的网站(“Default Web Site”)。
  3. 在中间的 “IIS” 窗格中,双击 “身份验证” 图标。
  4. 你会看到几种身份验证方式,确保 “匿名身份验证”“已禁用” 状态。
  5. 确保 “Windows 身份验证”“已启用” 状态。

第 3 步:配置授权规则

这一步是关键,它决定了哪些用户或用户组可以访问。

iis访问网站输入密码
(图片来源网络,侵删)
  1. 在 IIS 管理器的左侧,选中你的网站。
  2. 在中间的 “IIS” 窗格中,双击 “授权规则”
  3. 在右侧的 “操作” 窗格中,点击 “添加允许规则...”
  4. 在弹出的窗口中,你可以选择:
    • 特定用户: 直接输入允许访问的 Windows 用户名(Administratordomain\username),多个用户用逗号隔开。
    • 特定用户组: 推荐使用此选项,输入允许访问的用户组名(AdministratorsDOMAIN\Developers),这样管理起来更方便,只需在服务器上管理用户组即可。
  5. 点击 “确定”。

效果: 当任何人访问你的网站时,浏览器会弹出一个登录窗口,要求输入有效的 Windows 用户名和密码,只有你授权的用户/用户组才能成功访问。


使用 IP 地址限制

这种方法不弹出登录框,而是根据访问者的 IP 地址来决定是否允许访问,它更简单,但灵活性较低。

适用场景:

  • 只允许公司内网 IP 访问。
  • 只允许特定 IP(例如管理员自己的电脑)访问。
  • 作为第一道防线,阻止外部所有用户的直接访问。

操作步骤:

第 1 步:安装 IP 和域限制功能

  1. 打开 服务器管理器
  2. 点击 “添加角色和功能”
  3. 在 “功能” 向导页面中,展开 “Web 服务器 (IIS)” -> “安全性”
  4. 勾选 “IP 和域限制”
  5. 点击 “下一步” 完成安装。

第 2 步:配置 IP 地址限制

  1. 打开 IIS 管理器
  2. 在左侧的 “连接” 窗格中,找到并点击你的网站。
  3. 在中间的 “IIS” 窗格中,双击 “IP 和域限制”
  4. 在右侧的 “操作” 窗格中,点击 “添加允许条目...”“添加拒绝条目...”
  5. 推荐做法:先拒绝所有,再允许特定。
    • 双击 “IP 地址和域限制” 列表中的 “IPv4 地址” 条目(通常是 Unspecified,表示未配置)。
    • 在弹出的编辑规则窗口中,将 “操作” 设置为 “拒绝”,然后点击 “确定”,这样默认就会拒绝所有访问。
    • 再次点击 “添加允许条目...”
    • 选择 “IPv4 地址”,然后输入你允许访问的 IP 地址或 IP 范围。
      • 单个 IP: 168.1.100
      • IP 范围: 168.1.0 - 168.1.255
      • 子网掩码: 168.1.0 / 255.255.0
  6. 点击 “确定”。

效果: 只有来自你指定的 IP 地址的请求才能访问网站,来自其他 IP 的访问会直接收到 “403 Forbidden” 错误,而不会弹出任何登录框。


最佳实践:结合两种方法 (最安全、最灵活)

对于要求较高的内部网站,最好的方式是将两者结合使用。

工作流程:

  1. IP 地址限制 (第一层防火墙):

    • 在 “IP 和域限制” 中,拒绝所有 IP 访问。
    • 允许 公司内部网段 IP 访问。
    • 这样可以确保只有内网用户才能尝试下一步,有效防止来自外网的暴力破解。
  2. Windows 身份验证 (第二层权限):

    • 在 “身份验证” 中,禁用匿名身份验证启用 Windows 身份验证
    • 在 “授权规则” 中,只允许特定的用户或用户组(如 Managers 组)访问。

最终效果:

  • 外部用户:直接被 IP 限制拒绝,无法访问。
  • 内部用户(非授权):可以访问到网站,但会被 Windows 身份验证拦截,弹出登录框,输入非授权账号后会被拒绝。
  • 内部用户(授权):可以访问到网站,输入正确的 Windows 用户名和密码后,成功进入。

常见问题排查 (FAQ)

  • 问题: 为什么启用了 Windows 身份验证,但访问时还是直接进去了,没有弹出登录框?

    • 原因: 很可能是 “匿名身份验证” 仍然是启用的,IIS 会优先使用启用的身份验证方式,匿名验证成功后自然不会弹窗。
    • 解决: 进入 “身份验证”,确保 “匿名身份验证”“已禁用”“Windows 身份验证”“已启用”
  • 问题: 弹出的登录窗口是来自旧系统的,看起来很丑,能改吗?

    • 原因: 这是浏览器和操作系统原生提供的对话框,无法通过 IIS 或网站代码自定义其外观。
  • 问题: Windows 身份验证在本地可以访问,但其他内网电脑访问不了。

    • 原因:
      1. 网络问题: 确保客户端电脑能 ping 通服务器 IP。
      2. 防火墙问题: 检查服务器和客户端的 Windows 防火墙,是否允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量。
      3. 账户问题: 确保客户端使用的账户在服务器上是有效的,并且属于授权的用户组,如果是域环境,确保使用 域名\用户名 的格式。
  • 问题: 我想用自己的用户名和密码,而不是系统账户,可以吗?

    • 可以。 你可以在服务器上创建一个专门的、权限较低的本地用户(webuser),然后将这个用户添加到授权规则中,这样,访问时只需要输入 webuser 和你设置的密码即可,无需暴露管理员账户。

希望这份详细的指南能帮助你成功为 IIS 网站设置访问密码!