什么是Cognito IdentityId?

时间:2018-01-26 14:40:39

标签: amazon-web-services aws-cognito

我正在尝试为刚刚创建的用户获取AWS凭据。

谁能告诉我identityId应该是什么?我尝试将该区域与用户sub连接起来,但它没有:

var params = {
  UserPoolId: process.env.USER_POOL_ID,
  Username: 'xxx@gmail.com',
  TemporaryPassword: 'Passw0rd!'
};

var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
cognitoidentityserviceprovider.adminCreateUser(params, function(err, data) {
  if (err) {
    callback(null, failure(err));  
  }else    
    var identityId =  "us-east-1:" + data.User.Username  //user sub

    var cognitoidentity = new AWS.CognitoIdentity();
    cognitoidentity.getCredentialsForIdentity(
      {"IdentityId": identityId},
      (err, credResult) => {
        if(err){
          callback(null, failure(err));
        }
        callback(null, success(credResult));
    })
});

我得到:

{
  "message":"Identity 'us-east-1:8ce7ee63-d9ae-4f12-9xxxxxx' not found.", 
  "code":"ResourceNotFoundException","t": "..."
}

1 个答案:

答案 0 :(得分:1)

您似乎将Cognito用户池与Cognito联合身份混合。 Cognito User Pool是您管理用户的地方,而Federated Identities是您授予外部用户AWS凭据访问权限的地方。

说,您必须确保将您的身份池(来自联合身份)配置为允许从您的用户池访问用户。这可能会帮助您https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html

设置完毕后,您可以拨打CognitoIdentity.getId,只有在您获得凭据后才会提供您的IdentityId。

总结:IdentityId是Cognito Federated Identities在身份池中的用户ID。