Azure IoT 中心设备连接字符串中应该使用对称密钥还是 SAS 令牌

Should symmetric key or SAS token be used in Azure IoT hub device connection string

我注意到 Azure IoT 中心,设备可以使用连接字符串进行连接,连接字符串由设备主键或辅助键组成,格式如下: HostName=<host_name>;DeviceId=<device_id>;SharedAccessKey=<primary_key or secondary key>

或者可以连接由生成的 SAS 令牌组成的连接字符串,格式如下: HostName=<host_name>;DeviceId=<device_id>;SharedAccessSignature=SharedAccessSignature sr=<device_endpoint>&sig=<generated_token>&se=1453107988

在第一种形式中,对称密钥由设备持有,而在第二种形式中,IoT 中心拥有设备的对称密钥。

所以,我的问题是什么时候应该使用哪种表格?为什么?

两个确实都可以用

我建议使用 SAS 令牌。看到它可能是一个临时令牌,也可能只有有限的权利。

我看看 azure storage,你看到了相同的原理。如果你给用户一个 sas-token 只对一个文件有效一段时间,he/she 不会造成太大伤害。另一方面,如果您给用户一个主键并且 he/she 可以访问存储名称,那么用户将很容易删除存储帐户上的所有内容。

这也是一篇有趣的文章,您可以在其中找到有关 sas 令牌的更多信息以及更深入的解释:http://blogs.msdn.com/b/servicebus/archive/2015/02/02/event-hub-publisher-policy-in-action.aspx