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.AppSettings
e 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
'hgrc
line' deallow_push
parausername
depois de ativar o plug-in.