You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 1.5中SecurityConfig导致OAuth2失效问题排查

问题分析与解决方案

当你自定义WebSecurityConfigurerAdapter并添加@EnableOAuth2Sso和@Configuration注解后,Spring Security的默认OAuth2 SSO自动配置会被你的自定义配置覆盖。此时如果没有明确配置授权规则和登录触发逻辑,就会出现直接返回"Access Denied"的情况——因为默认的自定义安全配置会拒绝所有未认证请求,但没有触发重定向到Keycloak的登录流程。

解决步骤

必须在自定义的WebSecurityConfigurerAdapter中,显式配置HTTP授权规则,让未认证请求触发OAuth2登录跳转。重写configure(HttpSecurity http)方法,示例代码如下:

@Configuration
@EnableOAuth2Sso
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                // 指定所有请求都需要认证
                .anyRequest().authenticated()
                .and()
            // 按需禁用CSRF(若应用不需要该防护可配置,根据实际场景调整)
            .csrf().disable();
    }
}

关键注意点

  • 不要在配置中添加http.formLogin(),这会替换掉OAuth2的登录流程,导致不会重定向到Keycloak。
  • 确保authorizeRequests()中至少有一条规则触发认证(比如anyRequest().authenticated()),这样未认证的请求才会被引导到OAuth2登录页面。
  • 检查是否存在多个WebSecurityConfigurerAdapter实例,若有需通过@Order注解指定优先级,避免配置冲突。

内容的提问来源于stack exchange,提问作者Karthik Sankaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:52:05