IoT .Net SDK:有没有办法设置 SAS 令牌寿命?

问题描述

使用 .Net SDK for IoT,有没有办法设置 OPTION_SAS_TOKEN_LIFETIME (https://github.com/Azure/azure-iot-sdk-c/blob/master/iothub_client/inc/iothub_client_options.h#L36)?

我知道我可以使用以下方法生成令牌并拥有流程:

            var sasBuilder = new SharedAccessSignatureBuilder();
            sasBuilder.Key = "jzaOR************F2uT1c=";
            sasBuilder.Target = "k****y.azure-devices.net" + "/devices/" + "dotNet";
            sasBuilder.TimetoLive = TimeSpan.FromMinutes(120);

            var auth = new DeviceAuthenticationWithToken("dotNet",sasBuilder.ToSignature());
            deviceClient = DeviceClient.Create("k****y.azure-devices.net",auth,TransportType.Mqtt);

但这将假设我拥有 SAS 令牌到期。

我也看到可以在C SDK中设置:(https://github.com/Azure/azure-iot-sdk-c/issues/1182)

解决方法

查看github中的相关线程:https://github.com/Azure/azure-iot-sdk-csharp/issues/1818

"默认情况下,如果您使用连接字符串初始化设备客户端,它将生成有效期为一小时的 sas 令牌。要覆盖此行为,您可以实现抽象类 DeviceAuthenticationWithTokenRefresh 并将其传递给用于初始化的设备客户端 Create 方法。"

谢谢。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...