You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ch...@apache.org on 2015/10/09 11:22:47 UTC

stratos git commit: Enable message broker authentication with username and password for PCA and AMQPConnector in Messaging

Repository: stratos
Updated Branches:
  refs/heads/stratos-4.1.x 56be6fc4e -> 4eec2ffe7


Enable message broker authentication with username and password for PCA and AMQPConnector in Messaging


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/4eec2ffe
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/4eec2ffe
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/4eec2ffe

Branch: refs/heads/stratos-4.1.x
Commit: 4eec2ffe7ee6d9e540e534406ce22684f30fea14
Parents: 56be6fc
Author: Chamila de Alwis <ch...@apache.org>
Authored: Fri Oct 9 14:50:04 2015 +0530
Committer: Chamila de Alwis <ch...@apache.org>
Committed: Fri Oct 9 14:50:42 2015 +0530

----------------------------------------------------------------------
 .../broker/connect/amqp/AmqpTopicConnector.java    | 12 +++++++++++-
 .../cartridge.agent/cartridge.agent/agent.conf     |  2 ++
 .../cartridge.agent/cartridge.agent/agent.py       | 17 +++++++++++++----
 .../cartridge.agent/cartridge.agent/constants.py   |  2 ++
 .../cartridge.agent/cartridge.agent/publisher.py   | 17 ++++++++++++++---
 .../cartridge.agent/cartridge.agent/subscriber.py  |  7 ++++++-
 .../modules/integration/test-integration/pom.xml   |  5 +++++
 .../tests/PythonAgentIntegrationTest.java          | 10 ++++++++++
 .../ADCMTAppTenantUserTestCase/agent.conf          |  2 ++
 .../src/test/resources/ADCMTAppTestCase/agent.conf |  2 ++
 .../src/test/resources/ADCTestCase/agent.conf      |  2 ++
 .../test/resources/AgentStartupTestCase/agent.conf |  2 ++
 .../src/test/resources/common/jndi.properties      |  2 ++
 .../kubernetes-clusters/kubernetes-cluster-1.json  |  8 ++++++++
 .../kubernetes-clusters/kubernetes-cluster-2.json  |  8 ++++++++
 .../kubernetes-cluster-ec2.json                    |  8 ++++++++
 .../cartridge-docker-images/base-image/files/run   | 12 ++++++++++++
 17 files changed, 109 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/broker/connect/amqp/AmqpTopicConnector.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/broker/connect/amqp/AmqpTopicConnector.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/broker/connect/amqp/AmqpTopicConnector.java
index 7f2eb2f..6e91040 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/broker/connect/amqp/AmqpTopicConnector.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/broker/connect/amqp/AmqpTopicConnector.java
@@ -44,6 +44,9 @@ public abstract class AmqpTopicConnector implements TopicConnector {
     private TopicConnection topicConnection;
     private InitialContext initialContext;
 
+    private String mbUsername = null;
+    private String mbPassword = null;
+
     @Override
     public void create() {
         try {
@@ -53,6 +56,8 @@ public abstract class AmqpTopicConnector implements TopicConnector {
                 jndiPropFileDir = CarbonUtils.getCarbonHome() + File.separator + "repository" + File.separator + "conf";
             }
             Properties environment = MessagingUtil.getProperties(jndiPropFileDir + File.separator + "jndi.properties");
+            mbUsername = environment.getProperty("java.naming.security.principal");
+            mbPassword  =environment.getProperty("java.naming.security.credentials");
             environment.put("org.wso2.carbon.context.RequestBaseContext", "true"); // always returns the base context.
             initialContext = new InitialContext(environment);
             // Lookup connection factory
@@ -73,7 +78,12 @@ public abstract class AmqpTopicConnector implements TopicConnector {
     @Override
     public void connect() {
         try {
-            topicConnection = connectionFactory.createTopicConnection();
+            if (StringUtils.isNotEmpty(mbUsername)){
+                topicConnection = connectionFactory.createTopicConnection(mbUsername, mbPassword);
+            }else{
+                topicConnection = connectionFactory.createTopicConnection();
+            }
+
             topicConnection.setExceptionListener(new ExceptionListener() {
                 @Override
                 public void onException(JMSException e) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
index 926ea96..f16aa43 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.conf
@@ -18,6 +18,8 @@
 [agent]
 mb.ip                                 =MB-IP
 mb.port                               =MB-PORT
+mb.username                           =MB-USERNAME
+mb.password                           =MB-PASSWORD
 listen.address                        =LISTEN_ADDR
 thrift.receiver.urls                  =CEP-URLS
 thrift.server.admin.username          =CEP-ADMIN-USERNAME

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py
index b8cec20..1e58dba 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/agent.py
@@ -44,11 +44,20 @@ class CartridgeAgent(threading.Thread):
 
         mb_ip = Config.read_property(constants.MB_IP)
         mb_port = Config.read_property(constants.MB_PORT)
+        mb_username = Config.read_property(constants.MB_USERNAME, False)
+        mb_password = Config.read_property(constants.MB_PASSWORD, False)
 
-        self.__inst_topic_subscriber = EventSubscriber(constants.INSTANCE_NOTIFIER_TOPIC, mb_ip, mb_port)
-        self.__tenant_topic_subscriber = EventSubscriber(constants.TENANT_TOPIC, mb_ip, mb_port)
-        self.__app_topic_subscriber = EventSubscriber(constants.APPLICATION_SIGNUP, mb_ip, mb_port)
-        self.__topology_event_subscriber = EventSubscriber(constants.TOPOLOGY_TOPIC, mb_ip, mb_port)
+        self.__inst_topic_subscriber = \
+            EventSubscriber(constants.INSTANCE_NOTIFIER_TOPIC, mb_ip, mb_port, mb_username, mb_password)
+
+        self.__tenant_topic_subscriber = \
+            EventSubscriber(constants.TENANT_TOPIC, mb_ip, mb_port, mb_username, mb_password)
+
+        self.__app_topic_subscriber = \
+            EventSubscriber(constants.APPLICATION_SIGNUP, mb_ip, mb_port, mb_username, mb_password)
+
+        self.__topology_event_subscriber = \
+            EventSubscriber(constants.TOPOLOGY_TOPIC, mb_ip, mb_port, mb_username, mb_password)
 
         self.__event_handler = EventHandler()
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
index 2fdeba8..a2709bf 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/constants.py
@@ -21,6 +21,8 @@ EXTENSIONS_DIR = "extensions.dir"
 
 MB_IP = "mb.ip"
 MB_PORT = "mb.port"
+MB_USERNAME = "mb.username"
+MB_PASSWORD = "mb.password"
 
 CARTRIDGE_KEY = "CARTRIDGE_KEY"
 APPLICATION_ID = "APPLICATION_ID"

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py
index 00b5fba..6a015f4 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py
@@ -24,7 +24,6 @@ import healthstats
 import constants
 from config import Config
 
-
 log = LogFactory().get_log(__name__)
 
 started = False
@@ -174,7 +173,7 @@ def publish_instance_ready_to_shutdown_event():
         cluster_instance_id = Config.cluster_instance_id
         network_partition_id = Config.network_partition_id
         partition_id = Config.partition_id
-        
+
         instance_shutdown_event = InstanceReadyToShutdownEvent(
             service_name,
             cluster_id,
@@ -204,11 +203,23 @@ class EventPublisher:
     """
     Handles publishing events to topics to the provided message broker
     """
+
     def __init__(self, topic):
         self.__topic = topic
 
     def publish(self, event):
         mb_ip = Config.read_property(constants.MB_IP)
         mb_port = Config.read_property(constants.MB_PORT)
+        mb_username = Config.read_property(constants.MB_USERNAME, False)
+        mb_password = Config.read_property(constants.MB_PASSWORD, False)
+        if mb_username is None:
+            auth = None
+        else:
+            auth = {"username": mb_username, "password": mb_password}
+
         payload = event.to_json()
-        publish.single(self.__topic, payload, hostname=mb_ip, port=mb_port)
+        publish.single(self.__topic,
+                       payload,
+                       hostname=mb_ip,
+                       port=mb_port,
+                       auth=auth)

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/subscriber.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/subscriber.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/subscriber.py
index 93d219b..908a44c 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/subscriber.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/subscriber.py
@@ -28,7 +28,7 @@ class EventSubscriber(threading.Thread):
     register event handlers for various events.
     """
 
-    def __init__(self, topic, ip, port):
+    def __init__(self, topic, ip, port, username, password):
         threading.Thread.__init__(self)
 
         self.__event_queue = Queue(maxsize=0)
@@ -41,6 +41,8 @@ class EventSubscriber(threading.Thread):
         self.__subscribed = False
         self.__ip = ip
         self.__port = port
+        self.__username = username
+        self.__password = password
 
     def run(self):
         #  Start the event executor thread
@@ -48,6 +50,9 @@ class EventSubscriber(threading.Thread):
         self.__mb_client = mqtt.Client()
         self.__mb_client.on_connect = self.on_connect
         self.__mb_client.on_message = self.on_message
+        if self.__username is not None:
+            self.log.debug("Message broker credentials are... %s:%s" % (self.__username, self.__password))
+            self.__mb_client.username_pw_set(self.__username, self.__password)
 
         self.log.debug("Connecting to the message broker with address %r:%r" % (self.__ip, self.__port))
         self.__mb_client.connect(self.__ip, self.__port, 60)

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/products/python-cartridge-agent/modules/integration/test-integration/pom.xml
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/test-integration/pom.xml b/products/python-cartridge-agent/modules/integration/test-integration/pom.xml
index 035542a..5b9d0ed 100755
--- a/products/python-cartridge-agent/modules/integration/test-integration/pom.xml
+++ b/products/python-cartridge-agent/modules/integration/test-integration/pom.xml
@@ -143,6 +143,11 @@
             <version>5.10.0</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-jaas</artifactId>
+            <version>5.10.0</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.stratos</groupId>
             <artifactId>org.apache.stratos.messaging</artifactId>
             <version>${project.version}</version>

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java
index 310a232..0cc8dc3 100644
--- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java
+++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java
@@ -18,7 +18,10 @@
  */
 package org.apache.stratos.python.cartridge.agent.integration.tests;
 
+import org.apache.activemq.broker.BrokerPlugin;
 import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.security.AuthenticationUser;
+import org.apache.activemq.security.SimpleAuthenticationPlugin;
 import org.apache.commons.exec.*;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
@@ -211,9 +214,16 @@ public class PythonAgentIntegrationTest {
     }
 
     protected void startBroker() throws Exception {
+        System.setProperty("mb.username", "system");
+        System.setProperty("mb.password", "manager");
+
         broker = new BrokerService();
         broker.addConnector(amqpBindAddress);
         broker.addConnector(mqttBindAddress);
+        AuthenticationUser authenticationUser = new AuthenticationUser("system", "manager", "users,admins");
+        List<AuthenticationUser> authUserList = new ArrayList<>();
+        authUserList.add(authenticationUser);
+        broker.setPlugins(new BrokerPlugin[]{new SimpleAuthenticationPlugin(authUserList)});
         broker.setBrokerName("testBroker");
         broker.setDataDirectory(
                 PythonAgentIntegrationTest.class.getResource(PATH_SEP).getPath() + PATH_SEP + ".." + PATH_SEP +

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTenantUserTestCase/agent.conf
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTenantUserTestCase/agent.conf b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTenantUserTestCase/agent.conf
index 89eeae3..b5efb1c 100755
--- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTenantUserTestCase/agent.conf
+++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTenantUserTestCase/agent.conf
@@ -18,6 +18,8 @@
 [agent]
 mb.ip                                 =localhost
 mb.port                               =1885
+mb.username                           =system
+mb.password                           =manager
 listen.address                        =localhost
 thrift.receiver.urls                  =localhost:7712
 thrift.server.admin.username          =admin

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTestCase/agent.conf
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTestCase/agent.conf b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTestCase/agent.conf
index 452129d..7362697 100755
--- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTestCase/agent.conf
+++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCMTAppTestCase/agent.conf
@@ -18,6 +18,8 @@
 [agent]
 mb.ip                                 =localhost
 mb.port                               =1885
+mb.username                           =system
+mb.password                           =manager
 listen.address                        =localhost
 thrift.receiver.urls                  =localhost:7712
 thrift.server.admin.username          =admin

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCTestCase/agent.conf
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCTestCase/agent.conf b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCTestCase/agent.conf
index 42922ec..d01a246 100755
--- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCTestCase/agent.conf
+++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/ADCTestCase/agent.conf
@@ -18,6 +18,8 @@
 [agent]
 mb.ip                                 =localhost
 mb.port                               =1885
+mb.username                           =system
+mb.password                           =manager
 listen.address                        =localhost
 thrift.receiver.urls                  =localhost:7712
 thrift.server.admin.username          =admin

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/AgentStartupTestCase/agent.conf
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/AgentStartupTestCase/agent.conf b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/AgentStartupTestCase/agent.conf
index 41dfa38..abed7c9 100755
--- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/AgentStartupTestCase/agent.conf
+++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/AgentStartupTestCase/agent.conf
@@ -18,6 +18,8 @@
 [agent]
 mb.ip                                 =localhost
 mb.port                               =1885
+mb.username                           =system
+mb.password                           =manager
 listen.address                        =localhost
 thrift.receiver.urls                  =localhost:7712
 thrift.server.admin.username          =admin

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/common/jndi.properties
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/common/jndi.properties b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/common/jndi.properties
index beefe3c..131b8da 100755
--- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/common/jndi.properties
+++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/resources/common/jndi.properties
@@ -20,3 +20,5 @@
 connectionfactoryName=TopicConnectionFactory
 java.naming.provider.url=tcp://localhost:61617
 java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
+java.naming.security.principal=system
+java.naming.security.credentials=manager

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/samples/kubernetes-clusters/kubernetes-cluster-1.json
----------------------------------------------------------------------
diff --git a/samples/kubernetes-clusters/kubernetes-cluster-1.json b/samples/kubernetes-clusters/kubernetes-cluster-1.json
index ee8f3a1..be09d5f 100644
--- a/samples/kubernetes-clusters/kubernetes-cluster-1.json
+++ b/samples/kubernetes-clusters/kubernetes-cluster-1.json
@@ -41,6 +41,14 @@
       "value": "1883"
     },
     {
+      "name": "payload_parameter.MB_USERNAME",
+      "value": "system"
+    },
+    {
+      "name": "payload_parameter.MB_PASSWORD",
+      "value": "manager"
+    },
+    {
       "name": "payload_parameter.CEP_URLS",
       "value": "172.17.8.1:7711"
     },

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/samples/kubernetes-clusters/kubernetes-cluster-2.json
----------------------------------------------------------------------
diff --git a/samples/kubernetes-clusters/kubernetes-cluster-2.json b/samples/kubernetes-clusters/kubernetes-cluster-2.json
index 9614771..4107da8 100644
--- a/samples/kubernetes-clusters/kubernetes-cluster-2.json
+++ b/samples/kubernetes-clusters/kubernetes-cluster-2.json
@@ -41,6 +41,14 @@
       "value": "1884"
     },
     {
+      "name": "payload_parameter.MB_USERNAME",
+      "value": "system"
+    },
+    {
+      "name": "payload_parameter.MB_PASSWORD",
+      "value": "manager"
+    },
+    {
       "name": "payload_parameter.CEP_URLS",
       "value": "172.17.8.1:7711"
     },

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/samples/kubernetes-clusters/kubernetes-cluster-ec2.json
----------------------------------------------------------------------
diff --git a/samples/kubernetes-clusters/kubernetes-cluster-ec2.json b/samples/kubernetes-clusters/kubernetes-cluster-ec2.json
index dada472..1f65a53 100644
--- a/samples/kubernetes-clusters/kubernetes-cluster-ec2.json
+++ b/samples/kubernetes-clusters/kubernetes-cluster-ec2.json
@@ -49,6 +49,14 @@
       "value": "1883"
     },
     {
+      "name": "payload_parameter.MB_USERNAME",
+      "value": "system"
+    },
+    {
+      "name": "payload_parameter.MB_PASSWORD",
+      "value": "manager"
+    },
+    {
       "name": "payload_parameter.CEP_URLS",
       "value": "54.179.197.243:7711"
     },

http://git-wip-us.apache.org/repos/asf/stratos/blob/4eec2ffe/tools/docker-images/cartridge-docker-images/base-image/files/run
----------------------------------------------------------------------
diff --git a/tools/docker-images/cartridge-docker-images/base-image/files/run b/tools/docker-images/cartridge-docker-images/base-image/files/run
index 44c3414..0b6151e0 100755
--- a/tools/docker-images/cartridge-docker-images/base-image/files/run
+++ b/tools/docker-images/cartridge-docker-images/base-image/files/run
@@ -186,6 +186,18 @@ else
 	sed -i "s/LOG_LEVEL/${LOG_LEVEL}/g" ${PCA_HOME}/logging.ini
 fi
 
+if [ -z "${MB_USERNAME}" ]; then
+	sed -i "s/MB-USERNAME/ /g" ${PCA_HOME}/agent.conf
+else
+	sed -i "s#MB-USERNAME#${MB_USERNAME}#g" ${PCA_HOME}/agent.conf
+fi
+
+if [ -z "${MB_PASSWORD}" ]; then
+	sed -i "s/MB-PASSWORD/ /g" ${PCA_HOME}/agent.conf
+else
+	sed -i "s#MB-PASSWORD#${MB_PASSWORD}#g" ${PCA_HOME}/agent.conf
+fi
+
 # copy custom plugins to PCA
 cp -R /mnt/plugins ${PCA_HOME}/