LDAP realm config in RHDG 8.3 fails with Unable to instantiate class 'com.sun.jndi.ldap.LdapCtxFactory'
Issue
- Getting below exception while configuring LDAP realm to access management console in RHDG 8.3.x
2023-04-21 19:35:39,667 ERROR (non-blocking-thread--p2-t159) [org.infinispan.rest.RestRequestHandler] ISPN012005: An error occurred while responding to the client java.util.concurrent.CompletionException: java.lang.RuntimeException: org.wildfly.security.http.HttpAuthenticationException: org.wildfly.security.http.HttpAuthenticationException: java.io.IOException: org.infinispan.commons.CacheConfigurationException: Unable to instantiate class 'com.sun.jndi.ldap.LdapCtxFactory'
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.RuntimeException: org.wildfly.security.http.HttpAuthenticationException: org.wildfly.security.http.HttpAuthenticationException: java.io.IOException: org.infinispan.commons.CacheConfigurationException: Unable to instantiate class 'com.sun.jndi.ldap.LdapCtxFactory'
at org.infinispan.server.security.ElytronHTTPAuthenticator.lambda$challenge$0(ElytronHTTPAuthenticator.java:120)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
... 5 more
... 10 more
Caused by: org.infinispan.commons.CacheConfigurationException: Unable to instantiate class 'com.sun.jndi.ldap.LdapCtxFactory'
at org.infinispan.commons.util.Util.getInstance(Util.java:261)
at org.infinispan.commons.util.Util.getInstance(Util.java:304)
at org.infinispan.server.context.ServerInitialContextFactoryBuilder.createInitialContextFactory(ServerInitialContextFactoryBuilder.java:43)
at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:729)
at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
at java.naming/javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
at org.wildfly.security.auth.realm.ldap.SimpleDirContextFactoryBuilder$SimpleDirContextFactory.createDirContext(SimpleDirContextFactoryBuilder.java:431)
at org.wildfly.security.auth.realm.ldap.SimpleDirContextFactoryBuilder$SimpleDirContextFactory.obtainDirContext(SimpleDirContextFactoryBuilder.java:350)
at org.infinispan.server.configuration.security.LdapRealmConfiguration.lambda$build$2(LdapRealmConfiguration.java:85)
at org.wildfly.security.auth.realm.ldap.LdapSecurityRealm.obtainContext(LdapSecurityRealm.java:211)
at org.wildfly.security.auth.realm.ldap.LdapSecurityRealm.access$600(LdapSecurityRealm.java:104)
at org.wildfly.security.auth.realm.ldap.LdapSecurityRealm$LdapRealmIdentity.exists(LdapSecurityRealm.java:638)
at org.infinispan.server.security.realm.CachingSecurityRealm.getRealmIdentity(CachingSecurityRealm.java:64)
at org.wildfly.security.auth.server.ServerAuthenticationContext.assignName(ServerAuthenticationContext.java:1223)
at org.wildfly.security.auth.server.ServerAuthenticationContext$UnassignedState.setPrincipal(ServerAuthenticationContext.java:1767)
at org.wildfly.security.auth.server.ServerAuthenticationContext.setAuthenticationPrincipal(ServerAuthenticationContext.java:416)
at org.wildfly.security.auth.server.ServerAuthenticationContext.setAuthenticationName(ServerAuthenticationContext.java:390)
at org.wildfly.security.auth.server.ServerAuthenticationContext.setAuthenticationName(ServerAuthenticationContext.java:374)
at org.wildfly.security.auth.server.ServerAuthenticationContext$1.handleOne(ServerAuthenticationContext.java:927)
... 14 more
Caused by: java.lang.IllegalAccessException: class org.infinispan.commons.util.Util cannot access class com.sun.jndi.ldap.LdapCtxFactory (in module java.naming) because module java.naming does not export com.sun.jndi.ldap to unnamed module @96def03
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:489)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.infinispan.commons.util.Util.getInstanceStrict(Util.java:285)
at org.infinispan.commons.util.Util.getInstance(Util.java:259)
... 33 more
Environment
- Red Hat Data Grid (RHDG)
- 8.3.x
- JDK 17
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.