Compartir a través de


Nombre de entidad de seguridad de servicio <SPN>

Información general

El elemento <spn> agrega un nombre de entidad de seguridad de servicio (SPN) a la colección de SPN. Cada SPN especifica un punto de conexión único para la actividad de cliente mediante las características de protección extendida para la autenticación de Windows.

La protección ampliada mejora la funcionalidad de autenticación de Windows existente para mitigar los ataques de retransmisión de autenticación o de intermediario. Esta mitigación se logra mediante la información de seguridad que se implementa a través de dos mecanismos de seguridad:

  • Información de enlace de canal que se especifica a través de un token de enlace de canal (CBT), que se usa principalmente para las conexiones SSL.
  • Información de enlace de servicio que se especifica a través de un nombre de entidad de seguridad de servicio (SPN), que se usa principalmente para las conexiones que no usan SSL, o cuando se establece una conexión a través de un escenario que proporciona descarga SSL, como un servidor proxy o un equilibrador de carga.

El elemento <extendedProtection> puede contener una colección de elementos <spn>, cada uno de los cuales contiene un SPN único para la información de enlace de servicio. Cada SPN representa un punto de conexión único en la ruta de acceso de conexión, que puede ser un nombre de dominio completo (FQDN) o NETBIOS del servidor de destino o un servidor proxy. Por ejemplo, si un cliente se conecta a un servidor de destino a través de un servidor proxy, la colección SPN del servidor de destino tendría que contener el SPN para el servidor proxy. Cada SPN de la colección debe tener el prefijo "HTTP", por lo que el SPN resultante para "www.contoso.com" sería "HTTP/www.contoso.com".

Hay dos atributos del elemento <extendedProtection> que configuran el enlace de canal y el comportamiento adicional para la protección ampliada de IIS:

  • El atributo tokenChecking configura el comportamiento para comprobar los tokens de enlace de canal. Los valores posibles para este atributo son:

    Nombre Descripción
    None Este valor especifica que IIS no realizará la comprobación de tokens de enlace de canal. Esta configuración emula el comportamiento que existía antes de la protección ampliada.

    El valor numérico es 0.
    Allow Este valor especifica que la comprobación de tokens de enlace de canal está habilitada, pero no es necesaria. Esta configuración permite una comunicación segura con los clientes que admiten la protección ampliada, pero aún admite clientes que no son capaces de usar la protección ampliada.

    El valor numérico es 1.
    Require Este valor especifica que se requiere la comprobación de tokens de enlace de canal. Esta configuración no proporciona compatibilidad con los clientes que no admiten la protección ampliada.

    El valor numérico es 2.
  • El atributo flags configura un comportamiento adicional para la protección ampliada. Las marcas posibles son:

    Nombre Descripción
    None Esta marca especifica que no hay ningún comportamiento adicional habilitado para la protección ampliada. (Por ejemplo, no se usa ningún servidor proxy y la comprobación de SPN está habilitada y requiere FQDN).

    El valor numérico es 0.
    Proxy Esta marca especifica que parte de la ruta de comunicación será a través de un proxy o que el cliente se conecta directamente al servidor de destino a través de HTTP.

    El valor numérico es 1.
    NoServiceNameCheck Esta marca especifica que la comprobación de SPN está deshabilitada; esta marca no debe usarse en escenarios en los que solo se comprueban los SPN.

    El valor numérico es 2.
    AllowDotlessSpn Esta marca especifica que los SPN no son necesarios para ser FQDN. Establecer esta marca permite SPN basados en NetBIOS. Nota: establecer esta marca no es un escenario seguro; los nombres no basados en FQDN son vulnerables a ataques de intoxicación por resolución de nombres.

    El valor numérico es 4.
    ProxyCohosting Esta marca especifica que toda la ruta de comunicación de cliente a servidor usará solo HTTP; ninguna parte de la ruta de comunicación usará SSL y se usará la comprobación de SPN. Nota: al especificar esta marca, también debe especificar la marca Proxy.

    El valor numérico es 32.

Escenarios de protección ampliada

Tenga en cuenta los siguientes escenarios de ejemplo:

  • En cada uno de los siguientes escenarios también puede especificar la marca AllowDotlessSpn si el entorno de red admite SPN basados en NetBIOS; sin embargo, los SPN basados en NetBIOS no son seguros.
  • Para cada uno de los siguientes escenarios en los que se usará la comprobación de SPN y no se usará la comprobación de tokens de enlace de canal, no debe especificar la marca NoServiceNameCheck.
Escenario Marcas Descripción
El cliente se conecta directamente al servidor de destino mediante HTTP Proxy, ProxyCohosting No se usará la comprobación de SPN y no se usará la comprobación de tokens de enlace de canal.
El cliente se conecta directamente al servidor de destino mediante SSL None La comprobación de tokens de enlace de canal se usa y no se usa la comprobación de SPN.
El cliente se conecta al servidor de destino a través de un servidor proxy mediante HTTP para toda la ruta de acceso Proxy, ProxyCohosting No se usará la comprobación de SPN y no se usará la comprobación de tokens de enlace de canal.
El cliente se conecta al servidor de destino a través de un servidor proxy mediante SSL para toda la ruta de acceso Proxy No se usará la comprobación de SPN y no se usará la comprobación de tokens de enlace de canal.
El cliente se conecta al servidor proxy mediante SSL y el servidor proxy se conecta al servidor de destino mediante HTTP (carga fuera de SSL) Proxy No se usará la comprobación de SPN y no se usará la comprobación de tokens de enlace de canal.

Información adicional

Puede encontrar más información sobre la protección ampliada en el siguiente tema:

Autenticación de Windows integrada con protección ampliada

Nombres de entidades de seguridad de servicio

Compatibilidad

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

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 seleccione Autenticación de Windows. Haga clic en Next.
    Screenshot shows Web Server and Security pane expanded with Windows Authentication selected..
  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 luego seleccione Autenticación de Windows.
    Screenshot of World Wide Web Services and Security node expanded. Windows Authentication is 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 displays Select Role Services page of Add Role Services Wizard with Security pane expanded and Windows Authentication selected.
  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 luego Seguridad.
  4. Seleccione Autenticación de Windows y, a continuación, haga clic en Aceptar.
    Screenshot of World Wide Web Services and Security pane expanded with Windows Authentication highlighted.

Procedimientos

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 después 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 shows Authentication pane with Windows Authentication selected. Enable option is displayed in Actions pane.

  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 Advanced Settings dialog box showing Accept option is selected from Extended Protection drop down menu.
  8. Haga clic en Aceptar para cerrar el cuadro de diálogo Configuración avanzada.

Configuración

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

Atributos

Atributo Descripción
name Atributo de cadena opcional.

Especifica un SPN único.

No existe ningún valor predeterminado.

Elementos secundarios

Ninguno.

Ejemplo de configuración

En el siguiente ejemplo se muestra un elemento <extendedProtection> que muestra cómo habilitar la autenticación de Windows con protección ampliada para el sitio web predeterminado y agrega dos entradas SPN a la colección de SPN.

<location path="Default Web Site">
   <system.webServer>
      <security>
         <authentication>
            <windowsAuthentication enabled="true">
               <extendedProtection tokenChecking="Allow" flags="None">
                  <spn name="HTTP/www.contoso.com" />
                  <spn name="HTTP/contoso.com" />
               </extendedProtection>
            </windowsAuthentication>
         </authentication>
      </security>
   </system.webServer>
</location>

Código de ejemplo

En los siguientes ejemplos se muestra cómo configurar la autenticación de Windows con protección ampliada para el sitio web predeterminado y se agregan dos entradas SPN a la colección de SPN.

AppCmd.exe

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

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /extendedProtection.tokenChecking:"Allow" /extendedProtection.flags:"None" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/www.contoso.com']" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/contoso.com']" /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 windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site");
         windowsAuthenticationSection["enabled"] = true;

         ConfigurationElement extendedProtectionElement = windowsAuthenticationSection.GetChildElement("extendedProtection");
         extendedProtectionElement["tokenChecking"] = @"Allow";
         extendedProtectionElement["flags"] = @"None";

         ConfigurationElementCollection extendedProtectionCollection = extendedProtectionElement.GetCollection();

         ConfigurationElement spnElement = extendedProtectionCollection.CreateElement("spn");
         spnElement["name"] = @"HTTP/www.contoso.com";
         extendedProtectionCollection.Add(spnElement);

         ConfigurationElement spnElement1 = extendedProtectionCollection.CreateElement("spn");
         spnElement1["name"] = @"HTTP/contoso.com";
         extendedProtectionCollection.Add(spnElement1);

         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 windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site")
      windowsAuthenticationSection("enabled") = True

      Dim extendedProtectionElement As ConfigurationElement = windowsAuthenticationSection.GetChildElement("extendedProtection")
      extendedProtectionElement("tokenChecking") = "Allow"
      extendedProtectionElement("flags") = "None"

      Dim extendedProtectionCollection As ConfigurationElementCollection = extendedProtectionElement.GetCollection

      Dim spnElement As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement("name") = "HTTP/www.contoso.com"
      extendedProtectionCollection.Add(spnElement)

      Dim spnElement1 As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement1("name") = "HTTP/contoso.com"
      extendedProtectionCollection.Add(spnElement1)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

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

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

var extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection");
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow";
extendedProtectionElement.Properties.Item("flags").Value = "None";

var extendedProtectionCollection = extendedProtectionElement.Collection;

var spnElement = extendedProtectionCollection.CreateNewElement("spn");
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com";
extendedProtectionCollection.AddElement(spnElement);

var spnElement1 = extendedProtectionCollection.CreateNewElement("spn");
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com";
extendedProtectionCollection.AddElement(spnElement1);

adminManager.CommitChanges();

VBScript

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

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

Set extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection")
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow"
extendedProtectionElement.Properties.Item("flags").Value = "None"

Set extendedProtectionCollection = extendedProtectionElement.Collection

Set spnElement = extendedProtectionCollection.CreateNewElement("spn")
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com"
extendedProtectionCollection.AddElement(spnElement)

Set spnElement1 = extendedProtectionCollection.CreateNewElement("spn")
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com"
extendedProtectionCollection.AddElement(spnElement1)

adminManager.CommitChanges()