Repository: activemq-artemis Updated Branches: refs/heads/master a63b0315c -> ae29edf1b
ARTEMIS-1970 Clean up LDAP connection in JAAS login module Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/2ff4faab Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/2ff4faab Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/2ff4faab Branch: refs/heads/master Commit: 2ff4faab058c330ee9df1bcaa5e3a37ab60cc714 Parents: a63b031 Author: gtully <[email protected]> Authored: Fri Jul 6 12:38:20 2018 -0500 Committer: Justin Bertram <[email protected]> Committed: Fri Jul 6 13:39:34 2018 -0500 ---------------------------------------------------------------------- .../spi/core/security/jaas/LDAPLoginModule.java | 1 + .../core/security/jaas/LDAPLoginModuleTest.java | 24 ++++++++++++++++++++ 2 files changed, 25 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2ff4faab/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/security/jaas/LDAPLoginModule.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/security/jaas/LDAPLoginModule.java b/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/security/jaas/LDAPLoginModule.java index cc3c824..f8d7db5 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/security/jaas/LDAPLoginModule.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/security/jaas/LDAPLoginModule.java @@ -220,6 +220,7 @@ public class LDAPLoginModule implements LoginModule { private void clear() { username = null; userAuthenticated = false; + closeContext(); } @Override http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2ff4faab/artemis-server/src/test/java/org/apache/activemq/artemis/core/security/jaas/LDAPLoginModuleTest.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/security/jaas/LDAPLoginModuleTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/security/jaas/LDAPLoginModuleTest.java index 4fbd2c8..97be299 100644 --- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/security/jaas/LDAPLoginModuleTest.java +++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/security/jaas/LDAPLoginModuleTest.java @@ -45,6 +45,7 @@ import org.apache.directory.server.annotations.CreateTransport; import org.apache.directory.server.core.annotations.ApplyLdifFiles; import org.apache.directory.server.core.integ.AbstractLdapTestUnit; import org.apache.directory.server.core.integ.FrameworkRunner; +import org.jboss.logging.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -60,6 +61,8 @@ import static org.junit.Assert.fail; @ApplyLdifFiles("test.ldif") public class LDAPLoginModuleTest extends AbstractLdapTestUnit { + private static final Logger logger = Logger.getLogger(LDAPLoginModuleTest.class); + private static final String PRINCIPAL = "uid=admin,ou=system"; private static final String CREDENTIALS = "secret"; @@ -109,6 +112,8 @@ public class LDAPLoginModuleTest extends AbstractLdapTestUnit { @Test public void testLogin() throws LoginException { + logger.info("num session: " + ldapServer.getLdapSessionManager().getSessions().length); + LoginContext context = new LoginContext("LDAPLogin", new CallbackHandler() { @Override public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { @@ -125,6 +130,24 @@ public class LDAPLoginModuleTest extends AbstractLdapTestUnit { }); context.login(); context.logout(); + + assertTrue("no sessions after logout", waitForSessions(0)); + } + + private boolean waitForSessions(int expected) { + final long expiry = System.currentTimeMillis() + 5000; + int numSession = ldapServer.getLdapSessionManager().getSessions().length; + while (numSession != expected && System.currentTimeMillis() < expiry) { + try { + TimeUnit.MILLISECONDS.sleep(100); + } catch (InterruptedException ok) { + break; + } + numSession = ldapServer.getLdapSessionManager().getSessions().length; + logger.info("num session " + numSession); + + } + return numSession == expected; } @Test @@ -150,6 +173,7 @@ public class LDAPLoginModuleTest extends AbstractLdapTestUnit { return; } fail("Should have failed authenticating"); + assertTrue("no sessions after logout", waitForSessions(0)); } @Test
