Autenticação do Windows <windowsAuthentication>

Visão geral

O elemento <windowsAuthentication> define a configuração para o módulo de autenticação do Windows do IIS (Serviços de Informações da Internet) 7. Você pode usar a autenticação do Windows quando o servidor IIS 7 é executado em uma rede corporativa que está usando identidades de domínio de serviço do Microsoft Active Directory ou outras contas do Windows para identificar usuários. Por isso, você pode usar a autenticação do Windows independentemente do servidor ser ou não membro de um domínio do Active Directory.

A autenticação do Windows (anteriormente chamada NTLM e também conhecida como autenticação de desafio/resposta do Windows NT) é uma forma segura de autenticação porque o nome de usuário e a senha são verificadas por hash antes de serem enviados pela rede. Quando você habilita a autenticação do Windows, o navegador cliente envia uma versão com hash forte da senha em uma troca criptográfica com o servidor Web.

A autenticação do Windows oferece suporte a dois protocolos de autenticação, Kerberos e NTLM, que são definidos no elemento <providers>. Quando você instala e habilita a autenticação do Windows no IIS 7, o protocolo padrão é Kerberos. O elemento <windowsAuthentication> também pode conter um atributo useKernelMode que configura se o recurso de autenticação de modo kernel que é novo no Windows Server 2008 deve ser usado.

A autenticação do Windows é mais adequada para um ambiente de intranet pelos seguintes motivos:

  • Computadores cliente e servidores Web estão no mesmo domínio.
  • Os administradores podem verificar se cada navegador cliente é o Internet Explorer 2.0 ou posterior.
  • Conexões de proxy HTTP, que não são suportadas pelo NTLM, não são necessárias.
  • O Kerberos versão 5 requer uma conexão com o Active Directory, o que não é viável em um ambiente da Internet.

Novidades no IIS 7.5

O elemento <extendedProtection> foi introduzido no IIS 7.5, que permite definir as configurações para os novos recursos de proteção estendida que foram integrados à autenticação do Windows.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <windowsAuthentication> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <windowsAuthentication> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <windowsAuthentication> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <extendedProtection> foi adicionado ao IIS 7.5.
IIS 7.0 O elemento <windowsAuthentication> foi introduzido no IIS 7.0.
IIS 6,0 O elemento <windowsAuthentication> substitui partes das propriedades de metabase AuthType e AuthFlags do IIS 6.0.

Instalação

A instalação padrão do IIS 7 e posterior não inclui o serviço de função autenticação do Windows. Para usar a autenticação do Windows no IIS, você deve instalar o serviço de função, desabilitar a autenticação anônima para seu site ou aplicativo e habilitar a autenticação do Windows para o site ou aplicativo.

Observação

Depois de instalar o serviço de função, o IIS 7 confirma as seguintes definições de configuração para o arquivo ApplicationHost.config.

<windowsAuthentication enabled="false" />

Windows Server 2012 R2 ou Windows Server 2012

  1. Na barra de tarefas, clique em Gerenciador do Servidor.
  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
  3. No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
  4. Na página Funções de Servidor, expanda Servidor Web (IIS), Servidor Web, expanda Segurança e selecione Autenticação do Windows. Clique em Avançar.
    Screenshot of the Server Roles page with the Windows Authentication option being highlighted. .
  5. Na página Selecionar recursos, clique em Avançar.
  6. Na página Confirmar seleções de instalação, clique em Instalar.
  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  1. Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
  3. Expanda Serviços de Informações da Internet, expanda Serviços da World Wide Web, expanda Segurança e, em seguida, selecione Autenticação do Windows.
    Screenshot of the Internet Information Services folder's contained folders, with the Windows Authentication folder being highlighted.
  4. Clique em OK.
  5. Clique em Fechar.

Windows Server 2008 R2 ou Windows Server 2008

  1. Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
  2. No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
  3. No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
  4. Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, selecione Autenticação do Windows e clique em Avançar.
    Screenshot of the Select Role Services page with the Windows Authentication option being highlighted.
  5. Na página Confirmar Seleções de Instalação, clique em Instalar.
  6. Na página Resultados , clique em Fechar.

Windows Vista ou Windows 7

  1. Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
  3. Expanda Serviços de Informações da Internet e, em seguida, Serviços World Wide Web e, em seguida, Segurança.
  4. Selecione Autenticação do Windows e clique em OK.
    Screenshot of the expandable Internet Information Services folder with the Windows Authentication folder being highlighted.

Instruções

Como habilitar a autenticação do Windows para um site, aplicativo Web ou serviço Web

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, expanda o nome do servidor, expanda Sites e o site, aplicativo ou serviço Web para o qual você deseja habilitar a autenticação do Windows.

  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 e, em seguida, clique em Habilitar no painel Ações.
    Screenshot of the Authentication pane which contains the Name and Status fields.


Como habilitar a proteção estendida para autenticação do Windows

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, expanda o nome do servidor, expanda Sites e, em seguida, o site, aplicativo ou serviço Web para o qual você deseja habilitar a Proteção Estendida para autenticação do Windows.

  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. Clique em Habilitar no painel Ações.
    Screenshot of the Authentication pane and its Group by field.

  6. Clique em Configurações Avançadas no painel Ações.

  7. Quando a caixa de diálogo Configurações Avançadas for exibida, selecione uma das seguintes opções no menu suspenso Proteção Estendida:

    • Selecione Aceitar se desejar habilitar a proteção estendida e, ao mesmo tempo, fornecer suporte de nível inferior para clientes que não oferecem suporte à proteção estendida.
    • Selecione Obrigatório se desejar habilitar a proteção estendida sem fornecer suporte de nível inferior.
      Screenshot of the Advanced Settings dialog box with the Extended Protection field's Accept option being highlighted.
  8. Clique em OK para fechar a caixa de diálogo Configurações Avançadas.

Configuração

O elemento <windowsAuthentication> é configurável no nível do site, aplicativo ou diretório virtual no arquivo ApplicationHost.config.

Atributos

Atributo Descrição
authPersistNonNTLM Atributo Boolean opcional.

Especifica se o IIS reautentica automaticamente todas as solicitações não-NTLM (por exemplo, Kerberos), mesmo aquelas na mesma conexão. False habilita várias autenticações para as mesmas conexões.

Observação: uma configuração de true significa que o cliente será autenticado apenas uma vez na mesma conexão. O IIS armazenará em cache um token ou tíquete no servidor para uma sessão TCP que permanece estabelecida.

O padrão é false.
authPersistSingleRequest Atributo Boolean opcional.

A definição desse sinalizador como true especifica que a autenticação persiste apenas para uma única solicitação em uma conexão. O IIS redefine a autenticação no final de cada solicitação e força a reautenticação na próxima solicitação da sessão.

O valor padrão é false.
enabled Atributo booliano necessário.

Especifica se a autenticação do Windows está habilitada.

O valor padrão é false.
useKernelMode Atributo Boolean opcional.

Especifica se a autenticação do Windows é feita no modo kernel. True especifica que a autenticação do Windows usa o modo kernel.

A autenticação no modo kernel pode melhorar o desempenho de autenticação e evitar problemas de autenticação com pools de aplicativos que são configurados para usar uma identidade personalizada.

Como prática recomendada, não desabilite essa configuração se usar a autenticação Kerberos e tiver uma identidade personalizada no pool de aplicativos.

O padrão é true.

Elementos filho

Elemento Descrição
extendedProtection Elemento opcional.

Especifica as opções de proteção estendida para autenticação do Windows.

Observação: esse elemento foi adicionado ao IIS 7.5.
providers Elemento opcional.

Especifica os provedores de suporte de segurança usados para autenticação do Windows.

Exemplo de configuração

O elemento <windowsAuthentication> padrão a seguir é configurado no arquivo raiz ApplicationHost.config no IIS 7.0 e desabilita a autenticação do Windows por padrão. Ele também define os dois provedores de autenticação do Windows para o IIS 7.0.

<windowsAuthentication enabled="false">
   <providers>
      <add value="Negotiate" />
      <add value="NTLM" />
   </providers>
</windowsAuthentication>

O exemplo a seguir habilita a autenticação do Windows e desabilita a autenticação anônima para um site chamado Contoso.

<location path="Contoso">
   <system.webServer>
      <security>
         <authentication>
            <anonymousAuthentication enabled="false" />
            <windowsAuthentication enabled="true" />
         </authentication>
      </security>
   </system.webServer>
</location>

Exemplo de código

Os exemplos a seguir desabilitam a autenticação anônima para um site chamado Contoso e, em seguida, habilitam a autenticação do Windows para o site.

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/anonymousAuthentication /enabled:"False" /commit:apphost

appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost

Observação

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {

   private static void Main() {

      using(ServerManager serverManager = new ServerManager()) { 
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso");
         anonymousAuthenticationSection["enabled"] = false;

         ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso");
         windowsAuthenticationSection["enabled"] = true;

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim anonymousAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso")
      anonymousAuthenticationSection("enabled") = False

      Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso")
      windowsAuthenticationSection("enabled") = True

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var anonymousAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/anonymousAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
anonymousAuthenticationSection.Properties.Item("enabled").Value = false;

var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;

adminManager.CommitChanges();

VBScript

Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set anonymousAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/anonymousAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
anonymousAuthenticationSection.Properties.Item("enabled").Value = False

Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
windowsAuthenticationSection.Properties.Item("enabled").Value = True

adminManager.CommitChanges()