diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala
index c730c55e5b49a010dc9dcc186a60d557934d7063..d82dcab66c2146cfa498ac64cb143c033fcd9ba3 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala
@@ -297,6 +297,10 @@ class ReceivedJsonMsgHandlerActor(
       case CreateGroupChatReqMsg.NAME =>
         routeGenericMsg[CreateGroupChatReqMsg](envelope, jsonNode)
 
+      case ValidateConnAuthTokenSysMsg.NAME =>
+        println("************** RECEIVED ValidateConnAuthTokenSysMsg.NAME")
+        routeGenericMsg[ValidateConnAuthTokenSysMsg](envelope, jsonNode)
+
       case _ =>
         log.error("Cannot route envelope name " + envelope.name)
       // do nothing
diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/SystemMsgs.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/SystemMsgs.scala
index fb1dc6af3b30b0ebea20a2e7ebe83a09c8c83f40..333c95a5d87c98bdafde054c905c4eb1077bf0f8 100755
--- a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/SystemMsgs.scala
+++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/SystemMsgs.scala
@@ -128,4 +128,15 @@ case class CheckAlivePongSysMsgBody(system: String, timestamp: Long)
 object RecordingChapterBreakSysMsg { val NAME = "RecordingChapterBreakSysMsg" }
 case class RecordingChapterBreakSysMsg(header: BbbCoreHeaderWithMeetingId,
                                 body: RecordingChapterBreakSysMsgBody) extends BbbCoreMsg
-case class RecordingChapterBreakSysMsgBody(meetingId: String, timestamp: Long)
\ No newline at end of file
+case class RecordingChapterBreakSysMsgBody(meetingId: String, timestamp: Long)
+
+object ValidateConnAuthTokenSysMsg { val NAME = "ValidateConnAuthTokenSysMsg" }
+case class ValidateConnAuthTokenSysMsg(header: BbbClientMsgHeader,
+                                       body: ValidateConnAuthTokenSysMsgBody) extends StandardMsg
+case class ValidateConnAuthTokenSysMsgBody(meetingId: String, userId: String, authToken: String, conn: String)
+
+object ValidateConnAuthTokenSysRespMsg { val NAME = "ValidateConnAuthTokenSysRespMsg" }
+case class ValidateConnAuthTokenSysRespMsg(header: BbbCoreHeaderWithMeetingId,
+                                       body: ValidateConnAuthTokenSysRespMsgBody) extends BbbCoreMsg
+case class ValidateConnAuthTokenSysRespMsgBody(meetingId: String, userId: String,
+                                               authToken: String, conn: String, authzed: Boolean)
\ No newline at end of file
diff --git a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
index e5232265cd073705601637de19312fa91b78deb8..70675b92dd647731d3ce8f8db014cb4a3120a46c 100755
--- a/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/app/video/VideoApplication.java
@@ -88,13 +88,18 @@ public class VideoApplication extends MultiThreadedApplicationAdapter {
             params = new Object[2];
             params[0] = "UNKNOWN-MEETING-ID";
             params[1] = "UNKNOWN-USER-ID";
+            params[2] = "UNKNOWN-AUTH-TOKEN";
         }
 
         String meetingId = ((String) params[0]).toString();
         String userId = ((String) params[1]).toString();
+        String authToken = ((String) params[2]).toString();
 
         Red5.getConnectionLocal().setAttribute("MEETING_ID", meetingId);
         Red5.getConnectionLocal().setAttribute("USERID", userId);
+        Red5.getConnectionLocal().setAttribute("AUTH_TOKEN", authToken);
+
+        publisher.validateConnAuthToken(meetingId, userId, authToken);
 
         String connType = getConnectionType(Red5.getConnectionLocal().getType());
         String sessionId = Red5.getConnectionLocal().getSessionId();
diff --git a/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java b/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
index 5b6de28e9828ec66f29d209317d1d7629d61d824..7912b1e91665d5d3ea4e5bbe7f034ef42be31be1 100755
--- a/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessagePublisher.java
@@ -8,6 +8,9 @@ import java.util.HashMap;
 import java.util.Map;
 
 import com.google.gson.Gson;
+import org.bigbluebutton.common2.msgs.BbbClientMsgHeader;
+import org.bigbluebutton.common2.msgs.ValidateConnAuthTokenSysMsg;
+import org.bigbluebutton.common2.msgs.ValidateConnAuthTokenSysMsgBody;
 
 public class MessagePublisher {
 
@@ -16,7 +19,20 @@ public class MessagePublisher {
 	public void setMessageSender(MessageSender sender) {
 		this.sender = sender;
 	}
-	
+
+	public void validateConnAuthToken(String meetingId, String userId, String authToken) {
+		BbbClientMsgHeader header = new BbbClientMsgHeader("ValidateConnAuthTokenSysMsg", meetingId, userId);
+		ValidateConnAuthTokenSysMsgBody body = new ValidateConnAuthTokenSysMsgBody(meetingId,
+				userId, authToken, "VIDEO");
+		ValidateConnAuthTokenSysMsg msg = new ValidateConnAuthTokenSysMsg(header, body);
+		Gson gson = new Gson();
+		String json = gson.toJson(msg);
+
+		System.out.println("**** SENDING " + json);
+
+		sender.send("to-akka-apps-redis-channel", json);
+	}
+
 	// Polling 
 	public void userSharedWebcamMessage(String meetingId, String userId, String streamId) {
 		UserSharedWebcamMessage msg = new UserSharedWebcamMessage(meetingId, userId, streamId);
diff --git a/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessageSender.java b/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessageSender.java
index f650ea31376d9119dac4152d328995ca267c6484..307a08244b86be0d8a60222666e0f5e71ebe377d 100755
--- a/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessageSender.java
+++ b/bbb-video/src/main/java/org/bigbluebutton/red5/pubsub/MessageSender.java
@@ -79,6 +79,8 @@ public class MessageSender {
 		    public void run() {
 		  		Jedis jedis = redisPool.getResource();
 		  		try {
+
+		  			System.out.println("**** PUBLISH TO " + channel + " msg=" + message);
 		  			jedis.publish(channel, message);
 		  		} catch(Exception e){
 		  			log.warn("Cannot publish the message to redis", e);
diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/PortTest.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/PortTest.as
index 501e118685ca4af6e7fb0e5077078ba6a0ed4527..f6b1b6877f49ef3c35626ef38ebcb2b6dea8600f 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/main/model/PortTest.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/PortTest.as
@@ -154,7 +154,8 @@ package org.bigbluebutton.main.model
         
         var curTime:Number = new Date().getTime();
 				// Create connection with the server.
-				nc.connect( this.baseURI, "portTestMeetingId-" + curTime, "portTestDummyUserId-" + curTime);
+				nc.connect( this.baseURI, "portTestMeetingId-" + curTime, 
+          "portTestDummyUserId-" + curTime, "portTestDummyToken-" + curTime);
 				status = "Connecting...";
 			} catch( e : ArgumentError ) {
 				// Invalid parameters.
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as
index ec1341728c34e5e6bacc8905f4958650cd80a057..58c7b4c8c17d63f14820ffab265adfa596bbe3a2 100755
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/business/VideoProxy.as
@@ -29,14 +29,13 @@ package org.bigbluebutton.modules.videoconf.business
 	import flash.media.H264VideoStreamSettings;
 	import flash.net.NetConnection;
 	import flash.net.NetStream;
-	
 	import org.as3commons.logging.api.ILogger;
 	import org.as3commons.logging.api.getClassLogger;
 	import org.bigbluebutton.core.BBB;
 	import org.bigbluebutton.core.Options;
 	import org.bigbluebutton.core.UsersUtil;
 	import org.bigbluebutton.core.managers.ReconnectionManager;
-	import org.bigbluebutton.main.api.JSLog;
+	import org.bigbluebutton.core.model.LiveMeeting;
 	import org.bigbluebutton.main.events.BBBEvent;
 	import org.bigbluebutton.modules.videoconf.events.ConnectedEvent;
 	import org.bigbluebutton.modules.videoconf.events.StartBroadcastEvent;
@@ -82,7 +81,8 @@ package org.bigbluebutton.modules.videoconf.business
 		}
 		
 	    public function connect():void {
-	      nc.connect(_url, UsersUtil.getInternalMeetingID(), UsersUtil.getMyUserID());
+	      nc.connect(_url, UsersUtil.getInternalMeetingID(), 
+          UsersUtil.getMyUserID(), LiveMeeting.inst().me.authToken);
 	    }
 	    
 		private function onAsyncError(event:AsyncErrorEvent):void{