Skip to content

Commit 20a4e6f

Browse files
committed
Work around circular dependency regression in Security
This can be reverted once spring-projects/spring-security#17484 has been fixed See gh-45492
1 parent 4b2861f commit 20a4e6f

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

spring-boot-project/spring-boot-security-oauth2-client/src/main/java/org/springframework/boot/security/oauth2/client/autoconfigure/servlet/OAuth2ClientWebSecurityAutoConfiguration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.springframework.context.annotation.Configuration;
3030
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
3131
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
32+
import org.springframework.security.config.web.PathPatternRequestMatcherBuilderFactoryBean;
3233
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
3334
import org.springframework.security.oauth2.client.web.AuthenticatedPrincipalOAuth2AuthorizedClientRepository;
3435
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
@@ -51,6 +52,12 @@
5152
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
5253
public class OAuth2ClientWebSecurityAutoConfiguration {
5354

55+
@Bean
56+
@ConditionalOnMissingBean(name = "workAroundSecurityDependencyCyclePathPatternRequestMatcherBuilder")
57+
PathPatternRequestMatcherBuilderFactoryBean workAroundSecurityDependencyCyclePathPatternRequestMatcherBuilder() {
58+
return new PathPatternRequestMatcherBuilderFactoryBean();
59+
}
60+
5461
@Bean
5562
@ConditionalOnMissingBean
5663
OAuth2AuthorizedClientRepository authorizedClientRepository(OAuth2AuthorizedClientService authorizedClientService) {

spring-boot-project/spring-boot-security-oauth2-resource-server/src/main/java/org/springframework/boot/security/oauth2/server/resource/autoconfigure/servlet/OAuth2ResourceServerAutoConfiguration.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@
1919
import org.springframework.boot.autoconfigure.AutoConfiguration;
2020
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2121
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
22+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2223
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
2324
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2425
import org.springframework.boot.security.autoconfigure.actuate.servlet.ManagementWebSecurityAutoConfiguration;
2526
import org.springframework.boot.security.autoconfigure.servlet.SecurityAutoConfiguration;
2627
import org.springframework.boot.security.autoconfigure.servlet.UserDetailsServiceAutoConfiguration;
2728
import org.springframework.boot.security.oauth2.server.resource.autoconfigure.OAuth2ResourceServerProperties;
29+
import org.springframework.context.annotation.Bean;
2830
import org.springframework.context.annotation.Import;
31+
import org.springframework.security.config.web.PathPatternRequestMatcherBuilderFactoryBean;
2932
import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken;
3033

3134
/**
@@ -43,4 +46,10 @@
4346
Oauth2ResourceServerConfiguration.OpaqueTokenConfiguration.class })
4447
public class OAuth2ResourceServerAutoConfiguration {
4548

49+
@Bean
50+
@ConditionalOnMissingBean(name = "workAroundSecurityDependencyCyclePathPatternRequestMatcherBuilder")
51+
PathPatternRequestMatcherBuilderFactoryBean workAroundSecurityDependencyCyclePathPatternRequestMatcherBuilder() {
52+
return new PathPatternRequestMatcherBuilderFactoryBean();
53+
}
54+
4655
}

spring-boot-project/spring-boot-security/src/main/java/org/springframework/boot/security/autoconfigure/servlet/SpringBootWebSecurityConfiguration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.springframework.security.config.BeanIds;
2929
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
3030
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
31+
import org.springframework.security.config.web.PathPatternRequestMatcherBuilderFactoryBean;
3132
import org.springframework.security.web.SecurityFilterChain;
3233

3334
import static org.springframework.security.config.Customizer.withDefaults;
@@ -41,6 +42,12 @@
4142
@ConditionalOnWebApplication(type = Type.SERVLET)
4243
class SpringBootWebSecurityConfiguration {
4344

45+
@Bean
46+
@ConditionalOnMissingBean(name = "workAroundSecurityDependencyCyclePathPatternRequestMatcherBuilder")
47+
PathPatternRequestMatcherBuilderFactoryBean workAroundSecurityDependencyCyclePathPatternRequestMatcherBuilder() {
48+
return new PathPatternRequestMatcherBuilderFactoryBean();
49+
}
50+
4451
/**
4552
* The default configuration for web security. It relies on Spring Security's
4653
* content-negotiation strategy to determine what sort of authentication to use. If

0 commit comments

Comments
 (0)