Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-1685

Authentication using LDAP security realm with SSL configured fails with ClassNotFoundException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 8.0.0.Alpha4
    • 8.0.0.Alpha2, 8.0.0.Alpha3
    • Management
    • None

      When a user configures security domain, which uses RealmDirect with configured LDAP authentication using SSL as described in https://issues.jboss.org/browse/AS7-5246, the authentication fails with ClassNotFoundException. Moreover the exception is only logged on TRACE level, which is the second issue here.

      IMO, the first problem can be simply solved by adding "org.jboss.as.domain-management" module dependency on a right place.

      javax.naming.CommunicationException: 127.0.0.1:10636 [Root exception is java.lang.ClassNotFoundException: org.jboss.as.domain.management.connections.ldap.ThreadLocalSSLSocketFactory from [Module "deployment.ldaps-authn-sd.war:main" from Service Module Loader]]
      at com.sun.jndi.ldap.Connection.<init>(Connection.java:224)
      at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:136)
      at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1600)
      at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2698)
      at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:316)
      at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:193)
      at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:211)
      at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:154)
      at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:84)
      at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
      at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
      at javax.naming.InitialContext.init(InitialContext.java:242)
      at javax.naming.InitialContext.<init>(InitialContext.java:216)
      at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
      at org.jboss.as.domain.management.connections.ldap.LdapConnectionManagerService.getConnection(LdapConnectionManagerService.java:112)
      at org.jboss.as.domain.management.connections.ldap.LdapConnectionManagerService.getConnection(LdapConnectionManagerService.java:93)
      at org.jboss.as.domain.management.security.UserLdapCallbackHandler.handle(UserLdapCallbackHandler.java:186)
      at org.jboss.as.domain.management.security.SecurityRealmService$1.handle(SecurityRealmService.java:168)
      at org.jboss.as.security.RealmDirectLoginModule.handle(RealmDirectLoginModule.java:175)
      at org.jboss.as.security.RealmDirectLoginModule.validatePassword(RealmDirectLoginModule.java:206)
      at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:281)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at javax.security.auth.login.LoginContext.invoke(LoginContext.java:784)
      at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203)
      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:698)
      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:696)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:695)
      at javax.security.auth.login.LoginContext.login(LoginContext.java:594)
      at org.jboss.security.authentication.JBossCachedAuthenticationManager.defaultLogin(JBossCachedAuthenticationManager.java:408)
      at org.jboss.security.authentication.JBossCachedAuthenticationManager.proceedWithJaasLogin(JBossCachedAuthenticationManager.java:345)
      at org.jboss.security.authentication.JBossCachedAuthenticationManager.authenticate(JBossCachedAuthenticationManager.java:333)
      at org.jboss.security.authentication.JBossCachedAuthenticationManager.isValid(JBossCachedAuthenticationManager.java:146)
      at org.jboss.as.web.security.JBossWebRealm.authenticate(JBossWebRealm.java:216)
      at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:178)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:447)
      at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
      at java.lang.Thread.run(Thread.java:722)
      Caused by: java.lang.ClassNotFoundException: org.jboss.as.domain.management.connections.ldap.ThreadLocalSSLSocketFactory from [Module "deployment.ldaps-authn-sd.war:main" from Service Module Loader]
      at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:196)
      at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:444)
      at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:432)
      at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:374)
      at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:119)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Class.java:264)
      at com.sun.jndi.ldap.VersionHelper12.loadClass(VersionHelper12.java:71)
      at com.sun.jndi.ldap.Connection.createSocket(Connection.java:284)
      at com.sun.jndi.ldap.Connection.<init>(Connection.java:201)
      ... 47 more

            ehugonne1@redhat.com Emmanuel Hugonnet
            ehugonne1@redhat.com Emmanuel Hugonnet
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: