Autenticación de Windows <windowsAuthentication>

Información general

El elemento <windowsAuthentication> define las opciones de configuración para el módulo de autenticación de Windows de Internet Information Services (IIS) 7. Puede usar la autenticación de Windows cuando el servidor de IIS 7 se ejecuta en una red corporativa que usa identidades de dominio de servicio de Microsoft Active Directory u otras cuentas de Windows para identificar a los usuarios. Por este motivo, puede usar la autenticación de Windows tanto si el servidor es miembro de un dominio de Active Directory como si no.

La autenticación de Windows (anteriormente denominada NTLM, y también denominada autenticación desafío/respuesta de Windows NT) es una forma segura de autenticación porque el nombre de usuario y la contraseña se aplica un hash antes de enviarse a través de la red. Al habilitar la autenticación de Windows, el explorador cliente envía una versión con hash fuerte de la contraseña en un intercambio criptográfico con el servidor web.

La autenticación de Windows admite dos protocolos de autenticación, Kerberos y NTLM, que se definen en el elemento <providers>. Al instalar y habilitar la autenticación de Windows en IIS 7, el protocolo predeterminado es Kerberos. El elemento <windowsAuthentication> también puede contener un atributo useKernelMode que configura si se debe usar la característica de autenticación en modo kernel que es nueva en Windows Server 2008.

La autenticación de Windows es más adecuada para un entorno de intranet por los siguientes motivos:

  • Los equipos cliente y los servidores web están en el mismo dominio.
  • Los administradores pueden asegurarse de que cada explorador cliente sea Internet Explorer 2.0 o posterior.
  • Las conexiones proxy HTTP, que no son compatibles con NTLM, no son necesarias.
  • La versión 5 de Kerberos requiere una conexión a Active Directory, lo que no es factible en un entorno de Internet.

Novedades de IIS 7.5

El elemento <extendedProtection> se introdujo en IIS 7.5, lo que le permite configurar las opciones de las nuevas características de protección ampliada que se han integrado en la autenticación de Windows.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <windowsAuthentication> no se modificó en IIS 10.0.
IIS 8.5 El elemento <windowsAuthentication> no se modificó en IIS 8.5.
IIS 8.0 El elemento <windowsAuthentication> no se modificó en IIS 8.0.
IIS 7.5 El elemento <extendedProtection> se agregó en IIS 7.5.
IIS 7.0 El elemento <windowsAuthentication> se introdujo en IIS 7.0.
IIS 6,0 El elemento <windowsAuthentication> reemplaza partes de las propiedades de la metabase AuthType y AuthFlags de IIS 6.0.

Configuración

La instalación predeterminada de IIS 7 y versiones posteriores no incluye el servicio de rol de autenticación de Windows. Para usar la autenticación de Windows en IIS, debe instalar el servicio de rol, deshabilitar la autenticación anónima para su sitio web o aplicación y, a continuación, habilitar la autenticación de Windows para el sitio o la aplicación.

Nota:

Después de instalar el servicio de rol, IIS 7 confirma las siguientes opciones de configuración en el archivo ApplicationHost.config.

<windowsAuthentication enabled="false" />

Windows Server 2012 o Windows Server 2012 R2

  1. En la barra de tareas, haga clic en Administrador del servidor.
  2. En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
  3. En el asistente para Agregar roles y características, haga clic en Siguiente. Seleccione el tipo de instalación y haga clic en Siguiente. Seleccione el servidor de destino y haga clic en Siguiente.
  4. En la página Roles de servidor, expanda Servidor web (IIS), expanda Servidor web, expanda Seguridad y, a continuación, seleccione Autenticación de Windows. Haga clic en Next.
    Screenshot of the Server Roles page with the Windows Authentication option being highlighted..
  5. En la página Seleccionar características, haz clic en Siguiente.
  6. En la página Confirmar selecciones de instalación, haga clic en Instalar.
  7. En la página Resultados , haga clic en Cerrar.

Windows 8 o Windows 8.1

  1. En la pantalla Inicio, mueva el puntero hasta la esquina inferior izquierda, haga clic con el botón derecho en el botón Inicio y, a continuación, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda Internet Information Services, expanda Servicios World Wide Web, expanda Seguridad y, a continuación, seleccione Autenticación de Windows.
    Screenshot of the Internet Information Services folder's contained folders, with the Windows Authentication folder being highlighted.
  4. Haga clic en OK.
  5. Haga clic en Cerrar.

Windows Server 2008 o Windows Server 2008 R2

  1. En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, luego, haga clic en Administrador del servidor.
  2. En el panel de jerarquía del Administrador del servidor, expanda Roles y, luego, haga clic en Servidor web (IIS).
  3. En el panel Servidor web (IIS), desplácese hasta la sección Servicios de rol y, luego, haga clic en Agregar servicios de rol.
  4. En la página Seleccionar servicios de rol del Asistente para agregar servicios de rol, seleccione Autenticación de Windows y haga clic en Siguiente.
    Screenshot of the Select Role Services page with the Windows Authentication option being highlighted.
  5. En la página Confirmar selecciones de instalación, haz clic en Instalar.
  6. En la página Resultados , haga clic en Cerrar.

Windows Vista o Windows 7

  1. En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda Internet Information Services, después World Wide Web Services y, a continuación Seguridad.
  4. Seleccione Autenticación de Windows y, a continuación, haga clic en Aceptar.
    Screenshot of the expandable Internet Information Services folder with the Windows Authentication folder being highlighted.

Procedimientos

Cómo habilitar la autenticación de Windows para un sitio web, una aplicación web o un servicio web

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, expanda el nombre del servidor, expanda Sitios y, a continuación, el sitio, la aplicación o el servicio web para el que desea habilitar la autenticación de Windows.

  3. Desplácese hasta la sección Seguridad en el panel Inicio y, a continuación, haga doble clic en Autenticación.

  4. En el panel Autenticación, seleccione Autenticación de Windows y, a continuación, haga clic en Habilitar en el panel Acciones.
    Screenshot of the Authentication pane which contains the Name and Status fields.


Habilitación de la protección ampliada para la autenticación de Windows

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, expanda el nombre del servidor, expanda Sitios y, a continuación, el sitio, la aplicación o el servicio web para el que desea habilitar la autenticación de protección ampliada para Windows.

  3. Desplácese hasta la sección Seguridad en el panel Inicio y, a continuación, haga doble clic en Autenticación.

  4. En el panel Authentication, seleccione Autenticación de Windows.

  5. Haga clic en Habilitar en el panel Acciones.
    Screenshot of the Authentication pane and its Group by field.

  6. Haga clic en Configuración avanzada en el panel Acciones.

  7. Cuando aparezca el cuadro de diálogo Configuración avanzada, seleccione una de las siguientes opciones en el menú desplegable Protección ampliada:

    • Seleccione Aceptar si desea habilitar la protección ampliada al proporcionar compatibilidad de nivel inferior para los clientes que no admiten la protección ampliada.
    • Seleccione Requerido si desea habilitar la protección ampliada sin proporcionar compatibilidad de nivel inferior.
      Screenshot of the Advanced Settings dialog box with the Extended Protection field's Accept option being highlighted.
  8. Haga clic en Aceptar para cerrar el cuadro de diálogo Configuración avanzada.

Configuración

El elemento <windowsAuthentication> se puede configurar en el nivel de sitio, aplicación o directorio virtual en el archivo ApplicationHost.config.

Atributos

Atributo Descripción
authPersistNonNTLM Atributo Boolean opcional.

Especifica si IIS vuelve a autenticar automáticamente todas las solicitudes que no son NTLM (por ejemplo, Kerberos), incluso las de la misma conexión. False habilita varias autenticaciones para las mismas conexiones.

Nota: un valor de true significa que el cliente se autenticará solo una vez en la misma conexión. IIS almacenará en caché un token o vale en el servidor para una sesión TCP que permanezca establecida.

El valor predeterminado es false.
authPersistSingleRequest Atributo Boolean opcional.

Establecer esta marca en true especifica que la autenticación solo persiste para una sola solicitud en una conexión. IIS restablece la autenticación al final de cada solicitud y fuerza la reautenticación en la siguiente solicitud de la sesión.

El valor predeterminado es false.
enabled Se requiere atributo booleano.

Especifica si la autenticación de Windows está habilitada.

El valor predeterminado es false.
useKernelMode Atributo Boolean opcional.

Especifica si la autenticación de Windows se realiza en modo kernel. True especifica que la autenticación de Windows usa el modo kernel.

La autenticación en modo kernel puede mejorar el rendimiento de la autenticación y evitar problemas de autenticación con grupos de aplicaciones configurados para usar una identidad personalizada.

Como práctica recomendada, no deshabilite a esta configuración si usa la autenticación Kerberos y tiene una identidad personalizada en el grupo de aplicaciones.

El valor predeterminado es true.

Elementos secundarios

Elemento Descripción
extendedProtection Elemento opcional.

Especifica las opciones de protección extendida para la autenticación de Windows.

Nota: Este elemento se agregó en IIS 7.5.
providers Elemento opcional.

Especifica los proveedores de soporte técnico de seguridad que se usan para la autenticación de Windows.

Ejemplo de configuración

El siguiente elemento predeterminado <windowsAuthentication> se configura en el archivo ApplicationHost.config raíz en IIS 7.0 y deshabilita autenticación de Windows de forma predeterminada. También define los dos proveedores de autenticación de Windows para IIS 7.0.

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

En el siguiente ejemplo se habilita la autenticación de Windows y se deshabilita la autenticación anónima para un sitio web denominado Contoso.

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

Código de ejemplo

En los siguientes ejemplos se deshabilita la autenticación anónima para un sitio denominado Contoso y, a continuación, se habilita la autenticación de Windows para el sitio.

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

Nota:

Debe asegurarse de establecer el parámetro de confirmación en apphost cuando use AppCmd.exe para configurar estas opciones. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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()