LDAP realm config in RHDG 8.3 fails with Unable to instantiate class 'com.sun.jndi.ldap.LdapCtxFactory'

Solution Verified - Updated -

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.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content