AWS IoT + Cognito连接流

时间:2017-09-21 14:03:56

标签: amazon-web-services aws-iot

根据文档,我了解如何创建物联网事物以及如何使用AWS IoT创建经过身份验证的用户。我的问题是如何有效地结合这些服务,以便每个用户可以安全地访问他或她的几个设备。

让我们说Jane刚刚注册了该平台,并希望将她的灯泡设备连接到她的帐户。我们还假设她的灯泡设备上已经有证书和IoT中的策略,以便它可以连接到IoT平台,然后发布和订阅一些主题。为了简单起见,让我们说Jane可以通过简单地进行名为pairDevice的API调用来创建此连接,该API调用具有认知身份(即59700b18-94c7-XXXX-857a-d820a68c0ec6)和设备序列号。

基本上我设想这个功能做两件事:

  1. 它将调用" AttachPrincipalPolicy"这会将与该灯泡相关的政策与认知用户联系起来。我将在此假设认知用户能够发布和订阅该特定灯泡的主题,并且该灯泡。

  2. 它会在事物ARN的用户帐户中添加DynamoDB条目,以便以后可以轻松引用和查询。

  3. 因此,如果我的理解是正确的,我会为IoT中的每个设备制定这样的策略(他们是否也应该发布和订阅带有序列号的主题?我想确保用户无法连接到设备他们显然不允许这样做:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-west-1:123456789012:client/SerialNumber", ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive" ], "Resource": [ "*" ] } ] }

    然后我会简单地使用AttachPrincipalPolicy将此策略附加到cognito用户?我是否需要在Amazon Cognito身份池中为IoT Access设置明确的策略,或者是否通过AttachPrincipalPolicy专门完成该链接?

1 个答案:

答案 0 :(得分:1)

要验证Amazon Cognito标识以通过HTTP发布MQTT消息,您必须指定两个策略。必须将第一个策略附加到Amazon Cognito标识池角色。第一个政策很可能是托管政策AWSIoTDataAccess

必须使用AWS IoT AttachPrincipalPolicy API将第二个策略附加到Amazon Cognito用户。

证明这一点的示例应用程序是:

https://github.com/awslabs/aws-iot-chat-example

有关明确说明,请参阅:

https://github.com/awslabs/aws-iot-chat-example/blob/master/docs/authentication.md