복붙노트

[SPRING] 스프링 부트를 만드는 방법은 세션 쿠키를 발행하지 않으십니까?

SPRING

스프링 부트를 만드는 방법은 세션 쿠키를 발행하지 않으십니까?

스프링 부트를 사용하여 안정적인 API 서버를 개발하고 있습니다. 다음과 같이 기본 인증을 사용하도록 프로젝트를 구성했습니다.

@ComponentScan
@EnableAutoConfiguration
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    ...
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and()
            .csrf().disable()
            .authorizeRequests().anyRequest().hasRole("USER").and()
            .httpBasic();
    }
    ...
}

그러나 Chrome-Postman-Plugin으로 API를 테스트 한 결과 첫 번째 호출 후 서버에 사용자 자격 증명이 필요하지 않습니다. 그리고 'JSESSIONID'쿠키가 생성 된 것을 확인했습니다.

내 프로젝트에는 다른 보안 구성이 없습니다. 왜 이런 일이 일어 났는지 궁금해.

해결법

  1. ==============================

    1.SessionCreationPolicy.STATELESS를 사용해 보셨습니까? 스프링 문서에는 STATELESS와 NEVER의 미묘한 차이가 있습니다.

    SessionCreationPolicy.STATELESS를 사용해 보셨습니까? 스프링 문서에는 STATELESS와 NEVER의 미묘한 차이가 있습니다.

    STATELESS : Spring Security는 결코 HttpSession을 생성하지 않으며 SecurityContext를 얻기 위해 HttpSession을 사용하지 않습니다.

    절대 : Spring Security는 결코 HttpSession을 생성하지 않을 것이지만 이미 존재한다면 HttpSession을 사용할 것입니다.

    그래서 모든 쿠키를 지우고 STATELESS로 전환 한 다음 다시 시도하십시오. NEVER로 바꿀 때 이미 HttpSession을 가졌을 수 있습니다.

  2. from https://stackoverflow.com/questions/26387003/how-to-make-spring-boot-never-issue-session-cookie by cc-by-sa and MIT license