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过期的异常,但为什么在向设备发送消息时不会发生这种情况?

请帮助解决此问题。

此问题仅在MQTT中存在。我使用Microsoft.Azure.Devices.Client 1.17.0进行测试。

对于AMQP和HTTP,IoT Hub不会立即切断设备连接,对于AMQP,在令牌到期后约10分钟,您将获得UnauthorizedException。对于HTTP,此时间约为5分钟。

我在GitHub上为C#打开了一个关于Azure IoT Hub SDK上的MQTT的问题。

根据以下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在用户设置的SAS到期时间后10分钟内停止接受MQTT的令牌,这与AMQP行为一致。延迟是经过设计的,用于掩盖时钟差(定时偏斜(。

最新更新