使用“登录亚马逊”的AWS联合身份无法连接AWS IOT

时间:2017-07-27 02:13:41

标签: android amazon mqtt login-with-amazon

目前我正在构建一个通过Web套接字连接到AWS IOT MQTT的Android应用程序。我已经设置了联合身份池和IOT完全访问策略,我尝试了具有未经身份验证的访问权限并连接到MQTT并能够订阅和发布消息的策略。此外,我已经为亚马逊登录设置了一切,并在池中启用了身份验证提供程序,并且已成功登录应用程序。但是,目前我遇到了无法在登录后无法连接到IOT的麻烦。我将IoT完全访问策略附加到经过身份验证的角色,并在我成功登录时将amazon令牌放入提供程序中。我已阅读了我拥有的文档设置信任关系到www.amazon.com,因此我尝试使用登录亚马逊身份设置一个新角色,并在联合身份池中为经过身份验证的用户切换到此角色。但是当我登录应用程序时,应用程序发生冲突,说无效的池配置。我可以知道接下来我要做什么来连接IOT 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"
}
]
}

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

for(String s : multiMap.keySet()){
    for(String s1 : listB){
      for(String s2 : listC){
      //API call
      }
    }
 }

0 个答案:

没有答案