Spring Boot服务和Spring Boot webflux服务使用一个cookie来单点登录?

问题描述 投票:0回答:0

我有一个 Spring MVC 项目和一个 Spring WebFlux 项目连接同一个 redis 服务器。使用 spring security

spring-boot-starter-security
spring-session-data-redis
作为身份验证系统。从 MVC 项目登录和 webflux 禁用登录,但 webflux 离开返回 401 错误代码。请问我该如何解决。 代码如下: MVC

@Configuration
@EnableRedisHttpSession
public class SpringSecurityConfigur {
    @Bean
    @Order(1)
    public SecurityFilterChain appSecurityFilterChain(HttpSecurity http) throws Exception {
        return http.antMatcher("/app/**")
                .authorizeHttpRequests((auth) -> auth.anyRequest().authenticated())
                .exceptionHandling((auth) -> auth.authenticationEntryPoint(errorAuthenticationEntryPoint))
                .formLogin()
                .and().addFilterAt(appUsernamePasswordProcessingFilter,
                        UsernamePasswordAuthenticationFilter.class)
                .logout().logoutUrl("/app/logout")
                .and().csrf().disable().build();
    }
}

WebFlux

@EnableWebFluxSecurity
@EnableRedisWebSession
@AllArgsConstructor
public class SecurityConfig {

    private final DefaultSecurityContextRepository defaultSecurityContextRepository;
    private final SessionFilter sessionFilter;


    @Bean
    public SecurityWebFilterChain filterChain(ServerHttpSecurity http) {
        final var permitAll = new String[]{""};

        return http.csrf().disable()
                .formLogin().disable()
                .authorizeExchange()
                .anyExchange().authenticated()
                .and()
                .exceptionHandling()
                .accessDeniedHandler(new TokenServerAccessDeniedHandler())
                .authenticationEntryPoint(new DefaultAuthenticationEntryPoint())
                .and()
                .build();
    }
}

我试过定义:

    @Bean
    public WebSessionIdResolver webSessionIdResolver() {
        CookieWebSessionIdResolver sessionIdResolver = new CookieWebSessionIdResolver();
        sessionIdResolver.setCookieName("SESSION");
        return sessionIdResolver;
    }

LettuceConnectionFactory
但它仍然不起作用,我该如何解决这个问题;

spring-boot spring-security single-sign-on spring-webflux spring-session
© www.soinside.com 2019 - 2024. All rights reserved.