web-dev-qa-db-fra.com

Comment rechercher un utilisateur cognito par son sous / UUID?

Je veux rechercher un utilisateur dans mon groupe d'utilisateurs Cognito par son sous-utilisateur, qui pour autant que je sache, n'est que son UUID. Je voudrais le faire dans Java dans une fonction Lambda mais je ne trouve pas comment faire cela dans la documentation d'AWS. Des réflexions?

14
Mark Keane

À ce jour, cela n'est pas possible avec les pools d'utilisateurs Cognito.

Les utilisateurs ne peuvent être recherchés qu'en utilisant leur nom d'utilisateur ou leurs alias. L'API ListUsers permet également aux utilisateurs d'être recherchés en fournissant des filtres de recherche sur certains attributs standard mais sub n'en fait pas partie.

3
Chetan Mehta

Maintenant ça marche. http://docs.aws.Amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html

"sub" dans la liste des attributs pris en charge. Exemple pour JavaScript:

var cog = new AWS.CognitoIdentityServiceProvider();

var filter = "sub = \"" + userSub + "\"";
var req = {
    "Filter": filter,
    "UserPoolId": "your pool id" // looks like us-east-9_KDFn1cvys
};

cog.listUsers(req, function(err, data) {
    if (err) {
        console.log(err);
    }
    else {
        if (data.Users.length === 1){ //as far as we search by sub, should be only one user.
            var user = data.Users[0];
            var attributes = data.Users[0].Attributes;
        } else {
            console.log("Something wrong.");
        }
    }
});
20
Vadim Leb
     // class var
     protected final AWSCognitoIdentityProviderClient identityUserPoolProviderClient;

    // initialize the Cognito Provider client.  This is used to talk to the user pool
    identityUserPoolProviderClient = new AWSCognitoIdentityProviderClient(new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY)); 
    identityUserPoolProviderClient.setRegion(RegionUtils.getRegion(USER_POOL_REGION)); 


    // ...some init code omitted        

// build the request
AdminGetUserRequest idRequest = new AdminGetUserRequest();
idRequest.withUserPoolId(USER_POOL_ID);
idRequest.withUsername(username);

// call cognito for the result
AdminGetUserResult result = identityUserPoolProviderClient.adminGetUser(idRequest);
// loop through results 

List<UserType> userTypeList = result.getUsers();
// loop through them
for (UserType userType : userTypeList) {
    List<AttributeType> attributeList = userType.getAttributes();
    for (AttributeType attribute : attributeList) {
        String attName = attribute.getName();
        String attValue = attribute.getValue();
        System.out.println(attName + ": " + attValue);
    }
}
0
Matt