如何在MQTT传输WSO2消息代理中添加身份验证

时间:2017-03-29 12:40:30

标签: wso2 mqtt messagebroker wso2mb

我使用WSO2 Message Broker创建了一个示例发布和订阅模型项目。

import threading
import paho.mqtt.client as mqtt

def publish_1(client,topic):
    message="on"
    print("publish data")
    client.publish(topic,message)
    publish_1(client,topic)


broker="localhost"
topic_pub='/temperature123'
topic_sub='$SYS/#'

def on_connect(client, userdata, rc):
    print("Connected with result code "+str(rc))
    client.subscribe(topic_sub)


def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect(broker, 1883, 60)
thread1=threading.Thread(target=publish_1,args=(client,topic_pub))
thread1.start()

但是这个实现没有安全性。

有人可以帮助我在WSO2 Message Broker中设置MQTT订阅中的身份验证吗? 我也没有在WSO2消息代理应用程序https://localhost:9443/carbon

中看到任何订阅的节点信息

1 个答案:

答案 0 :(得分:0)

我的经验是使用Mosquitto而不是WSO2 MB,但是从WSO2 MB文档的快速浏览看来,它似乎支持SSL,这是保护MQTT(https://docs.wso2.com/display/MB310/Enabling+SSL+Support)的标准方法。执行此操作的过程非常简单,只需分发正确的密钥和证书,然后使用tsl_set()在脚本中配置它们。

如果您需要更微妙的用户/主题级别控件,看起来它们是通过更大的WSO2框架(https://docs.wso2.com/pages/viewpage.action?pageId=30540550#SecurityinWSO2MessageBroker/ApacheQpid-Auth)提供的。但我会留下一个有更多WSO2经验的人来解释你的选择。

编辑:顺便说一下,使用/启动主题被视为一种不好的做法,因为它会创建一个令人困惑的/层。我只想把主题写成“temperature123”