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

Spring Boot集成Okta SP发起SSO,React调用接口302重定向触发CORS问题

问题根因

你遇到的CORS错误核心诱因不是Spring或Okta的可信源配置漏加,而是:
OIDC SP发起的授权流程本身依赖浏览器整页跳转,你使用Axios(异步AJAX请求)调用登录接口时,Spring返回302重定向到Okta授权端点,浏览器会强制校验重定向目标(Okta域名)的CORS响应头,而Okta的公开授权端点默认不会返回允许你前端域名跨域访问的头,因此触发CORS错误。

解决方案

方案1:调整前端登录逻辑(推荐,符合OIDC标准流程)

不要用AJAX请求调用Spring Boot的登录端点,直接做整页跳转即可:

// 替换原axios调用逻辑
window.location.href = 'http://localhost:8080/api/login'

用户完成Okta登录后会自动跳转回你配置的重定向地址,后续请求自动携带登录态Cookie即可正常访问接口。

方案2:前后端完全分离token模式

如果不想做整页跳转,直接在React端集成Okta官方前端SDK,由前端主动发起OIDC授权流程,拿到access_token后,在所有请求的Header中携带Authorization: Bearer {token}调用Spring Boot接口,Spring Boot侧配置为资源服务器校验令牌即可。

现有Spring配置需要修正的点
  • 你的CORS配置中allowedOrigins配置为*,同时请求携带了Cookie(withCredentials=true),浏览器默认禁止这种组合,需要将允许源改为你React应用的具体域名,同时显式开启允许凭证:
configuration.setAllowedOrigins(Arrays.asList("http://localhost:3000")); // 替换为你的前端实际地址
configuration.setAllowCredentials(true); // 新增这行
  • 你只声明了CorsConfigurationSource Bean,没有在Spring Security的HttpSecurity配置中启用CORS,需要补充配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .cors() // 启用CORS,读取你声明的CorsConfigurationSource配置
        .and()
        // 保留你原有的其他安全配置即可
        .authorizeRequests()
        .anyRequest().authenticated();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:08