У меня есть виртуальный каталог, защищенный базовой аутентификацией. Я хотел бы отключить аутентификацию для определенных 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.1
IP-адрес сервера в список исключений, но также пришлось добавить::1
(IPv6 localhost). - Я использую это для защиты доступа к hgweb, и по какой-то причине мне пришлось изменить записи в
hgrc
строкеallow_push
сusername
наDOMAIN\username
после включения плагина.