适用于AWS IoT的HTTP请求的AWS Signature v4

时间:2019-04-13 04:07:58

标签: amazon-web-services post http-headers postman aws-iot

我有一个与AWS相关的IoT项目。在我的项目中,我的设备将原始数据传输到云中,然后云将以JSON格式解密的信息发送到AWS IoT。云支持使用REST API的HTTP协议同时用于上行链路/下行链路,因此我认为它可以与AWS IoT一起使用,作为[link]:https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html#http

我想使用AWS Sig v4发送HTTP请求,并具有以下形式的Authentication:

  

AWS4-HMAC-SHA256凭证= {1} / {2} / {3} / {4} / aws4_request,SignedHeaders = content-type; host; x-amz-date,Signature = {5}

但是,我不知道如何生成签名{5}。我无法使用脚本生成,因为我的云不支持正在运行的脚本。它只有一些框的标题和值,我可以在其中保留“授权”等(请参见https://imgur.com/RI815EZ的屏幕截图) 有什么建议吗? 预先感谢,

1 个答案:

答案 0 :(得分:0)

通过HTTP访问AWS IoT消息代理不使用AWS Sig v4进行身份验证。相反,它使用双向TLS身份验证,该身份验证要求配置证书和密钥以用于对消息代理的身份验证。

假设您的非AWS云提供商不支持双向TLS身份验证(或MQTT over websockets的替代方法),那么您将添加一个间接层,用于将JSON发送到AWS IoT。

执行此操作的一种方法是在AWS中实现Lambda,该Lambda将使用您的JSON并将其发送到AWS IoT代理。 Lambda将负责使用AWS IoT进行身份验证。 AWS SDK通常会为您处理此身份验证。

Lambda需要实现非AWS云提供商所支持的身份验证(例如,它可以使用基本身份验证)。