Flutter Web + Spring Boot + Keycloak 基于BFF模式的OAuth2登录重定向问题求助
Flutter Web + Spring Boot + Keycloak 基于BFF模式的OAuth2登录重定向问题求助
大家好,我几乎翻遍了全网都没找到解决办法,实在没办法来求助了😩。我正在开发一个Flutter Web应用,后端用Spring Boot做BFF(Backend for Frontend),想通过Keycloak实现OAuth2登录。
按照我的设想,整个流程应该是这样的:
- Flutter前端:只需要向Spring后端发送GET/POST/PUT等请求
- Spring后端:负责检查session或cookie,如果用户已经认证就继续处理请求;如果未认证,就把前端重定向到Keycloak的登录页面
- 核心是Spring后端作为Keycloak的客户端,持有access/refresh token,而Flutter前端只需要维护一个session cookie就行
但不管我试了多少教程、调整了多少配置,Flutter前端始终不接受后端返回的302重定向响应。直接访问后端接口的话,认证流程是完全正常的,一换成Flutter Web调用就不行。
我的Spring Security配置
@EnableWebSecurity @Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .oauth2Login(withDefaults()) .oauth2Client(withDefaults()) .authorizeHttpRequests(auth -> auth .requestMatchers("/login").permitAll() // 暂时放开了所有请求,但还是不行 //.anyRequest().permitAll() .anyRequest().authenticated() ) .sessionManagement(session -> session .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED) ) .cors(withDefaults()); return http.build(); } }
CORS配置
@Configuration public class CorsConfig { @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 允许携带cookie/session config.setAllowedOrigins(List.of("http://localhost:60716/")); config.setAllowedHeaders(List.of("*")); config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS")); config.setExposedHeaders(List.of("Authorization")); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }
我的Flutter Web服务跑在http://localhost:60716,application.properties里也配置了正确的client-id、client-secret等Keycloak相关信息。
有没有大佬能给我指个方向,到底哪里出问题了?
内容来源于stack exchange
相关产品推荐
相关产品推荐

