web-dev-qa-db-ja.com

サブ/ UUIDでコグニトユーザーを検索するにはどうすればよいですか?

私のCognitoユーザープールでユーザーをsubで検索したいのですが、これは私が知る限り、単なるUUIDです。 Lambda関数内のJavaでこれを実行したいのですが、AWSのドキュメントでこれを行う方法を見つけることができません。

14
Mark Keane

現在のところ、これはCognitoユーザープールでは不可能です。

ユーザーは、ユーザー名またはエイリアスを使用してのみ検索できます。 ListUsers APIでは、一部の 標準属性 に検索フィルターを提供してユーザーを検索することもできますが、subはそれらの1つではありません。

3
Chetan Mehta

今では動作します。 http://docs.aws.Amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html

サポートされている属性のリストの「sub」。 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