2017-02-03 28 views
1

Я использовал веб-клиент MQTT для подключения к брокеру mosquitto mqtt с websocket. Я пытаюсь подключиться к клиенту mqttws31.js js. соединение нормально, без проблем. я использовать код floowingСоединитель MQTT для подключения к веб-клиенту

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

проблема заключается в том, что этот код вставляется в моем файле JS, и пользователь может видеть пароль доступа к моему брокеру. и если я зашифрую пароль с помощью md5. брокер не примет его.
В случае классического вызова ajax я могу сравнить пароль md5, но с mosquitto i d'ont знаю, есть ли способ сделать это ???

спасибо, что помогли мне.

ответ

0

Это сложный вопрос, на который можно ответить без какого-либо предположения о том, чего вы хотите достичь. Какое приложение? Что вы пытаетесь защитить с помощью имени пользователя и пароля сервера MQTT?

Использование MD5 не «шифрует» пароль - он просто выполняет одностороннее преобразование в новую строку. Если кто-то достанет MD5, то они все равно могут войти в вашу учетную запись на сервере MQTT.

Я подозреваю, что ответ заключается в том, что вы должны использовать собственные учетные данные пользователей для входа на сервер MQTT - доказывая, что это они. Или даже лучше использовать специфический токен пользователя/сеанса - например, токен OAuth, доказывая, что они являются пользователем, но могут быть отменены или обновлены, если это необходимо.

+0

я использовать одну учетную запись для входа в MQTT брокера для всех моих пользователей. Я изменяю только идентификатор клиента для различения между ними. Haw может получить доступ к моему брокеру с помощью md5. они должны расшифровать пароль для подключения к mktt broker. Если я использовал файл mqtt js, я должен установить пароль в js для подключения. –

+0

Возможно, вы уже решили это, если нет: поскольку я понимаю, что yoiu хочет скрыть пароль от java, поскольку это на самом деле наш доступ к облачному брокеру - в таком случае вы создаете брокер-мост, чтобы каждый из ваших пользователей имел своего собственного пользователя/пароль. пока они это видят, а соединение зашифровано, должно быть хорошо – user1741397

0

Если вы ДЕЙСТВИТЕЛЬНО должны использовать только один пароль, то лучшее, что вы могли бы сделать, это указать имя пользователя и пароль из запроса AJAX, чтобы он не был сохранен на странице. Эти полномочия, вероятно, должны изменяться и на регулярной основе.

Это не настоящая защита, так как любой сможет выполнить тот же запрос AJAX, чтобы получить учетные данные, но это означает, что они не сразу доступны в src.

Как @njh сказал лучше, что каждый пользователь подписывает в свои собственные уникальные учетные данные

+0

, даже если я позволю пользователям подписываться со своими учетными данными. они могут с любым клиентом mqtt подключаться к другим темам пользователей и даже к темам brodcast +. для этого я бы не хотел позволять им подключаться к москиту. –

+0

Нет, если вы установите ACL так, чтобы данный пользователь cna получал доступ только к тем, которые они должны видеть – hardillb

+0

Спасибо за ответ. Я нашел плагин mosquitto auth, который делает автоматический ACL с mysql. которые делают очень полезную работу для тех, кто сталкивается с тем же пролемом. –