0

目前我正在构建一个通过 Web 套接字连接到 AWS IOT MQTT 的 android 应用程序。我已经建立了一个联合身份池和 IOT 完全访问策略,我尝试了未经身份验证访问的策略并连接到 MQTT 并能够订阅和发布消息。此外,我已经为使用亚马逊登录设置了所有内容,并在池中启用了身份验证提供程序,并成功登录了应用程序。但是,目前我面临登录后无法连接到物联网的麻烦。我将物联网完全访问策略附加到经过身份验证的角色,并在我成功登录时将亚马逊令牌放入提供程序。我已阅读我拥有的文档将信任关系设置为 www.amazon.com,因此,我尝试使用亚马逊身份登录设置一个新角色,并为联合身份池中经过身份验证的用户切换到该角色。但是当我登录应用程序时,应用程序发生冲突说池配置无效。我可以知道接下来我该怎么做才能连接到 IOT mqtt 吗?这是我的 Login with Amazon 角色的信任权限

{
  "Version": "2012-10-17",
  "Statement": [
{
  "Effect": "Allow",
  "Principal": {
    "Federated": "www.amazon.com"
  },
  "Action": "sts:AssumeRoleWithWebIdentity",
  "Condition": {
    "StringEquals": {
      "www.amazon.com:app_id": "amzn1.application.***********************"
    }
  }
}
]
}

此外,我读过一份文件说我必须在信任关系中将系统生成的身份验证角色 cognito-identity.amazonaws.com:amr 更改为身份提供者。因此,我改为使用亚马逊登录。我为经过身份验证的用户切换到这个角色。这一次,我登录了应用程序,应用程序没有冲突,但连接到MQTT的状态一直在重新连接。下面是系统生成的认证角色的信任关系策略。

{
"Version": "2012-10-17",
"Statement": [
{
  "Effect": "Allow",
  "Principal": {
    "Federated": "www.amazon.com"
  },
  "Action": "sts:AssumeRoleWithWebIdentity",
  "Condition": {
    "StringEquals": {
      "www.amazon.com:app_id": "amzn1.application.***************"
    }
  }
},
{
  "Effect": "Allow",
  "Principal": {
    "Federated": "cognito-identity.amazonaws.com"
  },
  "Action": "sts:AssumeRoleWithWebIdentity",
  "Condition": {
    "StringEquals": {
      "cognito-identity.amazonaws.com:aud": "us-east-1:*******-****-*****-****-*********"
    },
    "ForAnyValue:StringLike": {
      "cognito-identity.amazonaws.com:amr": "www.amazon.com"
    }
  }
},
{
  "Effect": "Allow",
  "Principal": {
    "Service": "iot.amazonaws.com"
  },
  "Action": "sts:AssumeRole"
}
]
}
4

0 回答 0