rawPassword 和 encodedPassword 都使用 BcryptPasswordEncoder 作为同一个字符串出现
rawPassword and encodedPassword both are coming as same string using BcryptPasswordEncoder
我是 spring 安全方面的新手。我已经使用 Spring 引导、spring 安全和 JWT 来保护 React 应用程序的身份验证。我收到以下错误:
"o.s.s.c.bcrypt.BCryptPasswordEncoder [0;39m [2m:[0;39m 编码密码不像 BCrypt"
在控制台中使用 BcryptPasswordEncoder。当我切换到 NoOpPasswordEncoder 时,它工作正常。我在 BCryptPasswordEncoder.class 中添加了断点。我在 encode() 和 matches() 方法的入口处添加了断点。 BcryptPasswordEncoder class中使用的BCRYPT_PATTERN是:
private Pattern BCRYPT_PATTERN = Pattern.compile("\A\(a|y|b)?\$(\d\d)\$[./0-9A-Za-z]{53}");
在调试过程中我发现在encode() 方法中rawPassword 是userNotFoundPassword 而在matches 方法中rawPassword 和encodedPassword 都是相同的字符串(与用户输入的密码相同)。由于 rawPassword 和 encodedPassword 都与用户输入的密码相同,因此在以下条件检查中失败,并在控制台中抛出警告消息,然后验证失败。
if (!this.BCRYPT_PATTERN.matcher(encodedPassword).matches()) {
this.logger.warn("Encoded password does not look like BCrypt");
return false;
}
userNotFoundPassword 在 encode() 方法中作为 rawPassword 出现
rawPassword 和 encodedPassword 在 matches() 方法中都是同一个字符串
我不知道为什么会这样。有人可以帮忙吗?
当您匹配的密码未经过 bcrypt 哈希处理时,会记录此警告。
bcrypt 哈希字符串类似于:
a$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
例如,您可以看到前 3 个字符 ($2a) 在正则表达式中,因为这些字符表示正在使用的 bcrypt 版本。
很可能您正在获取和尝试匹配的密码未使用 bcrypt 进行哈希处理,因此请检查您的数据库,这些密码在静态时是什么样子的。
如果它们是纯文本,那么您需要对密码进行哈希处理并将它们存储在数据库中,然后再尝试对它们进行匹配。
我是 spring 安全方面的新手。我已经使用 Spring 引导、spring 安全和 JWT 来保护 React 应用程序的身份验证。我收到以下错误:
"o.s.s.c.bcrypt.BCryptPasswordEncoder [0;39m [2m:[0;39m 编码密码不像 BCrypt"
在控制台中使用 BcryptPasswordEncoder。当我切换到 NoOpPasswordEncoder 时,它工作正常。我在 BCryptPasswordEncoder.class 中添加了断点。我在 encode() 和 matches() 方法的入口处添加了断点。 BcryptPasswordEncoder class中使用的BCRYPT_PATTERN是:
private Pattern BCRYPT_PATTERN = Pattern.compile("\A\(a|y|b)?\$(\d\d)\$[./0-9A-Za-z]{53}");
在调试过程中我发现在encode() 方法中rawPassword 是userNotFoundPassword 而在matches 方法中rawPassword 和encodedPassword 都是相同的字符串(与用户输入的密码相同)。由于 rawPassword 和 encodedPassword 都与用户输入的密码相同,因此在以下条件检查中失败,并在控制台中抛出警告消息,然后验证失败。
if (!this.BCRYPT_PATTERN.matcher(encodedPassword).matches()) {
this.logger.warn("Encoded password does not look like BCrypt");
return false;
}
userNotFoundPassword 在 encode() 方法中作为 rawPassword 出现
rawPassword 和 encodedPassword 在 matches() 方法中都是同一个字符串
我不知道为什么会这样。有人可以帮忙吗?
当您匹配的密码未经过 bcrypt 哈希处理时,会记录此警告。
bcrypt 哈希字符串类似于:
a$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
例如,您可以看到前 3 个字符 ($2a) 在正则表达式中,因为这些字符表示正在使用的 bcrypt 版本。
很可能您正在获取和尝试匹配的密码未使用 bcrypt 进行哈希处理,因此请检查您的数据库,这些密码在静态时是什么样子的。
如果它们是纯文本,那么您需要对密码进行哈希处理并将它们存储在数据库中,然后再尝试对它们进行匹配。