봄 부츠가 세션 쿠키를 발행하지 않도록 만드는 방법?
저는 스프링 부트를 이용하여 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
스프링 문서에서:
STATELESS
Spring Security는 절대 생성하지 않습니다.HttpSession
그리고 그것은 절대 그것을 사용하지 않을 것입니다.SecurityContext
.
NEVER
Spring 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
'programing' 카테고리의 다른 글
@봄에 예약된 테스트 (0) | 2023.08.06 |
---|---|
index.php를 실행하는 대신 nginx & php7.3-fpm 다운로드에 대한 다음 클라우드 (0) | 2023.08.01 |
최대 절전 모드를 사용하여 mariadb 시퀀스 nextval이 2씩 증가하고 있습니다. (0) | 2023.08.01 |
신속한 전화번호 호출 (0) | 2023.08.01 |
ASP.NET MVC - IsAjaxRequest()는 실제로 무엇을 의미합니까? (0) | 2023.08.01 |