繁体   English   中英

将AWS Cognito Pool用户转换为联合用户ID

[英]Converting AWS Cognito Pool user to Federated user Id

我需要为Cognito身份池用户获取联合身份ID。

我的dynamodb表使用userId作为主键,其中userId是Cognito联合身份ID(使用mobilehub配置)。 在一个android应用中,我使用AmazonCognitoIdentityProviderClient(使用IdentityManager正确实例化并使用CognitoUserPoolsSignInProvider和FacebookSignInProvider)进行查询-该查询成功检索了我的cognito用户池中的所有用户(我确实使用了过滤器,但具有为简单起见,已将其删除):

ArrayList<UserType> cognitoPoolUsers = instantiatedAmazonCognitoIdentityProviderClient().listUsers().getUsers();

cognitoPoolUsers中的用户具有电子邮件和用户名之类的属性,但是用于发电机主键的userId是链接到cognitoPoolUser的联盟用户的userId。

鉴于我已经成功检索了cognitoPoolUsers列表,如何检索对应的联合身份userId?

最终目标(为了简单起见,我实际上会使用batchLoad。):

ArrayList<UserType> cognitoPoolUsers = instantiatedAmazonCognitoIdentityProviderClient().listUsers().getUsers();

for(int k=0; k<cognitoPoolUsers.size(); k++) {
  UserType cognitoPoolUser = cognitoPoolUsers.get(k);
  SomeDynamoDO dynamoDO = new SomeAmazonDO();

  //Unknown Step:
  String correspondingFederatedId = extractFederatedId(cognitoPoolUser);

  dynamoDO.setUserId(correspondingFederatedId)
  dynamodbMapper.load(dynamoDO)
} 

您可以通过登录用户以获取ID令牌并调用GetId API来获取Userpool用户的身份ID。 使用Android SDK:

//Login and get the Id token. 
//The 'iss' claim of the token without https: will be the providerName
credentialsProvider = new CognitoCachingCredentialsProvider(context, IDENTITY_POOL_ID,REGION);
Map<String, String> logins = credentialsProvider.getLogins();
if (logins == null) {
    logins = new HashMap<String, String>();
}
logins.put(providerName, token);
credentialsProvider.setLogins(logins);
String id=credentialsProvider.getIdentityId();

如果要使用低级API调用,则为相关调用。 在登录映射参数中添加Userpool令牌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM