Error in Keycloak LDAP Query - TLS Problem to LDAP

Hallo zusammen,

ich habe eine kleine Odysse hinter mir.
Ich habe eine Univention Instanz und mehrere extern gehostete Services (aka nicht in Univention) hier zuhause. IPAM und Nextcloud laufen jetzt schon erfolgreich mit SAML an dem Univention Server und jetzt sollte noch eine Wiki.js Instanz dazu.

Leider habe ich auch nach einer Woche es nicht hinbekommen, SAML in Wiki.js mit dem Univention Server zum Laufen zu bringen. Daher habe ich die Alternative Keycloak versuchen wollen, da wiki.js dafĂĽr eine extra Auth-Integration hat (sollte dann recht einfach sein). Leider scheint der Keycloak ein Problem bei der Kommunikation mit dem LDAP Server zu haben, ich bekomme diesen Fehler im Log:

2023-05-20 15:31:21,656 ERROR [org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager] (executor-thread-25) Could not negotiate TLS: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Ich hatte bisher LetsEncrypt über meine zentrale Traefik Instanz abgehandelt, dachte aber aufgrund dem Fehler, dass der Keycloak Container mit dem Self-Signed Cert von der Univention CA nichts anfangen kann. Also habe ich meinen Traefik umgestellt und LetsEncrypt direkt in UCS zum Laufen gebracht. Dann habe ich gemerkt, dass es gar keinen Schalter zur Nutzung des LE-Certs im LDAP gibt und ich das Problem damit gar nicht so einfach gelöst bekomme.

Daher: Kennt jemand den Fehler, den KeyCloak hier wirft?

Hi,

habe das Problem glaube ich gefunden. Keycloak wurde ja automatisch aus dem App Center installiert.
Dabei wurde in Keycloak ein Realm “ucs” mit der User Federation ldap-provider angelegt. Diese User Federation hat als Connection URL den Wert “ldap://ns1.univention-fqdn:7389” sowie “Enable STARTTLS: true” hinterlegt.

Hm. OK, er versucht also auf dem Non-SSL Port des slapd einen StartTLS. Scheinbar hängt er sich aber an dem verwendeten Zertifikat auf.

Also hab ich den Parameter “Enable STARTTLS” auf “false” gestellt. Und schon funktioniert die ldap Verbindung.
Aber: Das wäre ungeil, keine SSL gesicherte Verbindung zu benutzen.

Warum fehlt dem Keycloak hier also das Zertifikat des LDAP Servers? Könnt ihr dem Keycloak Container beibringen, dass er das Zertifikat auch als gültig ansieht? Oder könnte man dem LDAP Server vielleicht auch ein LetsEncrypt Zertifikat unterschieben?

GrĂĽĂźe
Christian Hase

1 Like

Hallo @hasechris92

Habe das selbe Problem.
UCS: 5.0.5:829
Keycloak: 22.0.3-ucs1

Nach dem Update bekam ich den Fehler

2023-10-10 18:53:39,037 WARN  [org.keycloak.services] (executor-thread-6) KC-SERVICES0013: Failed authentication: org.keycloak.models.ModelException: LDAP Query failed
...
Caused by: org.keycloak.models.ModelException: Querying of LDAP failed org.keycloak.storage.ldap.idm.query.internal.LDAPQuery@28cc5c47
....
2023-10-10 18:53:39,039 WARN  [org.keycloak.events] (executor-thread-6) type=LOGIN_ERROR, realmId=4459c606-01f0-45af-8a1a-06a0c3082d60, clientId=security-admin-console, userId=null, ipAddress=10.1..1.1, error=invalid_user_credentials, auth_method=openid-connect, auth_type=code, redirect_uri=https://example.domain.tld/admin/master/console/, code_id=8be7c703-7363-425d-9de8-e20dd3b43444, username=USER

Mit dem Befehl docker inspect keycloak kam ich an das lokale admin Passwort.
Danach konnte ich im GUI STARTTLS deaktivieren und der LDAP Query funktioniert wieder.

Wie hast du das Problem schlussendlich gelöst?

Beste GrĂĽsse
AlteSocke

Mastodon