2017-02-03 2 views
1

Ich benutzte MQTT Webclient, um mit dem Moskito mqtt Broker mit Websocket zu verbinden. Ich möchte den mqttws31.js Client js verbinden. Die Verbindung ist ohne Probleme OK. Ich verwende den floowing CodeMQTT Socket Webclient Verbindung Sicherheitsproblem

client = new Paho.MQTT.Client("iot.eclipse.org", Number(80), "/ws", "clientId"); 
 
client.connect({ 
 
    onSuccess: onConnect, 
 
    userName : “Username”, 
 
    password : “password” 
 
});

das Problem ist, dass dieser Code in meiner js-Datei eingefügt wird und der Benutzer kann das Passwort Zugang zu meinem Broker sehen. und wenn ich das Passwort mit MD5 verschlüsseln. Der Broker wird es nicht akzeptieren.
Im Falle des klassischen Ajax Anrufs kann ich das md5 Passwort aber mit mosquitto vergleichen ich weiß, ob es einen Weg gibt, dies zu tun ???

danke mir zu helfen.

Antwort

0

Dies ist eine schwierige Frage, ohne einige Hintergrundinformationen in zu beantworten, was Sie erreichen wollen - Was ist die Anwendung? Was möchten Sie mit dem Benutzernamen und dem Passwort des MQTT-Servers schützen?

mittels MD5 nicht ‚verschlüsselt‘ das Passwort - es führt nur ein Weg, Umwandlung in eine neue Zeichenfolge. Wenn jemand die MD5 in die Hand nimmt, kann er sich weiterhin auf dem MQTT-Server in Ihrem Konto anmelden.

Ich vermute, die Antwort ist, dass Sie die Benutzer eigene Anmeldeinformationen sein sollten dem MQTT Server einzuloggen - beweist es ihnen. Oder verwenden Sie noch besser ein benutzer-/sitzungsspezifisches Token, z. B. ein OAuth-Token, das beweist, dass es sich um den Benutzer handelt, der jedoch bei Bedarf widerrufen oder aktualisiert werden kann.

+0

ich ein einzelnes Konto verwenden, um sich einzuloggen für alle meine Nutzer MQTT Broker. Ich ändere nur die Client-ID, um zwischen ihnen zu unterscheiden. Haw kann mit md5 auf meinen Broker zugreifen. Sie müssen das Passwort entschlüsseln, um sich mit dem mqtt-Broker zu verbinden. Wenn ich mqtt js Datei verwende, muss ich Passwort in js setzen, um mich zu verbinden. –

+0

Vielleicht hast du es schon gelöst, wenn nicht: wie ich verstehe, willst du das Passwort von Java verstecken, da dies unser Zugang zum Cloud Broker ist - in diesem Fall erstellst du eine Broker-Bridge, so dass jeder deiner Benutzer einen eigenen Benutzer hat/Passwort. Solange sie es sehen und die Verbindung verschlüsselt ist, sollte es in Ordnung sein – user1741397

0

Wenn man wirklich nur noch ein Passwort verwenden, muss das Beste, was Sie tun können, ist den Benutzernamen und das Passwort von einer AJAX-Anfrage zur Verfügung stellen, so dass es auf der Seite nicht gespeichert ist. Diese Zugangsdaten sollten sich wahrscheinlich auch regelmäßig ändern.

Dies ist nicht wirklich ein Schutz, da jemand in der Lage sein wird, die gleiche AJAX-Anfrage zu machen, um die Anmeldeinformationen zu erhalten, aber es bedeutet, dass sie nicht sofort in der src verfügbar sind.

Wie @njh besser gesagt, dass jeder Benutzer sich mit ihren eigenen Anmeldeinformationen

+0

, auch wenn ich die Benutzer mit ihren eigenen Anmeldeinformationen signieren lassen. Sie können mit jedem mqtt-Client eine Verbindung zu anderen Benutzer-Themen und sogar zu Brodcast + -Themen herstellen. dafür möchte ich ihnen nicht erlauben, sich mit moskitos zu verbinden. –

+0

Nicht, wenn Sie die ACL so einstellen, dass ein bestimmter Benutzer nur auf die Themen zugreifen kann, die er sehen soll. – hardillb

+0

Danke für die Antwort, ich habe ein mosquitto auth plugin gefunden, das automatische ACL mit mysql macht. Welche Arbeit brauche ich sehr gut für andere, die demselben Prolem gegenüberstehen. –