O site da intranet IIS6 usando autenticação integrada falha ao carregar quando acessado externamente

5

Desenvolvi alguns sites internos para minha organização que usam autenticação integrada. Em última análise, queremos que esses sites sejam acessíveis externamente para usuários com computadores associados a domínios. Os sites funcionam como esperado nos computadores do domínio enquanto estiverem na rede interna. O problema surge quando levo meu laptop para casa e tento acessar esses sites.

O IIS só possui autenticação integrada habilitada para os dois sites. Quando eu navego para o site usando o IE8, recebo um prompt de nome de usuário / senha solicitando credenciais de domínio. Eu posso colocá-los e ele vai funcionar, mas o objetivo é usar o token em cache para autenticação integrada.

Em seguida, argumentei que o IE não responderia a uma solicitação de autenticação integrada (o NTLM é o termo certo para isso?), a menos que o site seja confiável. Eu tentei adicionar o site a sites confiáveis, mas recebo o mesmo comportamento que o anterior. Em seguida, adicionei o site a sites da intranet local e é aí que as coisas ficam estranhas. Eu recebo uma página de erro genérica do IE, sem código de erro ou qualquer coisa.

Apenas para diversão eu carreguei o Firefox (que eu tinha configurado para usar autenticação integrada) e adicionei este novo site a network.automatic-ntlm-auth.trusted-uris . Para minha surpresa, consegui carregar as páginas sem problemas e vi exatamente o que eu esperava (incluindo a verificação de que a autenticação integrada funcionava).

Minha mente está um pouco desconcertada no momento, já que não tenho certeza de onde ir a partir daqui. Eu esperava que alguns de vocês pudessem fornecer algumas dicas.

Atualização 05/11/10 Eu comecei a mexer com o Fiddler como recomendado abaixo e vi algumas discrepâncias entre como o Firefox eo IE lidam com o pedido de página. Quando eu testei o Internet Explorer, ele faz uma solicitação, atinge um 401.2 (erro de configuração do servidor) e morre. Não há entradas de log de segurança quando isso acontece. O Firefox encontra este mesmo erro inicialmente, mas subsequentemente envia outro pedido e a autenticação é bem-sucedida.

Tendo em mente que os testes iniciais foram todos de fora da rede, olhei para uma autenticação bem-sucedida do IE8 quando feita por dentro e parece se comportar da mesma maneira que o Firefox interna e externamente. A solicitação inicial é atendida com 401.2, depois outra é enviada e é recebida com 401.1 (o desafio?) Seguido por um 200 (sucesso).

Assim, o problema parece ser que ao acessar o site "intranet" de fora da rede, o IE8 experimenta um 401.2 e depois morre quando deveria (por medida de outros navegadores) continuar com o processo de autenticação.

Alguém pode verificar a atividade do Fiddler que descrevi?

    
por maik 06.05.2010 / 08:21

2 respostas

7

Parece, para mim, que você está sendo vítima de um "bug" no IE8, assim como comunicado à Microsoft aqui e discutido com mais detalhes aqui .

Eu suspeito que, se você usar o script AdsUtil.vbs para definir a autenticação no diretório afetado como "NTLM" em vez do padrão "Negotiate, NTLM" e o problema provavelmente desaparecerá.

Você pode verificar se está vendo esse comportamento monitorando a máquina cliente com o Wireshark (ou seu sniffer favorito) e observando se ele tenta executar uma resolução de nome de transmissão NetBIOS para um controlador de domínio ao tentar acessar o site .

Alguns detalhes sobre o valor NTAuthenticationProviders que estou tomando estão disponíveis na Microsoft KB215383 . Para o IIS6, se o valor não estiver definido, o IIS o tratará como "Negotiate, NTLM". Meu palpite é que você está executando na configuração padrão.

Você pode examinar esse valor usando o script adsutil.vbs (que é instalado, por padrão, em% SystemDrive% \ Inetpub \ AdminScripts). Use o seguinte comando para examinar o valor do primeiro site da máquina (obviamente, mude o caminho neste exemplo para se adequar ao seu aplicativo real):

cscript adsutil.vbs GET W3SVC/1/Root/NTAuthenticationProviders

Lembre-se - se o valor não estiver definido, o IIS6 estará usando sua configuração padrão "Negotiate, NTLM".

Para alterar o valor NTAuthenticationProviders do diretório raiz do primeiro site da máquina, use o seguinte comando:

cscript adsutil.vbs SET W3SVC/1/Root/NTAuthenticationProviders "NTLM"

A Microsoft recomenda verificar o valor "recebido" ao consultá-lo novamente depois de defini-lo.

    
por 14.05.2010 / 02:18
1

Você tem acesso ao log de segurança do servidor IIS? Em caso afirmativo, isso ajudará você a descobrir por que a autenticação integrada está falhando com o IE8. Se você não tiver acesso aos logs, poderá obter uma visualização do tráfego do lado do cliente usando o WebFiddler, o que permitiria comparar o tráfego de autenticação HTTP entre o IE8 e o FireFox.

    
por 09.05.2010 / 21:28