Compartilhar via


Um status 401.1 inesperado é retornado quando você usa cabeçalhos de pré-autenticação com o Internet Explorer e o IIS

Este artigo resolve o problema em que um status 401.1 inesperado é retornado com cabeçalhos de pré-autenticação. Ele ocorre quando você usa o Internet Explorer para navegar em um aplicativo Web hospedado no IIS (Serviços de Informações da Internet).

Versão original do produto: modo Internet Explorer no Microsoft Edge, Internet Explorer 11, Serviços de Informações da Internet
Número original do KB: 2749007

Sintomas

Considere o cenário a seguir.

  • Você usa o Internet Explorer (ou o modo Internet Explorer no Microsoft Edge) para procurar um aplicativo Web hospedado no IIS.
  • O computador cliente está configurado para usar a pré-autenticação nas configurações da Internet e a autenticação do modo kernel está habilitada no IIS.
  • A solicitação da Web enviada pelo Internet Explorer (ou modo Internet Explorer no Microsoft Edge) é a primeira solicitação a ser enviada ao aplicativo IIS.

Nesse cenário, o IIS pode retornar uma resposta HTTP 401.1 para o Internet Explorer (ou modo Internet Explorer no Microsoft Edge) em resposta à solicitação do navegador. O navegador da Web pode solicitar que você insira seu nome de usuário e senha. Ou uma mensagem de erro HTTP 401.1 pode ser exibida na janela do navegador.

Causa

Esse comportamento é por design. A resposta 401.1 ocorrerá se a primeira solicitação do navegador da Web enviada ao aplicativo IIS contiver um dos seguintes cabeçalhos:

  • Um cabeçalho NTLM (Desafio/Resposta) do Windows
  • Um cabeçalho Negotiate WWW-Authorization (conhecido como Pré-Autenticação)

Observação

Há muitos motivos pelos quais um usuário pode ser solicitado a fornecer credenciais no Internet Explorer que estão fora do escopo deste artigo. Consulte a seção Mais informações para saber como determinar se a causa do prompt é do problema descrito aqui.

Solução alternativa

Para contornar esse comportamento, desabilite a pré-autenticação nas configurações da Internet ou desative a autenticação do modo kernel para o aplicativo Web do IIS.

Aviso

Se você usar o Editor do Registro incorretamente, poderá causar sérios problemas que podem exigir a reinstalação do sistema operacional. A Microsoft não pode garantir que você possa resolver problemas resultantes do uso incorreto do Editor do Registro. Use o Editor do Registro por sua conta e risco.

Para modificar esse comportamento no Internet Explorer, use o Editor do Registro (Regedt32.exe) para adicionar um valor à seguinte chave do Registro:

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/

Observação

A chave do Registro é um caminho; foi embrulhado para facilitar a leitura.

Adicione os seguintes valores do Registro:

  • Nome do valor: DisableNTLMPreAuth
  • Tipo de dados: REG_DWORD
  • Valor: 1

Para modificar esse comportamento no IIS, desabilite a Autenticação do Modo Kernel para o aplicativo Web do IIS:

  1. Abra o Gerenciador de Serviços de Informações da Internet (IIS) executando o seguinte comando em um prompt de comando administrativo:

    %windir%\System32\inetsrv\inetmgr.exe
    
  2. No painel Conexões, expanda o nome do servidor, expanda Sites e, em seguida, expanda o site, aplicativo ou serviço Web para o qual você deseja desabilitar a Autenticação do Modo Kernel.

  3. Role até a seção Segurança no painel Página Inicial e clique duas vezes em Autenticação.

  4. No painel Autenticação, selecione Autenticação do Windows.

  5. Selecione Configurações avançadas no painel Ações .

  6. Quando a caixa de diálogo Configurações avançadas for exibida, desmarque a caixa de seleção Habilitar autenticação no modo kernel.

  7. Selecione OK para fechar a caixa de diálogo Configurações avançadas .

Importante

Desabilitar a autenticação do modo kernel pode fazer com que os aplicativos Web que exigem autenticação e delegação Kerberos falhem.

Mais informações

Para determinar se o prompt é causado pelo problema descrito neste artigo, use a ferramenta Fiddler. Use a ferramenta para exibir o tráfego de solicitação/resposta HTTP para a solicitação que resulta no prompt no Internet Explorer (ou no modo Internet Explorer no Microsoft Edge). Você também precisará dos logs do IIS do servidor IIS para confirmar o status HTTP e os códigos de substatus. O exemplo a seguir usa o Internet Explorer para ilustrar esse comportamento:

  1. Inicie a ferramenta Fiddler e habilite a captura de tráfego.

  2. Navegue até o aplicativo Web do IIS de forma que ele resulte na solicitação de credenciais.

  3. No Fiddler, procure a solicitação que resultou no 401. Examinando as exibições brutas de solicitação e resposta, você verá entradas semelhantes às seguintes:

    Cabeçalhos de solicitação:

    GET /App1/default.aspx HTTP/1.1
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Host: websitename
    Cookie: ASP.NET_SessionId=jdzbfpnmacq0jykhxnhqhe3j
    Authorization: Negotiate
    <header content omitted>
    

    Cabeçalhos de resposta

    HTTP/1.1 401 Unauthorized
    Content-Type: text/html
    Server: Microsoft-IIS/7.5
    WWW-Authenticate: Negotiate
    WWW-Authenticate: NTLM
    X-Powered-By: ASP.NET
    Date: Wed, 22 Aug 2012 17:41:09 GMT
    Content-Length: 1293
    Proxy-Support: Session-Based-Authentication
    

Observação

A solicitação inicial para o aplicativo Web já contém o Authorization cabeçalho, que resulta na resposta 401. O log do IIS correspondente deve mostrar uma entrada semelhante à seguinte:

2012-08-22 17:41:09 2001:4898:0:fff:200:5efe:157.59.113.72 GET /App1/default.aspx - 80 - 2001:4898:0:fff:0:
5efe:172.18.100.183 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/5.0;+SLCC2;+.NET+CLR+
2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+MS-
RTC+EA+2;+BRI/1;+Zune+4.7;+MS-RTC+LM+8;+BRI/2;+Creative+AutoUpdate+v1.41.02) 401 1 2148074254 5005

O status HTTP e o substatus são 401.1, que mapeia para Acesso negado devido a credenciais inválidas.

Para saber mais, confira a seguinte documentação: