Keycloak - Nach Migration kein Kerberos negotiate mehr im Webbrowser

Hallo Leute,

UCS version is 5.0-5 errata885

hatte mir heute den Tag reserviert um auf Keycloak umzustellen. Nachdem es in 5.2 ohnehin nur mehr das gibt, lieber gleich als dann Stress haben. Ich habe die Migration laut Doku durchgeführt.

Leider funktioniert die Kerberos Auth der Linuxclients (Kubuntu 22.04) über den Webbrowser von UCS Portalen nicht mehr. Sprich das lokale Kerberosticket wird nicht an den Browser richtig weiter gereicht und man muss sich wieder mit Benutzer und Passwort anmelden. Hab mir dazu natürlich auch nochmal die Doku angesehen und die verschiedensten Browser getestet.

Getestete Browser:

  • Firefox
  • Google-Chrome
  • Brave

Ich hab mir dann zum Test ein Windows 11 aufgesetzt. Hier funktioniert Firefox mit den network.negotiate-auth.trusted-uris sofort. Edge brauchte ein wenig Nachhilfe mit der GPO. Somit ist es ein Thema des Linuxclients.

Was muss am Client noch eingestellt werden, damit dies wieder auch mit Keycloak funktioniert? Andere Kerberosdienste die mit Apache2 auf Ubuntu ausgeliefert werden funktionieren normal. Wo setzte ich an?

Hier eine Standard Clientconfig:

[libdefaults]
    default_realm = OSIT.CC
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
    default_tkt_enctypes = arcfour-hmac-md5 des-cbc-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md4 des3-cbc-sha1 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
    permitted_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md4 des-cbc-md5 des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
    allow_weak_crypto=true
    rdns = false

[realms]
OSIT.CC = {
   kdc = dc1.osit.cc dc2.osit.cc dc3.osit.cc
   admin_server = dc1.osit.cc
   kpasswd_server = dc1.osit.cc

Vielen lieben Dank
lg

Ist das Thema noch keinem nach der Migration aufgefallen oder hab nur ich das in meiner Umgebung?

Hab nun zum Test eine völlig neue und frische UCS Umgebung mit Keycloak, einem Ubuntu und einen Windowsclient aufgesetzt.

Fazit: Auch hier funktioniert die Delegierung des Kerberostickets über Keycloak bei Linux in keinem Webbrowser. Windows 11 tut. Kerberos über anderen Webinterface (wo nicht Keycloak dazwischen ist) tut auch in Linux.

Was fehlt mir da? Übersehe ich etwas? Oder muss fehlt da von UCS noch ein Part in der Programmierung?

Hi

ja, auf meinem “Ubuntu 22.04” client habe ich das gleiche Problem, bis ich folgendes in der /etc/krb5.conf ergänze (bin noch nicht ganz sicher warum):

[libdefaults]
  ...
  dns_canonicalize_hostname = false
  ...

Das kann man auch erst einmal mit einer persönlichen krb5.conf testen:

$ export KRB5_CONFIG=/tmp/krb5.conf
$ kinit ...
$ firefox

Hilft das?

VG
Felix

2 Likes

Hi, danke für die Antwort. Ich hab das in den letzten Tagen inkl. heute ausführlich getestet. Es lag nicht an der Option “dns_canonicalize_hostname = false” → hatte auf das Verhalten keine Auswirkung. Es hat mich aber dazu motiviert mir das ganze nochmal genauer anzusehen.

Ein guter Anlauf war die Doku von Kerberos hier: krb5.conf — MIT Kerberos Documentation

Im Endeffekt war es dieser Part:

- default_tkt_enctypes = arcfour-hmac-md5 des-cbc-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md4 des3-cbc-sha1 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
- permitted_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md4 des-cbc-md5 des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
- allow_weak_crypto=true

+ #default_tkt_enctypes = arcfour-hmac-md5 des-cbc-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md4 des3-cbc-sha1 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
+ #permitted_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md4 des-cbc-md5 des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
+ allow_weak_crypto=false

Es lag also an der Option das “schwache Verschlüsselung” erlaubt wird. Diese Optionen werden direkt beim Join von “univention-domain-join” geschrieben.

Somit wäre eine Änderung des Verhaltens von “univention-domain-join” für die korrekte Funktion von Browser negotiate mit Keycloak erforderlich. Damit wird dann auch das Kerberos Ticket erfolgreich weiter gereicht und die Sicherheit zur Verschlüsselung der wird damit für Kerberos auch erhöht.

:grinning: :sunglasses:

Bin froh dass, das Zeug nun endlich tut. Macht definitiv Spass!!

Ah, OK, danke!

Gut das es jetzt funktioniert, ich habe mal ein “Issue” bei uns aufgemacht - wir sollten das “univention-domain-join” entsprechend anpassen.

VG
Felix

1 Like

Moin,

der Bug ist nun auch hier öffentlich erfasst, sobald wir das behoben haben wird dieser entsprechend aktualisiert.
Danke auch von mir für das Testen!

Gruß
Jan-Luca

1 Like

Perfekt. Dank dir. :slight_smile: