首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >认知+ IoT集成-如何限制客户端,使其可以订阅MQTT主题的名称仅作为认知用户id?

认知+ IoT集成-如何限制客户端,使其可以订阅MQTT主题的名称仅作为认知用户id?
EN

Stack Overflow用户
提问于 2020-06-18 15:56:07
回答 2查看 496关注 0票数 1

我正在寻找一种方法来验证认知用户对AWS IoT服务的身份,这样用户就可以订阅MQTT主题名作为唯一的用户id (身份池的名称)。我知道使用2 step process是可以实现的。

我不知道的是一个特定的策略,我们需要将它附加到认知标识(也就是用户),该策略必须限制用户订阅他/她的用户id作为MQTT主题。这意味着应用程序不能订阅任何其他意想不到的主题。

此外,该策略需要是动态的(可能使用${cognito Idty.amazonaws.com:sub}和条件)来简化开发。

值得注意的是,用户可以同时登录多个移动应用程序实例(Android和iOS),如果用户同时登录到Android和iOS,则两个app实例都应该能够订阅相同的主题(因为相同用户的用户id将保持不变)。

EN

回答 2

Stack Overflow用户

发布于 2020-07-01 14:07:42

终于,我解决了。分享解决方案,如果它可以帮助别人。这些步骤如下:

  1. 我们需要将IAM策略附加到经过身份验证的用户的认知角色。附加策略必须允许操作-物联网:订阅,物联网:连接,物联网:接收。最后的政策如下所示。

{“版本”:"2012-10-17“、”声明“:[{ "Sid":"Stmt1232909773123”、“行动”:“物联网:连接”、“物联网:接收”、“物联网:订阅”、“效果”:“允许”、“资源”:“*}] }

  1. 需要附加到标识id的IoT策略如下所示。

{“版本”:"2012-10-17“、”声明“:[{”效果“:”允许“、”行动“:”物联网“、”资源“:”arn:aws:物联网:us 1::client/*“}、{”效果“:”允许“、”行动“:”物联网:接收“,“资源”:"arn:aws:iot:us-east-1::topic/${cognito-identity.amazonaws.com:sub}“},{”效果“:”允许“,”操作“:”物联网:订阅“,”资源“:"arn:aws:iot:us-east-1::topicfilter/${cognito-identity.amazonaws.com:sub}”} }

注意:对于#2,您需要将您的AWS帐号放在策略中。

票数 0
EN

Stack Overflow用户

发布于 2021-03-04 06:34:58

在这个问题上花了很多时间。MQTT IoT策略中有关变量替换的文档和错误处理不是很好。下面这句话对我也很管用。如果您使用的是认知联邦身份,请确保将IoT策略添加到经过身份验证的用户角色中。最后注意:${cognito-identity.amazonaws.com:sub}从认知开发人员身份解析到identityId,而不是用户池或JWT。无论如何,希望这能帮到别人。

认知认证角色策略备注:这是过于宽松的-根据需要进行细化。

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "iot:*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

MQTT IoT策略:

代码语言:javascript
复制
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:us-east-1:<account-id>:client/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish",
        "iot:Receive"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:<account-id>:topic/${cognito-identity.amazonaws.com:sub}/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Subscribe"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:<account-id>:topicfilter/${cognito-identity.amazonaws.com:sub}/*"
      ]
    }
  ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62454182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档