Skip to content

Commit 61eba00

Browse files
Move HaveIBeenPwnedRestApiPasswordChecker to spring-security-web
Prior to this commit, the implementation was placed in spring-security-core, however we do not want to introduce a dependency on spring-web and spring-webflux for that module. Issue gh-7395
1 parent f689f3c commit 61eba00

File tree

18 files changed

+36
-34
lines changed

18 files changed

+36
-34
lines changed

config/src/main/java/org/springframework/security/config/annotation/authentication/configuration/InitializeUserDetailsBeanManagerConfigurer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
import org.springframework.core.Ordered;
2121
import org.springframework.core.annotation.Order;
2222
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
23+
import org.springframework.security.authentication.password.CompromisedPasswordChecker;
2324
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
24-
import org.springframework.security.core.password.CompromisedPasswordChecker;
2525
import org.springframework.security.core.userdetails.UserDetailsPasswordService;
2626
import org.springframework.security.core.userdetails.UserDetailsService;
2727
import org.springframework.security.crypto.password.PasswordEncoder;

config/src/main/java/org/springframework/security/config/annotation/web/reactive/ServerHttpSecurityConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
import org.springframework.security.authentication.ObservationReactiveAuthenticationManager;
3333
import org.springframework.security.authentication.ReactiveAuthenticationManager;
3434
import org.springframework.security.authentication.UserDetailsRepositoryReactiveAuthenticationManager;
35+
import org.springframework.security.authentication.password.ReactiveCompromisedPasswordChecker;
3536
import org.springframework.security.config.web.server.ServerHttpSecurity;
36-
import org.springframework.security.core.password.ReactiveCompromisedPasswordChecker;
3737
import org.springframework.security.core.userdetails.ReactiveUserDetailsPasswordService;
3838
import org.springframework.security.core.userdetails.ReactiveUserDetailsService;
3939
import org.springframework.security.crypto.password.PasswordEncoder;

config/src/test/java/org/springframework/security/config/annotation/web/configuration/HttpSecurityConfigurationTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@
4747
import org.springframework.security.authentication.event.AbstractAuthenticationEvent;
4848
import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent;
4949
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
50+
import org.springframework.security.authentication.password.CompromisedPasswordCheckResult;
51+
import org.springframework.security.authentication.password.CompromisedPasswordChecker;
52+
import org.springframework.security.authentication.password.CompromisedPasswordException;
5053
import org.springframework.security.config.Customizer;
5154
import org.springframework.security.config.annotation.SecurityContextChangedListenerConfig;
5255
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -58,9 +61,6 @@
5861
import org.springframework.security.core.Authentication;
5962
import org.springframework.security.core.AuthenticationException;
6063
import org.springframework.security.core.context.SecurityContextHolderStrategy;
61-
import org.springframework.security.core.password.CompromisedPasswordCheckResult;
62-
import org.springframework.security.core.password.CompromisedPasswordChecker;
63-
import org.springframework.security.core.password.CompromisedPasswordException;
6464
import org.springframework.security.core.userdetails.User;
6565
import org.springframework.security.core.userdetails.UserDetails;
6666
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

config/src/test/java/org/springframework/security/config/annotation/web/reactive/ServerHttpSecurityConfigurationTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@
2626
import org.springframework.context.ApplicationContext;
2727
import org.springframework.context.annotation.Bean;
2828
import org.springframework.context.annotation.Configuration;
29+
import org.springframework.security.authentication.password.CompromisedPasswordCheckResult;
30+
import org.springframework.security.authentication.password.CompromisedPasswordException;
31+
import org.springframework.security.authentication.password.ReactiveCompromisedPasswordChecker;
2932
import org.springframework.security.config.Customizer;
3033
import org.springframework.security.config.test.SpringTestContext;
3134
import org.springframework.security.config.test.SpringTestContextExtension;
3235
import org.springframework.security.config.users.ReactiveAuthenticationTestConfiguration;
3336
import org.springframework.security.config.web.server.ServerHttpSecurity;
34-
import org.springframework.security.core.password.CompromisedPasswordCheckResult;
35-
import org.springframework.security.core.password.CompromisedPasswordException;
36-
import org.springframework.security.core.password.ReactiveCompromisedPasswordChecker;
3737
import org.springframework.security.core.userdetails.MapReactiveUserDetailsService;
3838
import org.springframework.security.core.userdetails.PasswordEncodedUser;
3939
import org.springframework.security.core.userdetails.User;

core/spring-security-core.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ dependencies {
1818
optional 'org.aspectj:aspectjrt'
1919
optional 'org.springframework:spring-jdbc'
2020
optional 'org.springframework:spring-tx'
21-
optional 'org.springframework:spring-web'
22-
optional 'org.springframework:spring-webflux'
2321
optional 'org.jetbrains.kotlinx:kotlinx-coroutines-reactor'
2422

2523
testImplementation 'commons-collections:commons-collections'
@@ -33,7 +31,6 @@ dependencies {
3331
testImplementation "org.springframework:spring-test"
3432
testImplementation 'org.skyscreamer:jsonassert'
3533
testImplementation 'org.springframework:spring-test'
36-
testImplementation 'com.squareup.okhttp3:mockwebserver'
3734

3835
testRuntimeOnly 'org.hsqldb:hsqldb'
3936
}

core/src/main/java/org/springframework/security/authentication/AbstractUserDetailsReactiveAuthenticationManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
import org.springframework.context.MessageSource;
2626
import org.springframework.context.MessageSourceAware;
2727
import org.springframework.context.support.MessageSourceAccessor;
28+
import org.springframework.security.authentication.password.CompromisedPasswordCheckResult;
29+
import org.springframework.security.authentication.password.CompromisedPasswordChecker;
30+
import org.springframework.security.authentication.password.CompromisedPasswordException;
31+
import org.springframework.security.authentication.password.ReactiveCompromisedPasswordChecker;
2832
import org.springframework.security.core.Authentication;
2933
import org.springframework.security.core.SpringSecurityMessageSource;
30-
import org.springframework.security.core.password.CompromisedPasswordCheckResult;
31-
import org.springframework.security.core.password.CompromisedPasswordChecker;
32-
import org.springframework.security.core.password.CompromisedPasswordException;
33-
import org.springframework.security.core.password.ReactiveCompromisedPasswordChecker;
3434
import org.springframework.security.core.userdetails.ReactiveUserDetailsPasswordService;
3535
import org.springframework.security.core.userdetails.UserDetails;
3636
import org.springframework.security.core.userdetails.UserDetailsChecker;

core/src/main/java/org/springframework/security/authentication/dao/DaoAuthenticationProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import org.springframework.security.authentication.BadCredentialsException;
2121
import org.springframework.security.authentication.InternalAuthenticationServiceException;
2222
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
23+
import org.springframework.security.authentication.password.CompromisedPasswordChecker;
24+
import org.springframework.security.authentication.password.CompromisedPasswordException;
2325
import org.springframework.security.core.Authentication;
2426
import org.springframework.security.core.AuthenticationException;
25-
import org.springframework.security.core.password.CompromisedPasswordChecker;
26-
import org.springframework.security.core.password.CompromisedPasswordException;
2727
import org.springframework.security.core.userdetails.UserDetails;
2828
import org.springframework.security.core.userdetails.UserDetailsPasswordService;
2929
import org.springframework.security.core.userdetails.UserDetailsService;

core/src/main/java/org/springframework/security/core/password/CompromisedPasswordCheckResult.java renamed to core/src/main/java/org/springframework/security/authentication/password/CompromisedPasswordCheckResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.security.core.password;
17+
package org.springframework.security.authentication.password;
1818

1919
public class CompromisedPasswordCheckResult {
2020

core/src/main/java/org/springframework/security/core/password/CompromisedPasswordChecker.java renamed to core/src/main/java/org/springframework/security/authentication/password/CompromisedPasswordChecker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.security.core.password;
17+
package org.springframework.security.authentication.password;
1818

1919
import org.springframework.lang.NonNull;
2020

core/src/main/java/org/springframework/security/core/password/CompromisedPasswordException.java renamed to core/src/main/java/org/springframework/security/authentication/password/CompromisedPasswordException.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.security.core.password;
17+
package org.springframework.security.authentication.password;
1818

1919
import org.springframework.security.core.AuthenticationException;
2020

@@ -23,7 +23,6 @@
2323
*
2424
* @author Marcus da Coregio
2525
* @since 6.3
26-
* @see HaveIBeenPwnedRestApiPasswordChecker
2726
*/
2827
public class CompromisedPasswordException extends AuthenticationException {
2928

core/src/main/java/org/springframework/security/core/password/ReactiveCompromisedPasswordChecker.java renamed to core/src/main/java/org/springframework/security/authentication/password/ReactiveCompromisedPasswordChecker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.security.core.password;
17+
package org.springframework.security.authentication.password;
1818

1919
import reactor.core.publisher.Mono;
2020

core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
import reactor.test.StepVerifier;
2828

2929
import org.springframework.context.MessageSource;
30+
import org.springframework.security.authentication.password.CompromisedPasswordCheckResult;
31+
import org.springframework.security.authentication.password.CompromisedPasswordException;
32+
import org.springframework.security.authentication.password.ReactiveCompromisedPasswordChecker;
3033
import org.springframework.security.core.Authentication;
31-
import org.springframework.security.core.password.CompromisedPasswordCheckResult;
32-
import org.springframework.security.core.password.CompromisedPasswordException;
33-
import org.springframework.security.core.password.ReactiveCompromisedPasswordChecker;
3434
import org.springframework.security.core.userdetails.ReactiveUserDetailsPasswordService;
3535
import org.springframework.security.core.userdetails.ReactiveUserDetailsService;
3636
import org.springframework.security.core.userdetails.User;

core/src/test/java/org/springframework/security/authentication/dao/DaoAuthenticationProviderTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@
3333
import org.springframework.security.authentication.LockedException;
3434
import org.springframework.security.authentication.TestingAuthenticationToken;
3535
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
36+
import org.springframework.security.authentication.password.CompromisedPasswordCheckResult;
37+
import org.springframework.security.authentication.password.CompromisedPasswordChecker;
38+
import org.springframework.security.authentication.password.CompromisedPasswordException;
3639
import org.springframework.security.core.Authentication;
3740
import org.springframework.security.core.GrantedAuthority;
3841
import org.springframework.security.core.authority.AuthorityUtils;
39-
import org.springframework.security.core.password.CompromisedPasswordCheckResult;
40-
import org.springframework.security.core.password.CompromisedPasswordChecker;
41-
import org.springframework.security.core.password.CompromisedPasswordException;
4242
import org.springframework.security.core.userdetails.PasswordEncodedUser;
4343
import org.springframework.security.core.userdetails.User;
4444
import org.springframework.security.core.userdetails.UserDetails;

web/spring-security-web.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ dependencies {
3636
testImplementation "org.mockito:mockito-core"
3737
testImplementation "org.mockito:mockito-junit-jupiter"
3838
testImplementation "org.springframework:spring-test"
39+
testImplementation 'com.squareup.okhttp3:mockwebserver'
3940

4041
testRuntimeOnly 'org.hsqldb:hsqldb'
4142
}

core/src/main/java/org/springframework/security/core/password/HaveIBeenPwnedRestApiPasswordChecker.java renamed to web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiPasswordChecker.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.security.core.password;
17+
package org.springframework.security.web.authentication.password;
1818

1919
import java.nio.charset.StandardCharsets;
2020
import java.security.MessageDigest;
@@ -24,8 +24,10 @@
2424

2525
import org.apache.commons.logging.Log;
2626
import org.apache.commons.logging.LogFactory;
27-
import org.jetbrains.annotations.NotNull;
2827

28+
import org.springframework.lang.NonNull;
29+
import org.springframework.security.authentication.password.CompromisedPasswordCheckResult;
30+
import org.springframework.security.authentication.password.CompromisedPasswordChecker;
2931
import org.springframework.security.crypto.codec.Hex;
3032
import org.springframework.util.Assert;
3133
import org.springframework.util.StringUtils;
@@ -58,7 +60,7 @@ public HaveIBeenPwnedRestApiPasswordChecker() {
5860
}
5961

6062
@Override
61-
@NotNull
63+
@NonNull
6264
public CompromisedPasswordCheckResult check(String password) {
6365
byte[] hash = this.sha1Digest.digest(password.getBytes(StandardCharsets.UTF_8));
6466
String encoded = new String(Hex.encode(hash)).toUpperCase();

core/src/main/java/org/springframework/security/core/password/HaveIBeenPwnedRestApiReactivePasswordChecker.java renamed to web/src/main/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiReactivePasswordChecker.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.security.core.password;
17+
package org.springframework.security.web.authentication.password;
1818

1919
import java.nio.charset.StandardCharsets;
2020
import java.security.MessageDigest;
@@ -26,6 +26,8 @@
2626
import reactor.core.publisher.Mono;
2727
import reactor.core.scheduler.Schedulers;
2828

29+
import org.springframework.security.authentication.password.CompromisedPasswordCheckResult;
30+
import org.springframework.security.authentication.password.ReactiveCompromisedPasswordChecker;
2931
import org.springframework.security.crypto.codec.Hex;
3032
import org.springframework.util.Assert;
3133
import org.springframework.util.StringUtils;

core/src/test/java/org/springframework/security/core/password/HaveIBeenPwnedRestApiPasswordCheckerTests.java renamed to web/src/test/java/org/springframework/security/web/authentication/password/HaveIBeenPwnedRestApiPasswordCheckerTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.security.core.password;
17+
package org.springframework.security.web.authentication.password;
1818

1919
import java.io.IOException;
2020

@@ -25,6 +25,7 @@
2525
import org.junit.jupiter.api.BeforeEach;
2626
import org.junit.jupiter.api.Test;
2727

28+
import org.springframework.security.authentication.password.CompromisedPasswordCheckResult;
2829
import org.springframework.web.client.RestClient;
2930

3031
import static org.assertj.core.api.Assertions.assertThat;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.security.core.password;
17+
package org.springframework.security.web.authentication.password;
1818

1919
import java.io.IOException;
2020

0 commit comments

Comments
 (0)