2017-03-29 24 views
0

我已經使用WSO2 Message Broker創建了示例發佈和訂閱模型項目。如何在MQTT傳輸中添加身份驗證WSO2消息代理

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 Message Broker應用程序https://localhost:9443/carbon

回答

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經驗的人來解釋你的選擇。

編輯:順便說一句,用/開始話題被認爲是一種糟糕的做法,因爲它會創建一個令人困惑的/層。我只是寫的主題爲「溫度123」

+0

感謝您的答案,但我需要在消息代理做一些基於角色的授權。例如,用戶1可以在主題/溫度中發佈消息,但用戶2不能這樣做 –

相關問題