/ / MQTT sur Azure IOT Hub: erreur lors de l'initialisation de la connexion MQTT: connexion non autorisée - java, azur, mqtt, iot, azure-iot-hub

MQTT sur Azure IOT Hub: erreur lors de l'initialisation de la connexion MQTT: connexion non autorisée - java, azur, mqtt, iot, azure-iot-hub

J'essaie d'utiliser Microsoft Azure IOT Hub pourdémontrer la connexion de mon appareil à IOT Hub et envoyer des messages en utilisant le protocole mqtt. J'ai un compte et créé un périphérique et SAS avec TTL selon les besoins. J'utilise le SDK client java fourni par Microsoft pour se connecter, mais ma connexion n'est pas autorisée. J'ai suivi toutes les étapes indiquées dans l'URL ci-dessous: https://azure.microsoft.com/en-us/documentation/articles/iot-hub-mqtt-support/ S'il vous plaît aidez-moi à cet égard. Mes journaux sont ci-dessous:

Journaux:

MqttIotHubConnection.open() connectionOptions=
============== Connection options ==============
CleanSession : false
SocketFactory : null
MqttVersion : 4
KeepAliveInterval : 20
ConTimeout : 30
UserName : PCSIOTHub.azure-devices.net/MQ...
SSLProperties : null
WillDestination : null


Exception in thread "main" java.io.IOException: Error initializing MQTT connection:Not authorized to connect
at com.microsoft.azure.iothub.transport.mqtt.MqttIotHubConnection.open(MqttIotHubConnection.java:142)
at com.microsoft.azure.iothub.transport.mqtt.MqttTransport.open(MqttTransport.java:83)
at com.microsoft.azure.iothub.DeviceClient.open(DeviceClient.java:163)
at samples.com.microsoft.azure.iothub.SendReceive.main(SendReceive.java:210)

Réponses:

1 pour la réponse № 1

Si vous utilisez le client Microsoft Java pour IoT Hub, vous n'avez pas besoin de créer le jeton SAS vous-même, le SDK le fait pour vous.

Si vous suivez l'exemple ici, https://azure.microsoft.com/en-us/documentation/articles/iot-hub-java-java-getstarted/#create-a-simulated-device-apptout ce que vous avez à faire est de remplacer:

private static IotHubClientProtocol protocol = IotHubClientProtocol.AMQPS;

avec:

private static IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;

et vous aurez un client Java de base pouvant communiquer avec IoT Hub via MQTT.


1 pour la réponse № 2

Comme @DominicBetts l'a dit, vous n'avez pas besoin de créer le jeton SAS pour utiliser le SDK IoTHub pour Java. Pour plus d'explications sur la sécurité d'IoTHub, veuillez consulter le document officiel Azure IoT Hub developer guide.

À titre d’exemple, vous pouvez vous référer au Exemple sur GitHub pour savoir comment envoyer des messages dans les différents protocoles pour Java.