[SPRING] Spring은 상태 비 저장 세션 관리에도 불구하고 JSESSIONID를 추가한다.
SPRINGSpring은 상태 비 저장 세션 관리에도 불구하고 JSESSIONID를 추가한다.
다음 구성으로 내 웹 응용 프로그램의 JWT 인증을 사용하고 있습니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.exceptionHandling()
.authenticationEntryPoint(
(req, rsp, e) -> p.sendError(HttpServletResponse.SC_UNAUTHORIZED))
.and()
.addFilter(new UsernamePasswordAuthenticationFilter(authenticationManager(),
jwtConfig))
.addFilterAfter(new JwtTokenAuthenticationFilter(jwtConfig),
UsernamePasswordAuthenticationFilter.class)
.authorizeRequests()
.antMatchers(HttpMethod.POST, jwtConfig.getUri()).permitAll()
.anyRequest().authenticated();
}
SessionCreationPolicy.STATELESS 현재 Spring이 세션 자체를 생성하지 않을 것으로 예상하고 있습니다. 그러나 / login 이외의 다른 리소스에 액세스하는 경우 응답 헤더에 다음 항목이 계속 표시됩니다.
set-cookie: JSESSIONID=...; Path=/; HttpOnly
누군가가 이것이 어디에서 왔는지 설명 할 수 있습니까 (아마도 봄이 아닐 수도 있습니다). 그리고 여전히 봄에서 온 것이면 무엇이 변경되어야합니까?
편집하다:
내 컨트롤러에서 테스트 중이지만 위의 토큰이있는 것으로 표시된대로 세션이 계속 주입됩니다. 나는 이것이 어디서 오는 것인지 전혀 모른다.
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void create(HttpSession session) {
if (session != null) {
System.out.println("Session is existing"); // executes
}
}
해결법
-
==============================
1.현재 설정 (sessionCreationPolicy (SessionCreationPolicy.STATELESS))은 Spring 보안 (스프링 보안 만)
현재 설정 (sessionCreationPolicy (SessionCreationPolicy.STATELESS))은 Spring 보안 (스프링 보안 만)
응용 프로그램의 다른 구성 요소 (예 : Spring-Session을 사용하는 경우)는 자유롭게 세션을 만들 수 있습니다.
from https://stackoverflow.com/questions/52573539/spring-adds-a-jsessionid-despite-stateless-session-management by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 요청 URL을 기반으로 다른 URL에 동일한 URL 매핑 (0) | 2019.05.16 |
---|---|
[SPRING] 봄 MVC HTTP 상태 400 - 잘못된 요청 (0) | 2019.05.15 |
[SPRING] javax.naming.NameNotFoundException : 이름 [comp / env]가이 Context에 바인드되어 있지 않다 (0) | 2019.05.15 |
[SPRING] json을 객체 목록으로 변환 (0) | 2019.05.15 |
[SPRING] 봄 + JPA + 최대 절전 모드 (0) | 2019.05.15 |