Azure IoTHub- SAS 令牌不会过期
Azure IoTHub- SAS token does not expire
包版本: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 has expired
但是消息发送正常。但是,如果我停止连接并尝试使用相同的 SAS 创建客户端,我会收到 SAS 过期异常,但为什么在向设备发送消息时不会发生这种情况?
请帮忙解决这个问题。
这个问题只存在于我的 MQTT 中。我用 Microsoft.Azure.Devices.Client 1.17.0.
测试
对于 AMQP 和 HTTP,设备连接不会被 IoT Hub 立即切断,对于 AMQP,令牌过期后大约 10 分钟你会得到 UnauthorizedException
。对于 HTTP,这个时间大约是 5 分钟。
我在 GitHub 上打开了一个 issue about MQTT Azure IoT Hub SDK for C#。
根据以下 git 集线器问题,https://github.com/Azure/azure-iot-sdk-csharp/issues/564 and https://github.com/Azure/azure-iot-sdk-csharp/issues/565。使用新的 c# SDK 版本,
Microsoft.Azure.Devices.Client 1.17.1
IoTHub 在用户设置的 SAS 到期时间后 10 分钟内停止接受 MQTT 令牌,这与 AMQP 行为一致。延迟是设计使然,用于掩盖时钟差异(时序偏差)。
包版本: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 has expired
但是消息发送正常。但是,如果我停止连接并尝试使用相同的 SAS 创建客户端,我会收到 SAS 过期异常,但为什么在向设备发送消息时不会发生这种情况?
请帮忙解决这个问题。
这个问题只存在于我的 MQTT 中。我用 Microsoft.Azure.Devices.Client 1.17.0.
测试对于 AMQP 和 HTTP,设备连接不会被 IoT Hub 立即切断,对于 AMQP,令牌过期后大约 10 分钟你会得到 UnauthorizedException
。对于 HTTP,这个时间大约是 5 分钟。
我在 GitHub 上打开了一个 issue about MQTT Azure IoT Hub SDK for C#。
根据以下 git 集线器问题,https://github.com/Azure/azure-iot-sdk-csharp/issues/564 and https://github.com/Azure/azure-iot-sdk-csharp/issues/565。使用新的 c# SDK 版本,
Microsoft.Azure.Devices.Client 1.17.1
IoTHub 在用户设置的 SAS 到期时间后 10 分钟内停止接受 MQTT 令牌,这与 AMQP 行为一致。延迟是设计使然,用于掩盖时钟差异(时序偏差)。