]
Darran Lofthouse updated WFCORE-128:
------------------------------------
Fix Version/s: 1.0.0.Alpha9
Nonexistent ldap group causes authentication to fail in
security-realm
-----------------------------------------------------------------------
Key: WFCORE-128
URL:
https://issues.jboss.org/browse/WFCORE-128
Project: WildFly Core
Issue Type: Bug
Components: Domain Management
Affects Versions: 1.0.0.Alpha8
Reporter: Derek Horton
Assignee: Darran Lofthouse
Fix For: 1.0.0.Alpha9
The LdapGroupSearcher code will fail if it tries to lookup a group that
does not exist on the local ldap server.
This can happen when the ldap systems are configured as trusted domains.
Even though the security-realm is not configured to use the trusted domain
(it is configured to only look at a single ldap server), the
user's entry on one ldap server could point at a group that exists on
the other (trusted) ldap server.
The LdapGroupSearcher code attempts to lookup this role and it fails. This
failure is sent back to the http server which results in an HTTP 500 error
and leaves the user with no way to authenticate/login.
There is currently not a way to tell the group searcher code to ignore the
group/role that cannot be found.
2014-06-06 12:44:39,819 TRACE [org.jboss.as.domain.management.security] (XNIO-1 task-1)
Group found with distinguishedName=cn=TestManagedRole,ou=People,dc=my-ds-domain,dc=com
2014-06-06 12:44:39,821 TRACE [org.jboss.as.domain.management.security] (XNIO-1 task-1)
Failure supplementing Subject: javax.naming.NameNotFoundException: [LDAP: error code 32 -
No Such Object]; remaining name
'cn=TestManagedRole,ou=People,dc=my-ds-domain,dc=com'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3112) [rt.jar:1.7.0_45]
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3033)
[rt.jar:1.7.0_45]
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2840)
[rt.jar:1.7.0_45]
at com.sun.jndi.ldap.LdapCtx.c_getAttributes(LdapCtx.java:1332)
[rt.jar:1.7.0_45]
at
com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:231)
[rt.jar:1.7.0_45]
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:139)
[rt.jar:1.7.0_45]
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:127)
[rt.jar:1.7.0_45]
at
javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:142)
[rt.jar:1.7.0_45]
at
javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:142)
[rt.jar:1.7.0_45]
at
org.jboss.as.domain.management.security.LdapGroupSearcherFactory$PrincipalToGroupSearcher.search(LdapGroupSearcherFactory.java:256)
[wildfly-domain-management-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.management.security.LdapGroupSearcherFactory$PrincipalToGroupSearcher.search(LdapGroupSearcherFactory.java:191)
[wildfly-domain-management-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.management.security.LdapCacheService$NoCacheCache.search(LdapCacheService.java:223)
[wildfly-domain-management-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.management.security.LdapSubjectSupplementalService$LdapSubjectSupplemental.loadGroupEntries(LdapSubjectSupplementalService.java:218)
[wildfly-domain-management-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.management.security.LdapSubjectSupplementalService$LdapSubjectSupplemental.loadGroups(LdapSubjectSupplementalService.java:195)
[wildfly-domain-management-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.management.security.LdapSubjectSupplementalService$LdapSubjectSupplemental.loadGroups(LdapSubjectSupplementalService.java:188)
[wildfly-domain-management-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.management.security.LdapSubjectSupplementalService$LdapSubjectSupplemental.supplementSubject(LdapSubjectSupplementalService.java:163)
[wildfly-domain-management-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.management.security.SecurityRealmService$1.createSubjectUserInfo(SecurityRealmService.java:200)
[wildfly-domain-management-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.http.server.security.RealmIdentityManager.verify(RealmIdentityManager.java:155)
[wildfly-domain-http-interface-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.domain.http.server.security.RealmIdentityManager.verify(RealmIdentityManager.java:120)
[wildfly-domain-http-interface-8.1.0.Final.jar:8.1.0.Final]
at
io.undertow.security.impl.BasicAuthenticationMechanism.authenticate(BasicAuthenticationMechanism.java:110)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
org.jboss.as.domain.http.server.security.AuthenticationMechanismWrapper.authenticate(AuthenticationMechanismWrapper.java:57)
[wildfly-domain-http-interface-8.1.0.Final.jar:8.1.0.Final]
at
io.undertow.security.impl.SecurityContextImpl$AuthAttempter.transition(SecurityContextImpl.java:281)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.impl.SecurityContextImpl$AuthAttempter.transition(SecurityContextImpl.java:298)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.impl.SecurityContextImpl$AuthAttempter.access$100(SecurityContextImpl.java:268)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.impl.SecurityContextImpl.attemptAuthentication(SecurityContextImpl.java:131)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.impl.SecurityContextImpl.authTransition(SecurityContextImpl.java:106)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.impl.SecurityContextImpl.authenticate(SecurityContextImpl.java:99)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:50)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_45]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_45]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]