Je suis nouveau Cognito. J'essaie d'implémenter AWS Cognito à l'aide de Lambda. Ceci est le tutoriel je suis.
AmazonCognitoIdentityClient client =
new AmazonCognitoIdentityClient();
GetOpenIdTokenForDeveloperIdentityRequest tokenRequest = new GetOpenIdTokenForDeveloperIdentityRequest();
tokenRequest.setIdentityPoolId("us-east-1_XXXXXXX");
Il s'agit de l'ID de pool que j'utilise dans le setIdentityPoolId
Ceci est le test JUnit
public class AuthenticateUser implements RequestHandler<Object, Object> {
@Override
public Object handleRequest(Object input, Context context) {
AuthenticateUserResponse authenticateUserResponse = new AuthenticateUserResponse();
@SuppressWarnings("unchecked")
LinkedHashMap inputHashMap = (LinkedHashMap)input;
User user = authenticateUser(inputHashMap);
return null;
}
public User authenticateUser(LinkedHashMap input){
User user = null;
String userName = (String) input.get("userName");
String passwordHash = (String) input.get("passwordHash");
try {
AmazonDynamoDBClient client = new AmazonDynamoDBClient();
client.setRegion(Region.getRegion(Regions.US_EAST_1));
DynamoDBMapper mapper = new DynamoDBMapper(client);
user = mapper.load(User.class, userName);
if(user != null){
System.out.println("user found");
if(user.getPasswordHash().equals(passwordHash)){
System.out.println("user password matched");
String openIdToken = getOpenIdToken(user.getUserId());
user.setOpenIdToken(openIdToken);
return user;
} else {
System.out.println("password unmatched");
}
} else {
System.out.println("user not found");
}
} catch (Exception e) {
System.out.println("Error: " + e.toString());
}
return user;
}
Ceci est la sortie
user found
user password matched
Mais je reçois l'erreur suivante et, par conséquent, le return user
l'instruction échoue
1 validation error detected: Value 'us-east-1_XXXXXX' at 'identityPoolId'
failed to satisfy constraint: Member must satisfy regular expression pattern: [\w-]+:[0-9a-f-]+
(Service: AmazonCognitoIdentity; Status Code: 400; Error Code: ValidationException;
Vous utilisez un identifiant de pool d'utilisateurs Cognito comme identifiant de pool d'identités. Ce sont deux choses différentes. Les identifiants de pool d'identité sont au format us-east-1: XXXX-XXXXXX-XXXX-XXXX.
Pour obtenir un identifiant de pool d'identités, vous devez utiliser les parties "Gérer les identités fédérées" de la console Cognito et non la section "Gérer les pools d'utilisateurs". J'espère que cela t'aides.