Назад | Перейти на главную страницу

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

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

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

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

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

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