AWS:身份池配置无效.检查此池的已分配IAM角色

Ank*_*iya 16 javascript amazon-web-services angularjs amazon-cognito aws-sdk

我创建了一个用户池和标识池.

我用过javascript sdk.

我可以使用javascript sdk注册,发送确认码并确认用户成功.

但是,当我尝试使用身份验证方法登录用户并尝试使用下面的代码传递idToken时,使用"CognitoIdentityCredentials"获取凭据

logins[cognitoEndpoint + "/" + userPoolId] = jwtToken;

    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
      IdentityPoolId: identityPoolId,
      Logins: logins
    });
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误

Error: Invalid identity pool configuration. Check assigned IAM roles for this pool.
    at Request.extractError (aws-sdk.js:104063)
    at Request.callListeners (aws-sdk.js:106060)
    at Request.emit (aws-sdk.js:106034)
    at Request.emit (aws-sdk.js:105121)
    at Request.transition (aws-sdk.js:104843)
    at AcceptorStateMachine.runTo (aws-sdk.js:108480)
    at aws-sdk.js:108492
    at Request.<anonymous> (aws-sdk.js:104859)
    at Request.<anonymous> (aws-sdk.js:105123)
    at Request.callListeners (aws-sdk.js:106070)
Run Code Online (Sandbox Code Playgroud)

我已授予管理员访问身份池的"未经身份验证的角色"和"未经身份验证的角色"以及我正在使用其凭据的用户的权限.

我是新来的.谁能告诉我我错过了什么?

任何帮助,将不胜感激.

Ale*_*gue 37

检查您在Cognito Identity Pools(联合身份)中分配的角色是否与身份池具有信任关系.

获取标识池ID +不起作用的角色的名称.去做这个:

  • 转到Cognito
  • 选择"管理联合身份"
  • 选择标识池
  • 单击编辑标识池(右上角)
  • 记下身份池ID
  • 记下不起作用的角色的名称(例如Cognito_blahUnauth_Role

在IAM中,检查角色的信任关系.确保StringEquals条件值与标识池ID匹配.

去做这个:

  • 去IAM
  • 单击角色
  • 单击您之前记下的角色名称
  • 单击信任关系
  • 在条件下的右侧,检查StringEquals条件是否包含您之前记录的标识池标识.

编辑信任关系以进行修复.

  • 如果可以的话,我会给你 100+ 这个答案。通过 Cognito 和 IAM 设置用户、组、角色、策略绝非易事。在这个问题上花了三天时间! (4认同)
  • 我可以吻你,@AlexHague。就我而言,我已将 IAM 角色重复用于另一个身份池,并且忘记了此步骤。我的 IAM 角色仅与旧身份池有信任关系。我希望这个答案能够出现在我的第一次谷歌搜索中,而不是四天后。 (4认同)
  • 这个,谢谢。我在设置我的云形成脚本时忘记添加这个 (2认同)
  • 这有帮助!谢谢。 (2认同)