Azure IoTHub- токен SAS не истекает

Версия пакета: Microsoft.Azure.Devices.Client 1.17.0

Я создал клиент устройства следующим образом

deviceClient = DeviceClient.Create(s_iotHubUri, new DeviceAuthenticationWithToken(deviceId, sasToken), Microsoft.Azure.Devices.Client.TransportType.Amqp);

Я использую deviceClient отправлять сообщения, используя deviceClient.SendEventAsync(message), Например, срок действия SAS составляет 5 минут (например), но срок действия SAS вообще не истекает, а сообщения отправляются с помощью клиента устройства. Я ожидаю исключения, как:

SAS истек

Но сообщения отправляются нормально. Но если я остановлю соединение и попытаюсь создать клиента, используя тот же SAS, я получу исключение SAS expired, но почему это не происходит при отправке сообщений на устройство?

Пожалуйста, помогите с этой проблемой.

2 ответа

Решение

В соответствии со следующими проблемами в git hub, https://github.com/Azure/azure-iot-sdk-csharp/issues/564 и https://github.com/Azure/azure-iot-sdk-csharp/issues/565 С новой версией C# SDK,

Microsoft.Azure.Devices.Client 1.17.1

IoTHub прекращает принимать токен для MQTT через 10 минут после истечения времени истечения SAS, установленного пользователем, что согласуется с поведением AMQP. Задержка является заданной и используется, чтобы скрыть разницу в тактах (искажение времени).

Эта проблема существует только с MQTT для меня. Я тестирую с Microsoft.Azure.Devices.Client 1.17.0.

Что касается AMQP и HTTP, то соединение с устройством не прерывается IoT Hub сразу, для AMQP, через 10 минут после истечения срока действия токена, вы получите UnauthorizedException, Для HTTP это время около 5 минут.

Я открыл вопрос о MQTT в Azure IoT Hub SDK для C# на GitHub.

Другие вопросы по тегам