【问题标题】:AWS IoT + Cognito Connection FlowAWS IoT + Cognito 连接流
【发布时间】:2018-03-02 22:22:45
【问题描述】:

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

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

基本上我设想这个函数做两件事:

  1. 它将调用“AttachPrincipalPolicy”,将与该灯泡关联的策略链接到认知用户。我假设此时 cognito 用户将能够发布和订阅该特定灯泡的主题,并且仅该灯泡。

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

因此,如果我的理解是正确的,我将为物联网中的每个设备制定这样的政策(他们是否也应该使用序列号发布和订阅主题?我想确保用户无法连接到设备他们显然是不允许的):

{ "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 访问制定明确的策略,或者该链接是否专门通过 AttachPrincipalPolicy 完成?

【问题讨论】:

    标签: amazon-web-services aws-iot


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2019-09-15
      • 2021-01-09
      • 2018-01-25
      • 1970-01-01
      • 2022-01-08
      • 2018-07-27
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多