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.