AWS Cognito错误:“ identityPoolId”未能满足约束 [英] AWS Cognito Error: 'identityPoolId' failed to satisfy constraint
问题描述
我是新认识的人。我正在尝试使用Lambda实施AWS Cognito。这是我关注的
这是JUnit测试
公共类AuthenticateUser实现RequestHandler< Object,Object>。 {
@Override
公共对象handleRequest(对象输入,上下文上下文){
AuthenticateUserResponse authenticateUserResponse = new AuthenticateUserResponse();
@SuppressWarnings( unchecked)
LinkedHashMap inputHashMap =(LinkedHashMap)input;
用户用户= authenticateUser(inputHashMap);
返回null;
}
public User authenticateUser(LinkedHashMap input){
User user = null;
字符串userName =(String)input.get( userName);
字符串passwordHash =(String)input.get( passwordHash);
试试{
AmazonDynamoDBClient客户端=新的AmazonDynamoDBClient();
client.setRegion(Region.getRegion(Regions.US_EAST_1));
DynamoDBMapper映射器=新的DynamoDBMapper(客户端);
用户= mapper.load(User.class,userName);
if(user!= null){
System.out.println( user found);
if(user.getPasswordHash()。equals(passwordHash)){
System.out.println(匹配用户密码);
字符串openIdToken = getOpenIdToken(user.getUserId());
user.setOpenIdToken(openIdToken);
个返回用户;
} else {
System.out.println(密码不匹配);
}
} else {
System.out.println(找不到用户);
}
} catch(Exception e){
System.out.println( Error: + e.toString());
}
个返回用户;
}
这是输出
用户发现
个用户密码与
匹配
但是我遇到了以下错误,因此 return user
语句失败
检测到1个验证错误:'identityPoolId'
中的值'us-east-1_XXXXXX'无法满足约束:成员必须满足正则表达式模式:[\w-] +:[0-9a-f -] +
(服务:AmazonCognitoIdentity;状态代码:400;错误代码:ValidationException;
您正在使用Cognito用户池ID作为身份池ID,这是两件事。身份池ID的格式为us-east-1:XXXX-XXXXXX-XXXX-XXXX
要获取身份池ID,您应该使用Cognito控制台的管理联合身份部分而不是管理用户池部分。希望这对您有所帮助。 / p>
I am new Cognito. I am trying to implement AWS Cognito using Lambda. This is the tutorial I am following.
AmazonCognitoIdentityClient client =
new AmazonCognitoIdentityClient();
GetOpenIdTokenForDeveloperIdentityRequest tokenRequest = new GetOpenIdTokenForDeveloperIdentityRequest();
tokenRequest.setIdentityPoolId("us-east-1_XXXXXXX");
This is the pool Id that I am using in the setIdentityPoolId
This is the JUnit test
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;
}
This is the output
user found
user password matched
But I am getting the following error and hence, the return user
statement is failing
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;
You are using a Cognito user pool id as the identity pool id. They are two different things. Identity pool ids are of format us-east-1:XXXX-XXXXXX-XXXX-XXXX.
To get an identity pool id you should use the "Manage Federated Identities" parts of the Cognito console not the "Manage User Pools" section. Hope this helps.
这篇关于AWS Cognito错误:“ identityPoolId”未能满足约束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!