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

Reply via email to