Skip to content

Commit f2f72dc

Browse files
authored
Merge branch 'main' into gh-18461
Signed-off-by: Rob Winch <362503+rwinch@users.noreply.github.com>
2 parents ea634ec + 4957c5a commit f2f72dc

130 files changed

Lines changed: 1199 additions & 635 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

aspects/spring-security-aspects.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
apply plugin: 'io.spring.convention.spring-module'
22
apply plugin: 'io.freefair.aspectj'
3+
apply plugin: 'compile-warnings-error'
34

45
compileAspectj {
56
sourceCompatibility = "17"
67
targetCompatibility = "17"
8+
ajcOptions.compilerArgs += ['-Xlint:ignore']
79
}
810
compileTestAspectj {
911
sourceCompatibility = "17"
1012
targetCompatibility = "17"
13+
ajcOptions.compilerArgs += ['-Xlint:ignore']
1114
}
1215

1316
dependencies {

cas/spring-security-cas.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
id 'security-nullability'
33
id 'javadoc-warnings-error'
4+
id 'compile-warnings-error'
45
}
56

67
apply plugin: 'io.spring.convention.spring-module'

cas/src/main/java/org/springframework/security/cas/web/CasAuthenticationEntryPoint.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ public final void commence(final HttpServletRequest servletRequest, HttpServletR
9191
*/
9292
protected String createServiceUrl(HttpServletRequest request, HttpServletResponse response) {
9393
return WebUtils.constructServiceUrl(null, response, this.serviceProperties.getService(), null,
94-
this.serviceProperties.getArtifactParameter(), this.encodeServiceUrlWithSessionId);
94+
this.serviceProperties.getServiceParameter(), this.serviceProperties.getArtifactParameter(),
95+
this.encodeServiceUrlWithSessionId);
9596
}
9697

9798
/**

config/src/integration-test/java/org/springframework/security/config/ldap/LdapBindAuthenticationManagerFactoryITests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.HashSet;
2121
import java.util.Set;
2222

23+
import org.jspecify.annotations.NullMarked;
2324
import org.junit.jupiter.api.Test;
2425
import org.junit.jupiter.api.extension.ExtendWith;
2526

@@ -98,12 +99,14 @@ public void authenticationManagerFactoryWhenCustomAuthoritiesMapperThenUsed() th
9899
public void authenticationManagerFactoryWhenCustomUserDetailsContextMapperThenUsed() throws Exception {
99100
CustomUserDetailsContextMapperConfig.CONTEXT_MAPPER = new UserDetailsContextMapper() {
100101
@Override
102+
@NullMarked
101103
public UserDetails mapUserFromContext(DirContextOperations ctx, String username,
102104
Collection<? extends GrantedAuthority> authorities) {
103105
return User.withUsername("other").password("password").roles("USER").build();
104106
}
105107

106108
@Override
109+
@NullMarked
107110
public void mapUserToContext(UserDetails user, DirContextAdapter ctx) {
108111
}
109112
};

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,30 +38,30 @@ public class TestingAuthenticationToken extends AbstractAuthenticationToken {
3838

3939
private static final long serialVersionUID = 1L;
4040

41-
private final Object credentials;
41+
private final @Nullable Object credentials;
4242

4343
private final Object principal;
4444

45-
public TestingAuthenticationToken(Object principal, Object credentials) {
45+
public TestingAuthenticationToken(Object principal, @Nullable Object credentials) {
4646
super((Collection<? extends GrantedAuthority>) null);
4747
this.principal = principal;
4848
this.credentials = credentials;
4949
}
5050

51-
public TestingAuthenticationToken(Object principal, Object credentials, String... authorities) {
51+
public TestingAuthenticationToken(Object principal, @Nullable Object credentials, String... authorities) {
5252
this(principal, credentials, AuthorityUtils.createAuthorityList(authorities));
5353
}
5454

55-
public TestingAuthenticationToken(Object principal, Object credentials, GrantedAuthority... authorities) {
55+
public TestingAuthenticationToken(Object principal, @Nullable Object credentials, GrantedAuthority... authorities) {
5656
this(principal, credentials, Arrays.asList(authorities));
5757
}
5858

59-
public TestingAuthenticationToken(Object principal, Object credentials,
59+
public TestingAuthenticationToken(Object principal, @Nullable Object credentials,
6060
List<? extends GrantedAuthority> authorities) {
6161
this(principal, credentials, (Collection<? extends GrantedAuthority>) authorities);
6262
}
6363

64-
public TestingAuthenticationToken(Object principal, Object credentials,
64+
public TestingAuthenticationToken(Object principal, @Nullable Object credentials,
6565
Collection<? extends GrantedAuthority> authorities) {
6666
super(authorities);
6767
this.principal = principal;
@@ -76,7 +76,7 @@ protected TestingAuthenticationToken(Builder<?> builder) {
7676
}
7777

7878
@Override
79-
public Object getCredentials() {
79+
public @Nullable Object getCredentials() {
8080
return this.credentials;
8181
}
8282

@@ -99,7 +99,7 @@ public static class Builder<B extends Builder<B>> extends AbstractAuthentication
9999

100100
private Object principal;
101101

102-
private Object credentials;
102+
private @Nullable Object credentials;
103103

104104
protected Builder(TestingAuthenticationToken token) {
105105
super(token);
@@ -116,7 +116,6 @@ public B principal(@Nullable Object principal) {
116116

117117
@Override
118118
public B credentials(@Nullable Object credentials) {
119-
Assert.notNull(credentials, "credentials cannot be null");
120119
this.credentials = credentials;
121120
return (B) this;
122121
}

core/src/main/java/org/springframework/security/authorization/RequiredFactor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public static class Builder {
122122
* @param authority the authority.
123123
* @return the builder.
124124
*/
125-
public Builder authority(String authority) {
125+
public Builder authority(@Nullable String authority) {
126126
this.authority = authority;
127127
return this;
128128
}
@@ -205,7 +205,7 @@ public Builder x509Authority() {
205205
* @param validDuration the {@link Duration}.
206206
* @return
207207
*/
208-
public Builder validDuration(Duration validDuration) {
208+
public Builder validDuration(@Nullable Duration validDuration) {
209209
this.validDuration = validDuration;
210210
return this;
211211
}

docs/spring-security-docs.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
id 'security-kotlin'
66
id 'java-toolchain'
77
id 'test-compile-target-jdk25'
8+
id 'compile-warnings-error'
89
}
910

1011
apply plugin: 'io.spring.convention.docs'

docs/src/test/kotlin/org/springframework/security/kt/docs/features/authentication/authenticationcompromisedpasswordcheck/CompromisedPasswordCheckerUsage.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import org.springframework.security.web.authentication.SimpleUrlAuthenticationFa
1515
import org.springframework.security.web.authentication.password.HaveIBeenPwnedRestApiPasswordChecker
1616

1717

18-
class CompromisedPasswordCheckerUsage {
18+
open class CompromisedPasswordCheckerUsage {
1919
// tag::configuration[]
2020
@Bean
2121
open fun filterChain(http: HttpSecurity): SecurityFilterChain {

docs/src/test/kotlin/org/springframework/security/kt/docs/features/authentication/authenticationpasswordstoragedepgettingstarted/WithDefaultPasswordEncoderUsage.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import org.springframework.security.core.userdetails.User
44
import org.springframework.security.core.userdetails.UserDetails
55

66
class WithDefaultPasswordEncoderUsage {
7+
8+
@Suppress("DEPRECATION")
79
fun createSingleUser(): UserDetails {
810
// tag::createSingleUser[]
911
val user = User.withDefaultPasswordEncoder()
@@ -17,6 +19,7 @@ class WithDefaultPasswordEncoderUsage {
1719
return user
1820
}
1921

22+
@Suppress("DEPRECATION")
2023
fun createMultipleUsers(): List<UserDetails> {
2124
// tag::createMultipleUsers[]
2225
val users = User.withDefaultPasswordEncoder()

docs/src/test/kotlin/org/springframework/security/kt/docs/features/authentication/authenticationpasswordstoragedpe/DelegatingPasswordEncoderUsage.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@ import org.springframework.security.crypto.argon2.Argon2PasswordEncoder
44
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
55
import org.springframework.security.crypto.factory.PasswordEncoderFactories
66
import org.springframework.security.crypto.password.DelegatingPasswordEncoder
7-
import org.springframework.security.crypto.password.NoOpPasswordEncoder
87
import org.springframework.security.crypto.password.PasswordEncoder
98
import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder
10-
import org.springframework.security.crypto.password.StandardPasswordEncoder
119
import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder
1210

1311
class DelegatingPasswordEncoderUsage {
@@ -18,19 +16,20 @@ class DelegatingPasswordEncoderUsage {
1816
return passwordEncoder
1917
}
2018

19+
@Suppress("DEPRECATION")
2120
fun customDelegatingPasswordEncoder(): PasswordEncoder {
2221
// tag::createCustomPasswordEncoder[]
2322
val idForEncode = "bcrypt"
2423
val encoders: MutableMap<String, PasswordEncoder> = mutableMapOf()
2524
encoders[idForEncode] = BCryptPasswordEncoder()
26-
encoders["noop"] = NoOpPasswordEncoder.getInstance()
25+
encoders["noop"] = org.springframework.security.crypto.password.NoOpPasswordEncoder.getInstance()
2726
encoders["pbkdf2"] = Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_5()
2827
encoders["pbkdf2@SpringSecurity_v5_8"] = Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8()
2928
encoders["scrypt"] = SCryptPasswordEncoder.defaultsForSpringSecurity_v4_1()
3029
encoders["scrypt@SpringSecurity_v5_8"] = SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8()
3130
encoders["argon2"] = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_2()
3231
encoders["argon2@SpringSecurity_v5_8"] = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8()
33-
encoders["sha256"] = StandardPasswordEncoder()
32+
encoders["sha256"] = org.springframework.security.crypto.password.StandardPasswordEncoder()
3433

3534
val passwordEncoder: PasswordEncoder = DelegatingPasswordEncoder(idForEncode, encoders)
3635
// end::createCustomPasswordEncoder[]

0 commit comments

Comments
 (0)