Repository: activemq-artemis
Updated Branches:
  refs/heads/2.6.x e4ccbb929 -> b80c29759


ARTEMIS-1970 Clean up LDAP connection in JAAS login module

(cherry picked from commit 2ff4faab058c330ee9df1bcaa5e3a37ab60cc714)


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b80c2975
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b80c2975
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b80c2975

Branch: refs/heads/2.6.x
Commit: b80c29759dae2298c2a41bd48ebb88223f4fa995
Parents: e4ccbb9
Author: gtully <[email protected]>
Authored: Fri Jul 6 12:38:20 2018 -0500
Committer: Clebert Suconic <[email protected]>
Committed: Thu Jul 19 10:06:40 2018 -0400

----------------------------------------------------------------------
 .../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/b80c2975/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/b80c2975/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

Reply via email to