¿Es posible esta configuración Kerberos / AD?

10

Tenemos una configuración de IDAM un poco complicada:

ingrese la descripción de la imagen aquí

Es decir, la máquina y el navegador del usuario final se encuentran en una red con el AD principal, y nuestra aplicación basada en Jetty y el AD con el que puede hablar (AD local) se ubican en la otra.

Hay una confianza bidireccional entre los dos AD. El navegador en la red principal tiene el dominio local en sitios confiables.

La configuración del servidor Jetty es la siguiente:

  • utiliza un archivo de tabla de claves generado contra un principal en el AD local
  • se ejecuta como un servicio de Windows bajo un usuario definido en el AD local
  • el dominio, el mapeo dominio-dominio y kdc se definen contra el dominio del AD local
  • utiliza spnego: isInitiator se establece en falso; doNotPrompt es verdadero; storeKey es cierto

El problema es:

  • como una prueba, el acceso al servidor desde un navegador dentro de la red local (es decir, ligada a la AD local) funciona - Kerberos información de depuración aparece en los registros, puedo ver correcta negociación de Kerberos en el tráfico HTTP, y el usuario se suscribe de forma automática . Brillante.
  • sin embargo , ¡acceder al servidor desde un navegador dentro de la red principal (que es como nuestros usuarios harán las cosas) no funciona! El navegador recupera una 401 unauth pero luego solicita credenciales, que cuando se ingresan dan una pantalla en blanco. Luego, hacer clic en la barra de direcciones y presionar Intro hace una de dos cosas, dependiendo de si las credenciales son para el AD remoto o local:

    • Las credenciales locales de AD luego inician sesión bien, con Kerberos desde cero en los registros (solicitud GET, respuesta 401 nouth, solicitud de encabezados Kerberos, etc.)
    • AD credenciales remotas no conectarse (petición GET, 401 unauth respuesta, lo que parece ser una cabecera NTLM: Authorization: Negotiate <60 or so random chars>)

De cualquier manera, ¡el hecho de que está provocando está mal!

¿Hay alguna explicación para estos síntomas? ¿Puede la configuración que tenemos hacer lo que queremos?

En cuanto a la descripción anterior, podría estar equivocada: cualquier configuración que he mencionado con respecto al servidor Jetty debería ser precisa, como lo hice. Estoy feliz de proporcionar más detalles. Cualquier configuración relacionada con AD o el navegador de red principal es potencialmente sospechosa, porque no está bajo mi control y me han informado de la configuración en lugar de haberla visto por mí mismo.

Robert Grant
fuente
¿TCP / 88 está abierto entre el navegador para los servidores enumerados en los resultados de DNS para _kerberos._tcp.OurITOrgDomain y _kerberos._tcp.partentdomain? ¿Puede conectarse desde el 'navegador' de la máquina con las credenciales que necesita para autenticarse en el servidor Jetty?
Jacob Evans el
roguelynn.com/words/explain-like-im-5-kerberos podría arrojar algo de luz sobre cómo su firewall puede estar causando sus problemas (nuevamente, 88 a ambos dcs de su cliente)
Jacob Evans
Hay demasiadas variables para una explicación detallada paso a paso sin tomar una captura de red. Luego verá rápidamente si los SPN están configurados correctamente o si el navegador debe configurarse para autenticarse silenciosamente.
user2320464

Respuestas:

3

Sin ver la captura de paquetes, supongo que el SPN de HTTP / www.website.com debe registrarse en la cuenta que ejecuta la aplicación. El equipo de servicios de directorio de Microsoft tiene una excelente publicación de varias partes que aborda este tema en la siguiente URL.

https://blogs.technet.microsoft.com/askds/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1/

Ejecute una captura de paquetes (netmon, wireshark) desde un cliente en cada entorno para identificar qué SPN se está buscando. Una vez que esté determinado, use el cmd setspn para registrarlo en la cuenta que ejecuta la aplicación.

FWIW, Kerberos solo funciona mientras está en la LAN. Si alguien necesita acceso donde los controladores de dominio no son accesibles, entonces querrá considerar un SSO como Shibboleth o ADFS.

EDITAR: como mencionó @ alex-h , los navegadores deberán configurarse para autenticarse silenciosamente a través de Kerberos.

  • Internet Explorer : aunque el artículo de TechNet no es específicamente para su aplicación, los pasos son los mismos.
  • Firefox : igual que el enlace de IE, no coincide exactamente pero los pasos son los mismos.

Por último, este es un problema común con las implementaciones de Microsoft Sharepoint. Quieren que el SSO a través de Kerberos ocurra en silencio una vez que los usuarios se hayan autenticado en el dominio. Por lo tanto, si las respuestas anteriores no resuelven su problema, intente revisar sus foros como los siguientes:

Kerberos en Chrome, Safari o Firefox

usuario2320464
fuente
¡Una buena respuesta, mejor que la mía!
Alex H
Gracias a los dos. Me llevará un par de días leer los documentos vinculados, ¡pero no he abandonado la pregunta ni nada!
Robert Grant
Uh, en realidad no fue así, pero creo que probablemente sea mejor aceptar esta respuesta, ya que la verdadera es un caso muy inusual que agregaré como una respuesta separada. ¡Muchas gracias!
Robert Grant