Compartir a través de


Autenticación de doble salto sin restricciones kerberos con Microsoft Edge (Chromium)

Se aplica a: Internet Information Services

Introducción

La configuración de la autenticación de Windows basada en el protocolo de autenticación Kerberos puede ser un esfuerzo complejo, especialmente cuando se trabaja con escenarios como la delegación de identidad desde un sitio front-end a un servicio back-end en el contexto de IIS y ASP.NET. Siga los pasos de este artículo para configurar la delegación de vales de autenticación y usar servicios con un explorador moderno, como Microsoft Edge versión 87 o posterior.

En este artículo se supone que está configurando una arquitectura similar a la representada en el diagrama siguiente:

Diagrama que muestra la arquitectura de la autenticación de Windows basada en el protocolo de autenticación Kerberos.

  • El equipo Workstation-Client1 forma parte de la misma instancia de Active Directory que el servidor web principal, denominado Primary-IIS-SRV y el servidor web back-end, denominado Backend-Web-SRV.
  • Los usuarios del equipo Workstation-Client1 iniciarán sesión en la máquina mediante la cuenta de Windows Active Directory.
  • A continuación, iniciarán un explorador (Microsoft Edge), navegarán a un sitio web ubicado en Web-Server, que es el nombre de alias usado para Primary-IIS-SRV y se autenticarán a través de autenticación de Windows integrados mediante Kerberos.
  • El sitio web ubicado en el servidor web realizará llamadas HTTP mediante las credenciales del usuario autenticado en API-Server (que es el alias de Backend-Web-SRV) para recuperar los datos de la aplicación en nombre de los usuarios, mediante la delegación de credenciales de Kerberos.

Los pasos siguientes le ayudarán a solucionar este escenario: la configuración funciona con Internet Explorer, pero cuando los usuarios adoptan Microsoft Edge, ya no pueden usar la característica de delegación de credenciales. Para usar la delegación de credenciales de Kerberos, consulte Solución de errores de Kerberos en Internet Explorer en primer lugar.

Delegación restringida o sin restricciones

En el escenario anterior, ambas configuraciones permiten a los usuarios delegar las credenciales de su sesión de usuario en la máquina Workstation-Client1 al servidor de API back-end mientras se conectan a través del servidor web front-end.

En una configuración de delegación kerberos sin restricciones, la identidad del grupo de aplicaciones se ejecuta en Web-Server y se configura en Active Directory para que sea de confianza para la delegación en cualquier servicio. La cuenta del grupo de aplicaciones que se ejecuta en Web-Server puede delegar las credenciales de los usuarios autenticados del sitio web hospedado en ese servidor en cualquier otro servicio de Active Directory. Por ejemplo, un servidor SMTP, un servidor de archivos, un servidor de bases de datos, otro servidor web, etc. Esto se denomina delegación sin restricciones porque la cuenta del grupo de aplicaciones tiene el permiso (no está entrenado) para delegar las credenciales a cualquier servicio que se pone en contacto.

En una configuración de delegación restringida, la cuenta de Active Directory que se usa como identidad del grupo de aplicaciones puede delegar las credenciales de los usuarios autenticados solo en una lista de servicios que se han autorizado para delegar. Si la aplicación web que reside en el servidor llamado Web-Server también debe ponerse en contacto con una base de datos y autenticarse en nombre del usuario, este nombre de entidad de seguridad de servicio (SPN) debe agregarse a la lista de servicios autorizados.

La delegación restringida es más segura que la delegación sin restricciones basada en el principio de privilegios mínimos. A una aplicación se le conceden los derechos que necesita para funcionar y nada más, mientras que la delegación sin restricciones permite a una aplicación ponerse en contacto con los recursos que no debe ponerse en contacto en nombre del usuario.

¿Cómo saber si el vale kerberos obtenido en el cliente para enviar al servidor web usa la delegación restringida o sin restricciones?

Use la herramienta de comandos klist presente en Windows para enumerar la memoria caché de vales kerberos del equipo cliente (Workstation-Client1 en el diagrama anterior). Busque un vale denominado HTTP/<Nombre del servidor> web. Nota: <El nombre del servidor> web es el SPN del servicio al que desea ponerse en contacto y autenticarse a través de Kerberos. El vale también contiene algunas marcas. Dos de ellos son de interés: forwardable y ok_as_delegate.

  • La primera marca, forwardable, indica que el KDC (centro de distribución de claves) puede emitir un nuevo vale con una nueva máscara de red si es necesario. Esto permite que un usuario inicie sesión en un sistema remoto y que el sistema remoto obtenga un nuevo vale en nombre del usuario para iniciar sesión en otro sistema back-end como si el usuario hubiera iniciado sesión en el sistema remoto localmente.

  • La segunda marca indica ok_as_delegate que la cuenta de servicio del servicio en la que el usuario intenta autenticarse (en el caso del diagrama anterior, la cuenta del grupo de aplicaciones del grupo de aplicaciones de IIS que hospeda la aplicación web) es de confianza para la delegación sin restricciones.

Si estos servicios usan delegación sin restricciones, los vales del equipo cliente contienen las ok_as_delegate marcas y forwardable . En la mayoría de los casos, cuando se configura la delegación restringida, los vales no contienen la ok_as_delegate marca, pero contienen la forwardable marca .

¿Por qué funciona la delegación sin restricciones en Internet Explorer y no en Microsoft Edge?

Cuando se intenta autenticar en un sitio web mediante la autenticación basada en Kerberos, el explorador llama a una API de Windows para configurar el contexto de autenticación. La API en cuestión es InitializeSecurityContext. Esta API puede recibir una serie de marcas para indicar si el explorador permite el delegatable vale que ha recibido el usuario. El vale se marca como delegatable porque el servicio al que el usuario intenta autenticarse tiene derecho a delegar las credenciales de una manera sin restricciones. Sin embargo, esto no significa que la aplicación que intenta autenticarse (en este caso, el explorador) debe usar esta capacidad.

De forma predeterminada, Internet Explorer pasa la marca a InitializeSecurityContext, que indica que si se puede delegar el vale, debe ser. Microsoft Edge de la versión 87 y posteriores no pasa la marca a InitializeSecurityContext solo porque el vale está marcado con la ok_as_delegate marca . No se recomienda usar la delegación sin restricciones en las aplicaciones porque proporciona a las aplicaciones más privilegios de los necesarios. Las aplicaciones podrían delegar la identidad del usuario en cualquier otro servicio del dominio y autenticarse como usuario, que no es necesario para la mayoría de las aplicaciones que usan la delegación de credenciales. Las aplicaciones deben ponerse en contacto solo con los servicios de la lista que se especificó al configurar la delegación restringida.

De forma predeterminada, Microsoft Edge funciona con delegación restringida, donde el sitio web de IIS que se ejecuta en Web-Server solo tiene derecho a ponerse en contacto con el sitio de API de back-end hospedado en API-Server, como se muestra en la configuración de la cuenta de identidad del grupo de aplicaciones de Active Directory que se muestra a continuación:

Captura de pantalla de la configuración de la cuenta de identidad del grupo de aplicaciones.

Habilitar Edge-Chromium para que funcione con la delegación sin restricciones en Active Directory

Con fines de compatibilidad, si debe mantener una aplicación mediante la delegación sin restricciones a través de Kerberos, habilite Microsoft Edge para permitir la delegación de vales. Los pasos siguientes se detallan en las secciones siguientes de este artículo:

  1. Instale las plantillas administrativas para el almacén central de directivas de grupo en Active Directory (si aún no está presente).
  2. Instale las plantillas administrativas de Microsoft Edge.
  3. Cree un nuevo objeto de directiva de grupo.
  4. Edite la configuración de la directiva de grupo para permitir la delegación sin restricciones al autenticarse en los servidores.
  5. (Opcional) Compruebe si Microsoft Edge usa las marcas de delegación correctas.

Paso 1: Instalar las plantillas administrativas para Active Directory

  1. Descargue las plantillas de Plantillas administrativas (.admx) (para Windows Server 2019).

  2. Descargue el instalador y extraiga el contenido en una carpeta de su elección. Simplemente puede extraerlo a la ubicación especificada predeterminada del paquete, que es C:\Archivos de programa (x86)\Directiva de grupo de Microsoft\Actualización de octubre de 2018 de Windows 10 (1809) v2\PolicyDefinitions.

  3. Una vez descomprimido el paquete, busque la carpeta Sysvol en el controlador de dominio. La ruta de acceso a la carpeta es C:\Windows\SYSVOL\sysvol\. Dentro de la carpeta Sysvol es una carpeta con el mismo nombre que el nombre de Active Directory (en el ejemplo aquí, Oddessy.local). Desde allí, vaya a la carpeta Directivas . Si no existe, cree una carpeta denominada Definiciones de directiva, como se muestra a continuación:

    Captura de pantalla de la carpeta de definiciones de directiva en Carpeta Directivas.

  4. Copie el contenido de la carpeta PolicyDefinitions (que se extrajo del instalador a la carpeta PolicyDefinitions ) que creó dentro del dominio en la carpeta sysvol del controlador de dominio.

    Nota:

    Los archivos extraídos por el instalador también contienen contenido localizado. Para ahorrar espacio, transfiera los archivos localizados solo para los idiomas deseados. Por ejemplo, la carpeta denominada fr-FR contiene todo el contenido localizado en francés.

  5. Una vez completada la transferencia, compruebe que las plantillas están disponibles en Active Directory. Para ello, abra el complemento Administración de directivas de grupo de Microsoft Management Console (presione Windows+R y escriba gpmc.msc para iniciar). Dentro de la administración de directivas de grupo, busque un objeto de directiva de grupo y edítelo.

    Captura de pantalla del objeto de directiva de grupo en el Editor de administración de directivas de grupo.

    Como se muestra en la captura de pantalla anterior, en el nodo Configuración del equipo, es un nodo Directivas y plantillas administrativas.

Paso 2: Instalar las plantillas administrativas de Microsoft Edge

Aunque es posible que tenga plantillas administrativas de directiva en el controlador de dominio para empezar, tendrá que instalar los archivos de directiva de Microsoft Edge para tener acceso a la directiva diseñada para habilitar la delegación sin restricciones de doble salto a través de este explorador. Para instalar los archivos de directiva de Microsoft Edge, siga los pasos:

  1. Vaya al sitio de descarga de Microsoft Edge para empresas.

  2. Seleccione la versión que desea descargar en la lista desplegable canal o versión . Se recomienda la versión estable más reciente.

  3. Seleccione la compilación que desee en la lista desplegable de compilación y, por último, el sistema operativo de destino en la lista desplegable de la plataforma . Una vez realizada la selección, aparecerán dos botones más (un botón y un vínculo).

    Captura de pantalla de la página de descarga e implementación de Microsoft Edge para empresas.

  4. Haga clic en GET POLICY FILES (OBTENER ARCHIVOS DE DIRECTIVA) y acepte el contrato de licencia para descargar el archivo llamado MicrosoftEdgePolicyTemplates.cab. Este archivo contiene los archivos de definición de directiva para Microsoft Edge.

  5. Haga doble clic en el archivo para explorar el contenido (un archivo ZIP con el mismo nombre).

  6. Extraiga el contenido del archivo ZIP en una carpeta del disco local. El contenido extraído contendrá una carpeta denominada Windows en la que encontrará una subcarpeta denominada Admx. Esto contendrá las plantillas administrativas, así como sus versiones localizadas (debe necesitarlas en un idioma distinto del inglés).

    Captura de pantalla de la carpeta admx.

  7. Transfiera los archivos .admx dentro de la misma carpeta en el directorio Sysvol donde se transfirieron las plantillas administrativas de la anterior (en el ejemplo anterior: C:\Windows\SYSVOL\sysvol\odessy.local\Policies\PolicyDefinitions).

  8. Abra el Editor de directivas de grupo de Active Directory y seleccione un objeto de directiva de grupo existente para su edición para comprobar la presencia de las plantillas de Microsoft Edge recién transferidas. Estos se ubicarán en una carpeta denominada Microsoft Edge situada debajo de la carpeta Plantillas administrativas en la vista de árbol:

    Captura de pantalla del elemento Microsoft Edge en el Editor de administración de directivas de grupo.

Paso 3: Crear un nuevo objeto de directiva de grupo

Aquí se muestra cómo crear un nuevo objeto de directiva de grupo mediante el complemento MMC del Administrador de directivas de grupo de Active Directory:

  1. Presione la tecla Windows+R para abrir el menú Ejecutar en el controlador de dominio.
  2. Escriba Gpmc.msc para abrir Microsoft Management Console y cargar el complemento Administrador de directivas de grupo de Active Directory.
  3. Busque el nodo Objetos de directiva de grupo en la vista de árbol de la consola y haga clic con el botón derecho en el nodo para abrir el menú contextual.
  4. Seleccione el elemento de menú Nuevo , rellene el nombre de la directiva de grupo que desea crear y, a continuación, haga clic en Aceptar.

Captura de pantalla del nuevo elemento de menú en el Editor de administración de directivas de grupo.

Paso 4: Editar la configuración de la directiva de grupo para permitir la delegación sin restricciones al autenticarse en servidores

El último paso es habilitar la directiva que permite al explorador Microsoft Edge pasar la ok_as_delegate marca a la InitializeSecurityContext llamada api al realizar la autenticación mediante Kerberos en un sitio web habilitado para Windows Integrado. Si no sabe si el explorador Microsoft Edge usa Kerberos para autenticarse (y no NTLM), consulte Solución de errores de Kerberos en Internet Explorer.

En el Editor de directivas de grupo de Active Directory, seleccione el objeto de directiva de grupo que se aplicará a los equipos dentro de Active Directory desde el que pretende permitir que los usuarios finales se autentiquen a través de la autenticación Kerberos y tengan sus credenciales delegadas a los servicios back-end a través de la delegación sin restricciones. La directiva que habilitará la delegación sin restricciones de Microsoft Edge se encuentra en la carpeta de autenticación Http de las plantillas de Microsoft Edge , como se muestra a continuación:

Captura de pantalla de la carpeta de autenticación de H T P en el Editor de administración de directivas de grupo.

Use esta opción para configurar una lista de servidores para los que se permite la delegación de vales kerberos.

Nota:

Se debe proporcionar una lista de servidores. En el ejemplo que se usa al principio de este artículo, tendría que agregar el nombre del servidor web a la lista para permitir que la aplicación web front-end Web-Server delegara las credenciales en el servidor de API de back-end.

Captura de pantalla de una lista de servidores.

Después de aplicar el objeto de directiva de grupo recién editada a los equipos cliente dentro del dominio, vaya a la página de autenticación de prueba en páginas de diagnóstico para la solución de problemas de autenticación integrada de Windows y descargue la página whoami.aspx del repositorio de ejemplos de ASP.net en GitHub. Producirá una configuración ImpersonationLevel de Delegate en lugar de Suplantar señalizar que ahora se permite la delegación de credenciales.

Captura de pantalla de la página de configuración ImpersonationLevel.

Para probar si la directiva se aplicó correctamente en la estación de trabajo cliente, abra una nueva pestaña de Microsoft Edge y escriba edge://policy.

Captura de pantalla de edge://policy página.

La AuthNegotiateDelegateAllowlist directiva debe establecerse para indicar los valores de los nombres de servidor para los que Microsoft Edge puede realizar la delegación de vales Kerberos. Si la directiva no aparece en la lista, no se ha implementado o se ha implementado en los equipos incorrectos.

Paso 5 (opcional): Compruebe si Microsoft Edge usa las marcas de delegación correctas.

Este es el paso de comprobación opcional o solución de problemas.

Una vez configurada e implementada la directiva, se deben seguir los pasos siguientes para comprobar si Microsoft Edge pasa las marcas de delegación correctas a IntializeSecurityContext. Los pasos usan herramientas que ya están integradas en Microsoft Edge o que están disponibles como servicios en línea.

  1. Use la característica de registro disponible en Microsoft Edge para registrar lo que hace el explorador al solicitar un sitio web. Para habilitar el registro:

    1. Abra una nueva ventana de Microsoft Edge y escriba edge://net-export/.

    2. Use la opción Incluir cookies y credenciales al realizar el seguimiento. Sin esta opción, se omitirán los datos de nivel de seguimiento de autenticación.

      Captura de pantalla de edge://net-export/ página.

    3. Haga clic en el botón Iniciar registro en disco y proporcione el nombre de archivo en el que desea guardar el seguimiento.

    4. Abra otra pestaña de Microsoft Edge, vaya al sitio web en el que desea realizar la autenticación de Windows integrada mediante Microsoft Edge.

    5. Una vez que haya intentado autenticarse, vuelva a la pestaña anterior donde se ha habilitado el seguimiento y haga clic en el botón Detener registro. La interfaz de seguimiento indicará dónde se ha escrito el archivo que contiene el seguimiento.

  2. Use el archivo JSON que contiene el seguimiento para ver qué parámetros ha pasado el explorador a la InitializeSecurityContext función al intentar autenticarse. Para analizar el seguimiento, use el netlog_viewer.

  3. Dentro del seguimiento analizado es un registro de eventos similar al siguiente:

    t=3076 [st=12]       +AUTH_LIBRARY_INIT_SEC_CTX  [dt=3]
                          --> flags = {"delegated":false,"mutual":false,"value":"0x00000000"}
                          --> spn = "HTTP/web-server.odessy.local"
    

    Este registro muestra lo siguiente:

    • AUTH_LIBRARY_INIT_SEC_CTX significa que el explorador llama a la InitializeSecurityContext función .
    • "delegated":false significa que el vale no debe delegarse incluso si el vale está marcado como delegatable.
    • "mutual":false significa que el cliente (explorador) no requiere que el servidor también se autentique en el cliente y demuestre su identidad. Solo el cliente debe autenticarse en el servidor para demostrar su identidad.
    • HTTP/web-server.odessy.local es el SPN que usa el explorador al realizar la llamada de autenticación.

Más información

Páginas de diagnóstico para la solución de problemas de autenticación integrada de Windows