문제 상황
로그인을 구현하는데 있어 인가(Authorization)를 위해 세션을 이용했다.
로컬에서 세션을 이용하는 경우 쿠키에 세션 정보가 저장되게 되는데, 나는 Secure 플래그를 SessionConfig에서 설정하지 않았음에도 불구하고 기본값인 false가 아닌 true가 출력됐다. Secure의 기본값은 false이다.
하단의 SessionConfig를 봤을 때, Secure에 대한 설정은 존재하지 않는다.
@Configuration
public class SessionConfig {
@Bean
public CookieSerializer cookieSerializer(){
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
serializer.setSameSite("None");
serializer.setCookiePath("/");
return serializer;
}
}
하지만 로컬에서 실행했을 때, 해단과 같이 Secure가 true로 설정되어 있다.
하지만 같은 코드를 EC2 서버에서 실행했을 때 Secure가 false로 설정되어 있는 것을 확인할 수 있다.
나는 처음에 "local에서 Secure이 true인데 잘 실행 되네? 그럼 EC2 서버에서도 괜찮겠다!"라는 안일한 생각을 한 덕에, Secure를 true로 설정했고 이로 인해 Session을 쿠키로 넘겨받지 못하는 현상이 발생했다.
결론
Secure 설정을 없애고 확인해보니, local에서는 동일하게 Secure가 true지만, EC2 서버에서는 false인 것을 확인할 수 있었다.
Secure에 대한 설정이 없으면 기본값은 false인데, local에서는 왜 true로 쿠키가 설정되는지 의문이다.
왜 local에서 Secure 설정이 자동으로 true로 지정되는지는 의문을 해결하지 못한 상태이다.
하단 작업을 진행하면서 중간에 에러가 발생했는데(아닐 수 있음), 원래는 문제가 없다가 갑자기 작업 도중에 Secure 에러가 발생했는지에 대한 추가 조사가 필요하다.
사실 원래 문제가 없었는지도 정확하지 않다. (Secure를 붙인지 꽤 됐는데, 기존에는 아마 잘 돌아갔던 거 같은데...) 시간 날때 커밋 로그 되돌려보고 에러가 발생하게 된 상황에 대해 조사할 필요가 있다.
'Web > HTTP' 카테고리의 다른 글
[HTTP] Spring에서 Cookie 설정 시 Headers에 Set-Cookie가 생기지 않는 문제 (0) | 2023.10.16 |
---|---|
[HTTP] 캐시와 조건부 요청 헤더에 대해 알아보자 (0) | 2023.04.02 |
[HTTP] 검증 헤더와 조건부 요청에 대해 알아보자 (0) | 2023.04.01 |
[HTTP] 쿠키에 대해 알아보자 (0) | 2023.04.01 |
[HTTP] 상태 코드(Status Code)에 대해 알아보자 (0) | 2023.03.31 |