Não consegui encontrar uma maneira integrada de fazer isso acontecer. Acabei escrevendo um módulo IIS usando as instruções do link .
O módulo verifica o endereço IP do cliente (usando HttpRequest.UserHostAddress ) e, se não estiver na lista de isentos, reimplementa a autenticação básica padrão para contas do Windows (usando a LogonUser API e a configuração HttpContext.User para um código%). O domínio de autenticação e a lista de endereços IP isentos são lidos em WindowsPrincipal (usando web.config ).
Obstáculos incluídos:
- Eu queria isentar o próprio servidor, então adicionei
ConfigurationManager.AppSettingse o endereço IP do servidor à lista de isenção, mas também tive que adicionar127.0.0.1(IPv6 localhost). - Estou usando isso para proteger o acesso à hgweb e, por algum motivo, tive que alterar as entradas na
::1'hgrcline' deallow_pushparausernamedepois de ativar o plug-in.