As informações de ligação de um site da web são usadas para determinar a quais solicitações de entrada do site são roteadas. (pelo serviço de ativação do Windows e http.sys).
Para cada site, você pode ativar os vários métodos de autenticação para todo o site ou um URL específico em um site, mas não com base no nome do host.
Você tem pelo menos duas opções:
A opção 1 é usar dois sites da Web separados, apontando para o mesmo diretório físico e usando o mesmo web.config na raiz do site.
Você ainda pode ter métodos de autenticação diferentes para os dois sites.
A desvantagem aqui é que você tem dois conjuntos de arquivos de log e certas alterações na configuração também precisam ser feitas duas vezes.
A opção dois envolve o módulo de regravação de URL
Vamos supor que você tenha dois nomes de host vinculados ao site normal.serverfault.com e secure.serverfault.com .
Crie um diretório virtual secure sob a raiz do site, mas aponte-o para o mesmo diretório físico do site em si (igual à raiz).
Para o diretório virtual, desative anonymousAuthentication e ative o basicAuthentication.
Agora, adicione uma regra de reescrita ao site:
<rewrite>
<rules>
<rule name="Secure">
<match url=".*" />
<conditions>
<add input="{SERVER_NAME}" pattern="^secure\.serverfault\.com$" />
</conditions>
<action type="Rewrite" url="/secure/{R:0}" />
</rule>
</rules>
</rewrite>
Estamos reescrevendo todas as solicitações para usar o diretório secure virtual, mas somente se o nome do host for secure.serverfault.com
Agora, os usuários que usam normal.serverfault.com ainda podem acessar o site sem autenticação, mas ao usar secure.serverfault.com , precisam fazer o login.
Um problema que vejo com essa opção é que o web.config na raiz do seu site é basicamente processado duas vezes para as solicitações reescritas.
Mesmo que exista apenas uma vez fisicamente, ao executar uma solicitação em \secure\ , ela é vista como a local para o diretório virtual e mais uma vez para o diretório pai. Então você tem que ter certeza que você não tem configurações que não suportam isso. Por exemplo, <add... nós não podem ser duplicados, você tem que usar <clear... ou <remove... para contornar isso. Ou você move as configurações para o ApplicationHost.config.
Você deve testar seu site com essa configuração, mas como o navegador nunca sabe que o URL foi reescrito, ele deve funcionar bem.