Мы начали PoC, чтобы подключить некоторый из нашего существующего кода Azure IoT Hub через MQTT, чтобы протестировать поддержку Azure для стандартных протоколов и инструментов. Мы используем клиента Paho, но получаем CONNACK с кодом возврата 5 - Not Authorized.Подключение к Azure IoT Hub с Java Paho
Мы следовали за instructions о том, как настроить концентратор IoT и создать его с помощью шкалы уровня F1 (бесплатно). Затем мы следовали за another Azure document и загрузили Device Explorer, создали устройство и сгенерировали токен SAS. Затем мы подключены все в Pāho:
public static void main(String[] args) {
String deviceId = "device-fcbd127a";
String sasToken = "SharedAccessSignature sr=CoyoteIoT.azure-devices.net%2fdevices%2fdevice-fcbd127a&sig=3acRHQXXXXXXXXXXXZg%3d&se=1468067737";
String brokerUri = "ssl://CoyoteIoT.azure-devices.net:8883";
String clientId = deviceId;
System.out.println("Connecting to " + brokerUri +" as "+clientId);
MqttAsyncClient client = null;
try {
client = new MqttAsyncClient(brokerUri, clientId);
if (client != null) {
MqttConnectOptions options = new MqttConnectOptions();
client.setCallback(new AzureCallback());
options.setUserName("CoyoteIoT.azure-devices.net/device-fcbd127a" );
options.setPassword(sasToken.toCharArray());
IMqttToken token = client.connect(options);
token.waitForCompletion(5000);
if (client.isConnected()) {
System.out.println("Success!");
} else {
System.out.println("Could not connect to Azure IoT hub, timed-out");
}
}
} catch (MqttException e) {
client.getDebug().dumpBaseDebug();
e.printStackTrace();
} finally {
if (client != null) {
try {
client.disconnect();
} catch (MqttException ignore) {}
}
}
}
Мы подтвердили с помощью Wireshark, что соединение SSL делается Azure и что пакет CONNECT отправляется. Затем мы видим CONNACK с кодом возврата 5, который отправляется в Paho и Azure, после чего соединение будет вскоре после этого. Затем мы рассмотрели «Политики совместного доступа» и попробовали разные настройки. В журналах аудита ничего нет, и у нас есть «подробный» для всех.
Кто-нибудь подключил Paho (или другой сторонний Java-клиент) к Azure IoT Hub?
Где мы находим какую-либо диагностическую информацию, чтобы мы могли самостоятельно устранить эту проблему?
На стороне примечания мы отложили этот подход (MQTT) и попытались подключиться через службы ReST и получить еще более неоднозначную «500-Internal Server Error» в качестве ответа. Это заставляет нас думать, что здесь есть более фундаментальный вопрос доступа. Является ли концентратор F1 только поддержкой Microsoft SDK? Есть ли какие-то скрытые настройки контроля доступа, которые нам не хватает? Является ли формат имен строгим, не позволяя определенным символам или случаю?
Хорошая добыча, но до сих пор нет радости. Изменен токен SAS на «String sasToken =» SharedAccessSignature sr = CoyoteIoT.azure-devices.net% 2fdevices% 2fdevice-fcbd127a & sig = 3acRHQXXXXXXXXXX Zg% 3d & se = 1468067737 ";' все еще получает код возврата 5. Примерный токен SAS был изменен с вашими отзывами - Спасибо! – SCote
Итак, MQTT.fx работает с IoT Hub, тестировал его сам - http://mqttfx.jfx4ee.org/. Он построен на Пахо. Я думаю, Wiresharking его трафик и видя, что отличается от того, что ваш код производит на проводе, было бы хорошим местом для начала. – evilSnobu
Если вы ищете быстрый способ понюхать TLS, просто используйте STunnel. Прекрасно работает и в Windows - https://www.stunnel.org/index.html – evilSnobu