IIS 7:禁用某些客户端 IP 的身份验证

Jes*_*rew 5 iis iis-7 authentication ip-address windows-server-2008-r2

我有一个受基本身份验证保护的虚拟目录。我想禁用某些 IP 的身份验证,以便允许来自例如 127.0.0.1 的所有请求而无需要求凭据。我怎样才能做到这一点?

Jes*_*rew 3

我无法找到一种内置的方法来实现这一点。我最终按照Microsoft 的说明编写了一个 IIS 模块。

该模块检查客户端的 IP 地址(使用HttpRequest.UserHostAddress),如果不在豁免列表中,则重新实现 Windows 帐户的标准基本身份验证(使用 APILogonUser并设置HttpContext.User为 a WindowsPrincipal)。从中读取身份验证域和豁免 IP 地址列表web.config(使用ConfigurationManager.AppSettings)。

绊脚石包括:

  • 我想豁免服务器本身,因此我将127.0.0.1服务器的 IP 地址添加到豁免列表中,但还必须添加::1(IPv6 localhost)。
  • 我使用它来保护对 hgweb 的访问,并且出于某种原因,我必须在启用插件后将hgrcs行中的条目allow_push从更改username为。DOMAIN\username