diff --git a/web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiPasswordChecker.java b/web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiPasswordChecker.java index 8784f8e900d..5844ce1fb69 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiPasswordChecker.java +++ b/web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiPasswordChecker.java @@ -52,20 +52,15 @@ public final class HaveIBeenPwnedRestApiPasswordChecker implements CompromisedPa private final Log logger = LogFactory.getLog(getClass()); - private final MessageDigest sha1Digest; - private RestClient restClient = RestClient.builder().baseUrl(API_URL).build(); - public HaveIBeenPwnedRestApiPasswordChecker() { - this.sha1Digest = getSha1Digest(); - } - @Override public CompromisedPasswordDecision check(@Nullable String password) { if (password == null) { return new CompromisedPasswordDecision(false); } - byte[] hash = this.sha1Digest.digest(password.getBytes(StandardCharsets.UTF_8)); + MessageDigest sha1Digest = getSha1Digest(); + byte[] hash = sha1Digest.digest(password.getBytes(StandardCharsets.UTF_8)); String encoded = new String(Hex.encode(hash)).toUpperCase(Locale.ROOT); String prefix = encoded.substring(0, PREFIX_LENGTH); String suffix = encoded.substring(PREFIX_LENGTH); diff --git a/web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiReactivePasswordChecker.java b/web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiReactivePasswordChecker.java index 8bd5dacdb14..77258431795 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiReactivePasswordChecker.java +++ b/web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiReactivePasswordChecker.java @@ -55,12 +55,6 @@ public class HaveIBeenPwnedRestApiReactivePasswordChecker implements ReactiveCom private WebClient webClient = WebClient.builder().baseUrl(API_URL).build(); - private final MessageDigest sha1Digest; - - public HaveIBeenPwnedRestApiReactivePasswordChecker() { - this.sha1Digest = getSha1Digest(); - } - @Override public Mono check(@Nullable String password) { return getHash(password).map((hash) -> new String(Hex.encode(hash))) @@ -98,7 +92,10 @@ public void setWebClient(WebClient webClient) { private Mono getHash(@Nullable String rawPassword) { return Mono.justOrEmpty(rawPassword) - .map((password) -> this.sha1Digest.digest(password.getBytes(StandardCharsets.UTF_8))) + .map((password) -> { + MessageDigest sha1Digest = getSha1Digest(); + return sha1Digest.digest(password.getBytes(StandardCharsets.UTF_8)); + }) .subscribeOn(Schedulers.boundedElastic()) .publishOn(Schedulers.parallel()); }