El SSO no funciona entre un navegador y un Keycloak usando una federación de usuarios con integración de Kerberos en un AD de Windows

El SSO no funciona entre un navegador y un Keycloak usando una federación de usuarios con integración de Kerberos en un AD de Windows

Estoy intentando que SSO funcione utilizando un navegador (Chrome o Firefox) y una capa de claves configurada con un dominio AD de federación de usuarios (kerberos está configurado).

Primero presento la descripción general de lo que tengo y luego agrego más detalles.

El resumen:
Llamando al punto final de autorización ".../auth/realms/test_realm/protocol/openid-connect/auth" y usando tcpdump puedo ver:

  1. El navegador envía una solicitud de obtención al punto final de autorización con los parámetros necesarios

  2. Keycloak responde correctamente:
    -con un 401 no autorizado
    -con el encabezado "WWW-Authenticate: Negotiate"

  3. Creo que el navegador envía correctamente una nueva solicitud de obtención:
    -con "Autorización: Negociar TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="
    Esto está enviando el token spnego

  4. Keycloak responde con un "200 OK", pero con la página de inicio de sesión y sin token ni la URL de devolución de llamada, no tengo errores en el registro de Keycloak.

P: ¿Qué se supone que debe responder keycloak aquí? Debería enviarse a la URL de devolución de llamada con algunas cookies comoKEYCLOAK_IDENTITyKEYCLOAK_SESSION, ¿bien? Con estas cookies puedo llamar al punto final del token para obtener el token y usarlo en la aplicación.

P: ¿Alguna idea de lo que falta? Sé que hay muchas piezas pero tal vez falta algo obvio.

Al iniciar sesión manualmente, llamo a un punto final de inicio de sesión/autenticación que devuelve las cookies KEYCLOAK_IDENTIT y KEYCLOAK_SESSION que puedo usar para llamar al punto final del token y obtener el token.
Estoy usando el mismo usuario que inició sesión desde el dominio de prueba, por lo que sé que keycloak puede autenticar al usuario probado.


Ahora con más detalles

Para configurar Keycloak seguí los documentos oficiales dehttps://www.keycloak.org/docs/latest/server_admin/

En la máquina cliente de Windows (navegador Chrome o Firefox, probé ambos):
-Agregué la URL a la lista blanca
-Estoy llamando al punto final de autorización con los parámetros necesarios

En el dominio AD de Windows Server 2019
-He creado un archivo de tabla de claves usando:
ktpass /out dominiopruebalocal_keytab_file.keytab /princ HTTP/[correo electrónico protegido]/mapuser keycloak_kerberos /pass "somepass" /crypto All /ptype KRB5_NT_PRINCIPAL /kvno 1
-El usuario keycloak_kerberos existe en mi dominio de prueba

En Linux rhel8.8 tengo keycloak 22.01
-Agregué la máquina Linux al dominio de prueba usando "realm join"
-Agregé la configuración de federación de usuarios para un AD LDAP que puede autenticar manualmente al usuario de prueba ldap
-Activé la integración de Kerberos con el principal y la tabla de claves creada desde la máquina AD
: agregó la información del dominio al archivo /etc/krb5.conf.

Puedo mostrar más detalles si es necesario, pero tengo que anonimizar la información.

información relacionada