我创建了一个用户池&身份池。
我使用过javascript sdk。
我可以注册,发送确认码&使用javascript sdk成功确认用户。
但是当我尝试使用身份验证方法登录用户时尝试获取凭证" CognitoIdentityCredentials"通过以下代码传递idToken
logins[cognitoEndpoint + "/" + userPoolId] = jwtToken;
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: identityPoolId,
Logins: logins
});
它给我以下错误
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)
我已授权管理员访问&#34;未经身份验证的角色&#34; &安培; &#34;未经认证的角色&#34;身份池和我正在使用其凭据的用户。
我是aws的新手。谁能告诉我我错过了什么?
任何帮助都将不胜感激。
答案 0 :(得分:23)
检查您在Cognito Identity Pools(联合身份)中分配的角色是否与身份池具有信任关系。
获取标识池ID +不起作用的角色名称。要做到这一点:
在IAM中,检查角色的信任关系。 确保StringEquals条件值与标识池ID 匹配。
要做到这一点:
编辑要修复的信任关系。
答案 1 :(得分:2)
您在此处尝试访问的是“Cognito Federated Identity”凭据,该凭据是“Cognito User Pools”的单独AWS产品。为了检索这些凭据,您需要将用户池连接到联合身份池。
此外,我会从未经身份验证的权限中删除管理员权限,这意味着拥有您的详细信息的任何人都可以控制您的AWS账户。
答案 2 :(得分:0)
在IAM
中创建角色并选择身份提供者时,请确保不要选择用户池ID,而必须选择身份池ID。
答案 3 :(得分:0)
使用放大时出现此错误。我注意到该错误是在我通过ampl cli创建Cognito用户角色之后出现的。我要做的是,从CLI删除这些角色,然后从AWS Console再次创建,一切正常!
答案 4 :(得分:0)
我遇到了类似的错误,通过在信任策略中添加以下内容来解决
注意:在启用此功能之前,您应该在 IAM 角色的信任策略中包含 sts:TagSession。