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

一次排查springboot-oauth2与配置中心不兼容问题问题描述问题排查试验解决问题总结问题描述1.当应用引入spring-security-oauth2-autoconfigure依赖,并把security.oauth2.client.client-id配置到配置中心,比如nacos或apollo等组件2.启动应用时,oauth2特性无法使用例如统一登录等接口完全失效,无法登陆,而把clientid配置到本地的properties中时,oauth2正常问题排查1.首先我们来看一下oauth
摘要由CSDN通过智能技术生成

一次排查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

首先我们找到他的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());
    }
}

可以发现他加载了
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);
    }

    @Bean
    @ConditionalOnMissingBean(propertiesLoaderSupport.class)
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值