簡體   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