当前使用Cognito Javascript SDK,当我要发送的用户名存在或不存在时,被警告我有点惊讶:
这是我正在使用的代码:
login(username, password) {
const authenticationData = {
Username : username,
Password : password,
};
const authenticationDetails = new AuthenticationDetails(authenticationData);
const userPool = new CognitoUserPool(this.poolData);
const userData = {
Username : username,
Pool : userPool,
};
this.cognitoUser = new CognitoUser(userData);
this.cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
console.log(result);
},
newPasswordRequired: function(...) {
},
onFailure: function(err) {
console.log(err);
},
});
}
如果我使用错误的密码将username
设置为mytest
(现有用户),则会出现以下错误:
“ NotAuthorizedException” 用户名或密码错误。
没关系。但是,如果我将username
设置为test12345
(不存在用户),则会出现此错误:
“ UserNotFoundException” 用户不存在。
我认为告诉最终用户用户名是否存在并不安全。
我错了吗?我做错了吗?
我只想第一个例外来通知最终用户登录失败。
答案 0 :(得分:0)
我花了一些时间才找到它,但是在用户池客户端设置中有一个选项防止用户存在错误(常规设置->应用程序客户端)。参见https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-managing-errors.html