관리 메뉴

HeBhy, since 1983.

Spring security 5.1.x에서 Crossorigin에서 요청시(결제모듈 등..) session cookie('SESSION' value) 초기화로 로그인 튕김 현상 해결(samesite set to null) 본문

Dev/Web

Spring security 5.1.x에서 Crossorigin에서 요청시(결제모듈 등..) session cookie('SESSION' value) 초기화로 로그인 튕김 현상 해결(samesite set to null)

HeBhy 2020. 4. 3. 02:23

spring boot를 2.1 이상으로 업데이트 하니(spring security 5.1 이상) lg uplus 결제모듈 호출 후 리턴값 받고나서 계속 로그인이 튕겨서 보니 세션값이 있는 쿠키가 계속 삭제되더라구요.. cors, csrf문제인가 해서 별걸 다했는데 해결을 못하고..

 

보니까 spring security 5.1이후 samesite 설정이 생겨서 'Lax'값이 디폴트가 되는 바람에.. 동일 도메인 요청에 대해서만 세션을 보내게 되어있더라구요..; 그래서 저 값을 "None"로 바꿔야 하는데.. 시큐리티 config파일에 다음 빈을 추가해 주시면 됩니다.

public class SecurityConfig extends WebSecurityConfigurerAdapter{

	// ...(중략)
	
	@Bean
	public CookieSerializer cookieSerializer() {
		DefaultCookieSerializer serializer = new DefaultCookieSerializer();
		serializer.setUseSecureCookie(true);
		serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
		serializer.setSameSite("None");
		return serializer;
	}
}

 

*추가: 혹시 버전업하면서 thymeleaf-extras-springsecurity4 -> 5로 변경한 경우, '<div sec:authorize="~">' 코드가 안먹는 경우 다음을 web config파일에 추가해주세요~ (참고)

public class WebConfig implements WebMvcConfigurer, ApplicationContextAware {
	
    // ...(중략)
	public SpringSecurityDialect securityDialect() { return new SpringSecurityDialect(); }

}
Comments