This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/master by this push:
     new 7cc890a  ARTEMIS-2307 prefix not removed for security check
     new 847c83f  This closes #2631
7cc890a is described below

commit 7cc890ae6f96964c6b05a3aac2298f691e2567c0
Author: Justin Bertram <[email protected]>
AuthorDate: Mon Apr 22 14:54:33 2019 -0500

    ARTEMIS-2307 prefix not removed for security check
---
 .../core/server/impl/ServerSessionImpl.java        |  6 ++--
 .../tests/integration/client/CoreClientTest.java   | 39 ++++++++++++++++++++--
 2 files changed, 39 insertions(+), 6 deletions(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
index f6d8455..4f8e514 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
@@ -653,15 +653,15 @@ public class ServerSessionImpl implements ServerSession, 
FailureListener {
 
       if (durable) {
          // make sure the user has privileges to create this queue
-         securityCheck(addressInfo.getName(), name, 
CheckType.CREATE_DURABLE_QUEUE, this);
+         securityCheck(art.getName(), unPrefixedName, 
CheckType.CREATE_DURABLE_QUEUE, this);
       } else {
-         securityCheck(addressInfo.getName(), name, 
CheckType.CREATE_NON_DURABLE_QUEUE, this);
+         securityCheck(art.getName(), unPrefixedName, 
CheckType.CREATE_NON_DURABLE_QUEUE, this);
       }
 
       AddressSettings as = 
server.getAddressSettingsRepository().getMatch(art.getName().toString());
 
       if (as.isAutoCreateAddresses() && server.getAddressInfo(art.getName()) 
== null) {
-         securityCheck(addressInfo.getName(), name, CheckType.CREATE_ADDRESS, 
this);
+         securityCheck(art.getName(), unPrefixedName, 
CheckType.CREATE_ADDRESS, this);
       }
 
       server.checkQueueCreationLimit(getUsername());
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/CoreClientTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/CoreClientTest.java
index b7dfd98..abf604e 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/CoreClientTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/CoreClientTest.java
@@ -18,8 +18,10 @@ package org.apache.activemq.artemis.tests.integration.client;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -36,10 +38,15 @@ import 
org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
 import org.apache.activemq.artemis.api.core.client.ServerLocator;
 import org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl;
 import org.apache.activemq.artemis.core.config.Configuration;
+import org.apache.activemq.artemis.core.config.impl.SecurityConfiguration;
+import org.apache.activemq.artemis.core.security.Role;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
 import org.apache.activemq.artemis.core.server.ActiveMQServers;
+import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
 import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
 import org.apache.activemq.artemis.jms.client.ActiveMQTextMessage;
+import 
org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
+import org.apache.activemq.artemis.spi.core.security.jaas.InVMLoginModule;
 import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
 import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
 import org.apache.activemq.artemis.utils.ActiveMQThreadFactory;
@@ -154,6 +161,15 @@ public class CoreClientTest extends ActiveMQTestBase {
 
    @Test
    public void testCoreClientPrefixes() throws Exception {
+      internalTestCoreClientPrefixes(false);
+   }
+
+   @Test
+   public void testCoreClientPrefixesWithSecurity() throws Exception {
+      internalTestCoreClientPrefixes(true);
+   }
+
+   public void internalTestCoreClientPrefixes(boolean security) throws 
Exception {
 
       Configuration configuration = createBasicConfig();
       configuration.clearAcceptorConfigurations();
@@ -183,14 +199,31 @@ public class CoreClientTest extends ActiveMQTestBase {
 
       configuration.addAcceptorConfiguration("prefix", acceptor.toString());
 
-      ActiveMQServer server = createServer(configuration);
+      ActiveMQJAASSecurityManager securityManager = null;
+
+      if (security) {
+         configuration.setSecurityEnabled(true);
+
+         SecurityConfiguration securityConfiguration = new 
SecurityConfiguration();
+         securityConfiguration.addUser("myUser", "myPass");
+         securityConfiguration.addRole("myUser", "myrole");
+         securityManager = new 
ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), 
securityConfiguration);
+      }
+
+      ActiveMQServer server = addServer(new ActiveMQServerImpl(configuration, 
securityManager));
+
       server.start();
 
-      ServerLocator locator = ServerLocatorImpl.newLocator(locatorString);
+      Role myRole = new Role("myrole", true, true, true, true, true, true, 
true, true, true, true);
+      Set<Role> anySet = new HashSet<>();
+      anySet.add(myRole);
+      server.getSecurityRepository().addMatch(baseAddress, anySet);
+
+      ServerLocator locator = 
addServerLocator(ServerLocatorImpl.newLocator(locatorString));
 
       ClientSessionFactory sf = createSessionFactory(locator);
 
-      ClientSession session = sf.createSession(false, true, true);
+      ClientSession session = sf.createSession("myUser", "myPass", false, 
true, true, false, 0);
 
       Map<String, ClientConsumer> consumerMap = new HashMap<>();
 

Reply via email to