Autenticación de seguridad <authentication>

Información general

La autenticación es el mecanismo que se usa para comprobar la identidad de los visitantes al sitio o aplicación web. Normalmente, se consigue al asignar un nombre de usuario y contraseña a un visitante o permitir que un visitante acceda de forma anónima al contenido público del sitio.

Aunque use la autenticación para confirmar la identidad de un visitante, use la autorización para controlar el acceso del visitante a las distintas áreas de su sitio o aplicación.

IIS 7 admite la autenticación anónima, básica, de asignación de certificado de cliente, implícita, de asignación de certificado de cliente de IIS y la de Windows. Los modulos de autenticación de terceros pueden proporcionar modos de autenticación adicionales.

Tras instalar uno de los módulos de autenticación, debe habilitarlo en el sitio web, aplicación web o servicio web donde desee usarlo.

De forma predeterminada, IIS 7 habilita la autenticación de modo kernel en el esquema de autenticación de Windows (que usa Kerberos o NTLM). La autenticación de modo kernel presenta las siguientes ventajas:

  • Las aplicaciones web se pueden ejecutar con cuentas de privilegios inferiores.
  • Si usa la autenticación Kerberos, puede usar una cuenta diferente a la cuenta predeterminada asociada al nombre de entidad de seguridad de servicio (SPN) del servidor.
  • Si usa la autenticación de modo kernel, puede usar el proveedor Kerberos de autenticación de Windows sin hacer una configuración explícita del SPN.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <authentication> no se modificó en IIS 10.0.
IIS 8.5 El elemento <authentication> no se modificó en IIS 8.5.
IIS 8.0 El elemento <authentication> no se modificó en IIS 8.0.
IIS 7.5 El elemento <authentication> no se modificó en IIS 7.5.
IIS 7.0 El elemento <authentication> se introdujo en IIS 7.0.
IIS 6,0 N/D

Configuración

El elemento <authentication> se incluye en la instalación predeterminada de IIS 7.

Procedimientos

Cómo deshabilitar la autenticación anónima

  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 vaya al nivel del panel de jerarquía que desea configurar y, a continuación, haga clic en el sitio web o la aplicación web.

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

  4. En el panel Autenticación, seleccione Autenticación anónima y, a continuación, haga clic en Desactivar en el panel Acciones.
    Screenshot that shows the Authentication pane. Anonymous Authentication is enabled and selected.

Cómo cambiar las credenciales de autenticación anónima de la cuenta de IUSR

  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 Sitiosy vaya al nivel del panel de jerarquía que desea configurar y, a continuación, haga clic en el sitio web o la aplicación web.

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

  4. En el panel Autenticación, seleccione Autenticación anónima y, a continuación, haga clic en Editar... en el panel Acciones.

  5. En el cuadro de diálogo Modificar credenciales de autenticación anónima, realice una de las siguientes acciones:

    • Seleccione Identidad del grupo de aplicaciones para usar el conjunto de identidades del grupo de aplicaciones y haga clic en Aceptar.
      Screenshot that shows the Edit Anonymous Authentication Credentials dialog box. Application pool identity is selected.

    • Haga clic en Establecer... y, después, en el cuadro de diálogo Establecer credenciales, escriba el nombre de usuario de la cuenta en el cuadro Nombre de usuario, escriba la contraseña de la cuenta en los cuadros Contraseña y Confirmar contraseña, Haga clic en Aceptar y, a continuación, haga clic en Aceptar de nuevo.
      Screenshot that shows the Set Credentials dialog box.

      Nota:

      Si usa este procedimiento, conceda solo los privilegios mínimos de la nueva cuenta en el equipo servidor IIS.


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 del 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 that shows the Authentication pane. Windows Authentication is disabled and selected.

Configuración

El grupo de secciones <authentication> está definido en la sección de configuración <system.webServer>. Este grupo de secciones define las secciones de configuración de todos los tipos de autenticación de usuario que puede instalar y habilitar en el servidor. Puede configurarlo en el nivel de servidor en el archivo ApplicationHost.config y, en el nivel de aplicación, en el archivo Web.config.

Atributos

Ninguno.

Elementos secundarios

Elemento Descripción
anonymousAuthentication Elemento opcional.

Especifica la configuración de la autenticación anónima.
basicAuthentication Elemento opcional.

Especifica la configuración de la autenticación básica.
clientCertificateMappingAuthentication Elemento opcional.

Especifica la configuración de la autenticación de asignación de certificados de cliente con Active Directory.
digestAuthentication Elemento opcional.

Especifica la configuración de la autenticación implícita.
iisClientCertificateMappingAuthentication Elemento opcional.

Especifica la configuración de la autenticación de asignación de certificados de cliente con IIS.
windowsAuthentication Elemento opcional.

Especifica la configuración de la autenticación de Windows.

Ejemplo de configuración

La siguiente configuración de ejemplo deshabilita la autenticación anónima de un sitio con el nombre Contoso y habilita la autenticación básica y de Windows en el sitio.

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

Código de ejemplo

Los siguientes ejemplos deshabilitan la autenticación anónima de un sitio con el nombre Contoso y, a continuación, habilitan la autenticación básica y de Windows en 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/basicAuthentication /enabled:"True" /commit:apphost

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

Nota:

Debe asegurarse de establecer el parámetrocommit en apphost cuando use AppCmd.exe para configurar estos valores. 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 basicAuthenticationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso");
         basicAuthenticationSection["enabled"] = true;

         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 basicAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso")
      basicAuthenticationSection("enabled") = True

      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 basicAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/basicAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
basicAuthenticationSection.Properties.Item("enabled").Value = true;

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 basicAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/basicAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
basicAuthenticationSection.Properties.Item("enabled").Value = True

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

adminManager.CommitChanges()