【发布时间】:2017-01-01 22:45:08
【问题描述】:
所以我们使用 MQTT 连接设备/服务器。我使用 M2Mqtt 库的模拟客户端可以正常工作。我真正苦苦挣扎的是如何在代码中生成密码字段中使用的 签名。
我关注了这个https://azure.microsoft.com/en-us/documentation/articles/iot-hub-sas-tokens/,但我正在与 HMAC 方面的事情作斗争。他们所说的“** signingKey**”是什么?那是设备共享访问密钥吗?现在,让模拟客户端在代码中创建自己的签名(而不是通过设备资源管理器)是必不可少的,然后我们甚至担心我们的现场产品是否可以计算这一点(发现这对于现场设备来说真的太复杂了)。除了node.js之外,我可以在其他地方关注C#示例吗?这条线是什么意思“hmac.update(toSign);”
有没有更简单的方法向服务器验证设备?也许只是使用它的共享访问密钥?
抱歉所有问题:/ 可能我只需要关于什么/何时进行 URI 编码/Base64 编码/解码、HMAC 256 等的分步指南,因为我认为文档还远远不够。
"{signature} HMAC-SHA256 签名字符串的形式:{URL-encoded-resourceURI} + "\n" + expiry。重要提示:密钥从 base64 解码并用作执行 HMAC-SHA256 的密钥计算。”
【问题讨论】:
-
看来我可以只使用自定义协议网关来消除签名的复杂性?通过使用我自己的 IAuthenticationProvider 类???
标签: c# azure mqtt hmac azure-iot-hub