Repository navigation
Description
Describe the bug
I have an LDAP configuration with Active Directory which works well with keycloak 15.0.2 and Java 8.
I tested the same LDAP configuration with keycloak 15.1.1 and I had the following error when I made a request to test the authentication of the LDAP configuration.
I am getting the following error:
ERROR [KeycloakErrorHandler:65:default task-2] Uncaught server error: java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;
at org.keycloak.vault.DefaultVaultRawSecret.close(DefaultVaultRawSecret.java:90) [keycloak-services-15.1.1.jar:15.1.1]
at org.keycloak.vault.DefaultVaultTranscriber.getCharSecret(DefaultVaultTranscriber.java:84) [keycloak-services-15.1.1.jar:15.1.1]
at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.getVaultSecret(LDAPContextManager.java:108)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.createLdapContext(LDAPContextManager.java:72)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.getLdapContext(LDAPContextManager.java:100)
at org.keycloak.services.managers.LDAPServerCapabilitiesManager.testLDAP(LDAPServerCapabilitiesManager.java:99) [keycloak-services-15.1.1.jar:15.1.1]
at org.keycloak.services.resources.admin.RealmAdminResource.testLDAPConnection(RealmAdminResource.java:958) [keycloak-services-15.1.1.jar:15.1.1]
Version
15.1.1
Expected behavior
LDAP configuration should work in keycloak 15.1.1 with Java 8 as it is supported in the documentation:
https://www.keycloak.org/docs/latest/server_installation/#:~:text=Java%208%20JRE%20or%20Java%2011%20JRE
Actual behavior
The 'Test authentication' fails in keycloak 15.1.1 when Java 8 is used.
ERROR [KeycloakErrorHandler:65:default task-2] Uncaught server error: java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;
at org.keycloak.vault.DefaultVaultRawSecret.close(DefaultVaultRawSecret.java:90) [keycloak-services-15.1.1.jar:15.1.1]
at org.keycloak.vault.DefaultVaultTranscriber.getCharSecret(DefaultVaultTranscriber.java:84) [keycloak-services-15.1.1.jar:15.1.1]
at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.getVaultSecret(LDAPContextManager.java:108)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.createLdapContext(LDAPContextManager.java:72)
at org.keycloak.storage.ldap.idm.store.ldap.LDAPContextManager.getLdapContext(LDAPContextManager.java:100)
at org.keycloak.services.managers.LDAPServerCapabilitiesManager.testLDAP(LDAPServerCapabilitiesManager.java:99) [keycloak-services-15.1.1.jar:15.1.1]
at org.keycloak.services.resources.admin.RealmAdminResource.testLDAPConnection(RealmAdminResource.java:958) [keycloak-services-15.1.1.jar:15.1.1]
How to Reproduce?
Requirements:
Java 8
Keycloak 15.1.1
Steps:
Create an LDAP configuration in User Federation.
The 'Test connection' shall work fine.
'The 'Test authentication' fails and produces the error 'No such method error'.
Anything else?
No response
Activity
shubhamarora97 commentedon Jan 29, 2022
Is there any solution/workaround so that LDAP configuration works for keycloak 15.1.1 with Java 8 only?
hmlnarik commentedon Jan 30, 2022
Workaround: compile keycloak with JDK8 and use that distribution instead
Cause: JDK9 is not binary compatible with JDK8 in java.nio.Buffer methods
shubhamarora97 commentedon Feb 3, 2022
Thanks @hmlnarik. This workaround has worked for me and LDAP configuration was working fine after building the source code binaries with Java 8 and then trying it.