IIS 7: Отключить аутентификацию для определенных клиентских IP-адресов

IIS 7: Отключить аутентификацию для определенных клиентских IP-адресов

У меня есть виртуальный каталог, защищенный базовой аутентификацией. Я хотел бы отключить аутентификацию для определенных IP-адресов, чтобы все запросы, например, с 127.0.0.1 разрешались без запроса учетных данных. Как это сделать?

решение1

Я не смог найти встроенный способ сделать это. В итоге я написал модуль IIS, используяинструкции от Microsoft.

Модуль проверяет IP-адрес клиента (используя HttpRequest.UserHostAddress), и если он не находится в списке исключений, повторно реализует стандартную базовую аутентификацию для учетных записей Windows (используя API LogonUserи устанавливая HttpContext.Userзначение WindowsPrincipal). Домен аутентификации и список исключенных IP-адресов считываются из web.config(используя ConfigurationManager.AppSettings).

Камни преткновения включали:

  • Я хотел исключить сам сервер, поэтому добавил 127.0.0.1IP-адрес сервера в список исключений, но также пришлось добавить ::1(IPv6 localhost).
  • Я использую это для защиты доступа к hgweb, и по какой-то причине мне пришлось изменить записи в hgrcстроке allow_pushс usernameна DOMAIN\usernameпосле включения плагина.

Связанный контент