1. SameSite 설정
SameSite 옵션은 브라우저에서 쿠키가 요청에 포함되는 조건을 제어한다. 특히 서로 다른 도메인 간의 요청(크로스 사이트 요청)에 대해 보안을 강화하는 역할을 한다.
SameSite의 종류
- Strict: 같은 사이트에서만 쿠키가 전송된다. (가장 엄격)
- Lax: 대부분의 상황에서 같은 사이트에서만 전송되지만, 일부 GET 요청은 허용
- None: 다른 도메인에서도 쿠키가 전송됨. 단, Secure 플래그가 반드시 함께 설정되어 있어야 한다.
설정 예시 (Spring Boot 기준)
ResponseCookie.from("token", tokenValue)
.sameSite("None") // 크로스 도메인 허용
.secure(true) // SameSite=None을 위해 필수
.httpOnly(true)
.path("/")
.build()
SameSite=None 설정 위치
- Spring Boot (WebFlux): ResponseCookie 설정 시 .sameSite("None")
- Spring Boot (Servlet): Set-Cookie 헤더 직접 조작 또는 필터에서 추가 설정 필요
- 프론트엔드 (JS): 쿠키를 수동 설정할 경우 document.cookie로는 SameSite 지정이 불가. 서버 측에서 설정해야 함.
주의사항
- 기본값은 Lax이기 때문에 다른 도메인에서의 쿠키 전송이 안 될 수 있음
- 다른 도메인 간에 쿠키를 주고받으려면 SameSite=None과 Secure=true를 반드시 같이 설정해야 함
2. Domain 설정
쿠키의 Domain 속성은 쿠키가 어떤 도메인에서 유효한지를 결정한다.
설정 원칙
- Domain을 gupen.store로 설정하면 api.gupen.store, www.gupen.store에서는 쿠키가 동작하지 않음
- .gupen.store로 설정해야 하위 도메인 모두에서 유효함
예시
ResponseCookie.from("token", tokenValue)
.domain(".gupen.store") // 하위 도메인까지 쿠키 유효
.build()
주의사항
- 도메인 앞에 .(dot)을 붙이지 않으면 해당 도메인에만 국한됨
- localhost나 127.0.0.1 환경에서는 Domain 속성 설정을 피하는 것이 좋음 (브라우저에서 거부됨)
✅ 요약
SameSite | None | 다른 도메인 간에도 쿠키 전달 허용 |
Secure | true | HTTPS 환경에서만 쿠키 허용 (SameSite=None일 때 필수) |
Domain | .gupen.store | 하위 도메인 전체에서 쿠키 유효 |
'Java > Spring' 카테고리의 다른 글
Web Server와 WAS (1) | 2025.02.16 |
---|---|
어노테이션(Annotation) (2) | 2025.02.09 |
Spring Security (0) | 2025.02.06 |
OSIV (0) | 2025.02.06 |
Servlet, Dispatcher Servlet, Servlet Container (0) | 2025.02.02 |