禁止访问身份'my-identity-that-in-cognito-identity-browser'

时间:2015-07-29 01:59:29

标签: amazon-iam amazon-cognito

假设您实现了两个外部提供程序,如TwitterFacebook Authenticated IAM角色信任关系的最佳JSON文档是什么。我曾尝试阅读此blog postdocumentation但我仍然遇到问题。我目前的政策是:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "us-east-1:mypool"      
        },
        "ForAnyValue:StringLike": {
          "cognito-identity.amazonaws.com:amr": "authenticated"
        }
      }
    }
  ]
}

但我一直在失败

  

禁止访问身份'my-identity-that-in-cognito-identity-browser'。

在我从开发人员提供的身份验证切换到亚马逊提供商之一后,这才开始破解。除了非常标准的设置之外,我无法找到任何示例,而且我在尝试查看此文档时遇到了问题。

更新

开发人员错误。正如@ jeff-bailey建议的那样,您必须确保您的提供商具有正确的登录映射。以下示例不足以满足所有情况。在我的情况下,我有非常粘性的会话,可以在应用程序终止,甚至重新安装过程中持续存在。如果您已经拥有社交令牌并跳过传统的登录屏幕,则必须不要忘记设置您的令牌。您不能只依靠fabric / facebook身份验证回调。

1 个答案:

答案 0 :(得分:3)

是否有一个特殊原因是您为两个提供商使用两个池而不是仅使用一个? Cognito将每个池的每个提供程序限制为一个应用程序,但您可以在同一个池中使用不同的提供程序,这样您就可以使用标准角色。

编辑:听起来像登录地图内容可能存在问题。具有经过身份验证的ID的未来调用必须具有与其链接的相同登录令牌。因此,如果您使用Twitter身份验证创建了身份ID,则尝试在没有该Twitter令牌的情况下使用该ID将为您提供该异常。确保你在应用程序重新启动时包含它/正确恢复应用程序会话等。 如果不是那样的话,我会给你第二眼,肯定会引起这个问题。