programing

봄 부츠가 세션 쿠키를 발행하지 않도록 만드는 방법?

powerit 2023. 8. 1. 20:53
반응형

봄 부츠가 세션 쿠키를 발행하지 않도록 만드는 방법?

저는 스프링 부트를 이용하여 Restful 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' 쿠키가 만들어진 것을 알아차렸습니다.

내 프로젝트에 다른 보안 구성이 없습니다.왜 이런 일이...

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

STATELESSSpring Security는 절대 생성하지 않습니다.HttpSession그리고 그것은 절대 그것을 사용하지 않을 것입니다.SecurityContext.

NEVERSpring Security는 절대 생성하지 않습니다.HttpSession그러나 이미 존재하는 경우 HttpSession을 사용합니다.

그래서 쿠키를 모두 지우고 다음으로 전환하는 것이 좋습니다.STATELESS다시 시도합니다.당신이 이미 가지고 있었을 수도 있습니다.HttpSession로 전환했을 때NEVER.

쿠키를 모두 지우고 상태 비저장으로 전환한 후 다시 시도하십시오.NEVER로 전환했을 때 이미 HttpSession이 있었을 수 있습니다."

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
            .csrf().disable()
            .authorizeRequests()
            .anyRequest()
            .authenticated().and().httpBasic();

}

다음 옵션을 사용했습니다.

.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
.formLogin().disable()
.httpBasic().disable()
.logout().disable()

localhost에서 리디렉션되는 오류가 너무 많습니다.

저는 쿠키를 치우고 시도했습니다.그러나 다음 옵션/line .sessionManagement().sessionCreationPolicy(SessionCreationPolicy)를 제거하는 순간.상태 비저장) 및 ()...잘 작동합니다.이것은 oauth2 로그인()에 대한 것입니다.oauth2login()에는 이 세션 상태가 필요할 수 있습니다.그 설명은 무엇일까요?

또한 이 .sessionManagement().sessionCreationPolicy(SessionCreationPolicy)가 없는 경우.상태 비저장) 및 ()...그리고 나서, 그것은 쿠키를 사용합니다.저는 구글 인증을 사용하기 때문에 일단 로그인하면 인증 없이 후속 통화가 가능합니다.이 모든 행동은 합리적이고 예상대로 들립니다.

보안상의 이유로, 저는 전문가로부터 쿠키를 끄라고 들었습니다.세션을 끄는 것 말고는 이게 무슨 뜻인지 모르겠어요...

봄 6은 더 이상 사용되지 않습니다.http.sessionManagement()7월에 제거할 예정입니다.

교체는 간단합니다.

http.sessionManagement(smc -> smc.sessionCreationPolicy(SessionCreationPolicy.STATELESS));

smc의 예입니다.SessionManagementConfigurer<HttpSecurity>

언급URL : https://stackoverflow.com/questions/26387003/how-to-make-spring-boot-never-issue-session-cookie

반응형