当前位置:   article > 正文

一次排查springboot-oauth2与配置中心不兼容问题_找不到oauth2autoconfiguration

找不到oauth2autoconfiguration

一次排查springboot-oauth2与配置中心不兼容问题

问题描述

1.当应用引入spring-security-oauth2-autoconfigure依赖,并把security.oauth2.client.client-id配置到配置中心,比如nacos或apollo等组件
2.启动应用时,oauth2特性无法使用例如统一登录等接口完全失效,无法登陆,而把clientid配置到本地的properties中时,oauth2正常

问题排查

1.首先我们来看一下oauth2-autoconfigure的自动装配类都干了什么
在这里插入图片描述

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.security.oauth2.OAuth2AutoConfiguration
  • 1
  • 2
  • 3

首先我们找到他的OAuth2AutoConfiguration类

@Configuration
@ConditionalOnClass({
   OAuth2AccessToken.class, WebMvcConfigurer.class})
@Import({
   OAuth2AuthorizationServerConfiguration.class, OAuth2MethodSecurityConfiguration.class, OAuth2ResourceServerConfiguration.class, OAuth2RestOperationsConfiguration.class})
@AutoConfigureBefore({
   WebMvcAutoConfiguration.class})
@EnableConfigurationProperties({
   OAuth2ClientProperties.class})
public class OAuth2AutoConfiguration {
   
    private final OAuth2ClientProperties credentials;

    public OAuth2AutoConfiguration(OAuth2ClientProperties credentials) {
   
        this.credentials = credentials;
    }

    @Bean
    public ResourceServerProperties resourceServerProperties() {
   
        return new ResourceServerProperties(this.credentials.getClientId(), this.credentials.getClientSecret());
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

可以发现他加载了
OAuth2AuthorizationServerConfiguration.class, OAuth2MethodSecurityConfiguration.class, OAuth2ResourceServerConfiguration.class, OAuth2RestOperationsConfiguration.class
以及他自身共五个configuration
看起来似乎是因为@AutoConfigureBefore({WebMvcAutoConfiguration.class}),他在webmvcautoconfiguration之前就进行加载,而我的配置中心client端并没有强行before在某个装配类上

@ConditionalOnProperty(prefix = Properties.PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true)
public class ClientAutoConfiguration {
   

    @Bean
    @ConditionalOnMissingBean(ListenerScanner.class)
    public ListenerScanner listenerScanner(Properties properties) {
   
        return new ListenerScanner(properties);<
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/393192
推荐阅读
相关标签
  

闽ICP备14008679号