Files
llm-wiki/raw/official-docs/spring-boot-cookie-samesite-enum-javadoc-official.md

103 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: official-doc / Spring Boot `Cookie.SameSite` enum Javadoc — accepted SameSite attribute values
source_type: official-doc
url: https://docs.spring.io/spring-boot/api/java/org/springframework/boot/web/server/Cookie.SameSite.html
archive_url:
related_branches: [feature-keycloak-bff-csrf-samesite-defense]
related_projects: [keycloak-patterns-overview]
tags: [official-doc, keycloak-patterns, auth, spring-boot, samesite]
created: 2026-07-25
---
# official-doc / Spring Boot `Cookie.SameSite` enum Javadoc — accepted SameSite attribute values
> Layer: `raw/` — 외부 자료(공식 문서 / 대기업 기술 블로그)의 **원문 발췌·출처 기록**.
> 본 템플릿은 `raw/official-docs/` 와 `raw/company-tech-blogs/` 두 폴더가 공유.
> 검증된 요약은 `/ingest` 후 `wiki/concepts/`에 `source-summary-template` 형식으로 별도 작성. 원본은 raw에 영구 보관.
## source_type 허용값
`official-doc` — Spring Boot Javadoc API 레퍼런스 (Spring Boot 4.1.0, `docs.spring.io` 호스팅).
## Parent / 활용 branch
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| [[raw/branch-notes/feature-keycloak-bff-csrf-samesite-defense]] | D3 — `server.servlet.session.cookie.same-site` 프로퍼티가 바인딩하는 `Cookie.SameSite` enum 의 실제 허용값(`OMITTED`/`NONE`/`LAX`/`STRICT`)과 각 값의 의미를 정의. `[[raw/official-docs/spring-boot-session-cookie-samesite-property-official]]` (application-properties 부록 페이지)가 이 값들을 열거하지 않아 남긴 L0→L1 갭을 메움 — D3 에서 선택한 `lax` 문자열이 실제로 어떤 enum 상수·동작에 대응하는지의 근거. |
## 출처
- 원본 URL: https://docs.spring.io/spring-boot/api/java/org/springframework/boot/web/server/Cookie.SameSite.html
- 아카이브 URL: (미확보)
- 저자 / 조직: Spring Boot 프로젝트 (Javadoc `@author`: Phillip Webb, Andy Wilkinson, Brian Clozel, Weix Sun)
- 발행일: 불명(Javadoc 생성 시점, `Since: 2.6.0`부터 존재하는 API — 페이지 자체는 최신 문서 빌드 시점 자동 생성)
- 확인된 문서 버전: **Spring Boot 4.1.0 API** (페이지 `<title>` 배너 — "current" 경로가 가리키는 최신 버전이며, branch 가 실제 채택한 Spring Boot 버전과 별도 확인 필요할 수 있음)
- 마지막 확인일: 2026-07-25
## 왜 저장했는지
`raw/official-docs/spring-boot-session-cookie-samesite-property-official` (application-properties 부록)는 `server.servlet.session.cookie.same-site` 프로퍼티의 존재만 문서화하고 **허용값을 열거하지 않는 L0→L1 갭**이 있었다. 이 Javadoc 페이지는 그 프로퍼티가 바인딩하는 `Cookie.SameSite` enum 의 상수 4개(`OMITTED`/`NONE`/`LAX`/`STRICT`)와 각각의 정확한 의미를 원문으로 정의하므로, D3(`SameSite=Lax` 선택)가 실제로 무엇을 선택한 것인지 문자 그대로 뒷받침한다.
## 핵심 인용
> [Class-level description, line 102] "SameSite values."
> [Enum Constant Detail — OMITTED, line 199] "SameSite attribute will be omitted when creating the cookie."
> [Enum Constant Detail — NONE, lines 208209] "SameSite attribute will be set to None. Cookies are sent in both first-party
and cross-origin requests."
> [Enum Constant Detail — LAX, lines 218219] "SameSite attribute will be set to Lax. Cookies are sent in a first-party
context, also when following a link to the origin site."
> [Enum Constant Detail — STRICT, lines 228229] "SameSite attribute will be set to Strict. Cookies are only sent in a
first-party context (i.e. not when following a link to the origin site)."
## Claims Extracted / 추출된 주장
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| SPRINGBOOT-COOKIE-SAMESITE-ENUM-C1 | `org.springframework.boot.web.server.Cookie.SameSite` 는 "SameSite values"(쿠키의 SameSite 속성 값)를 나타내는 enum class 이며, 정확히 4개의 상수(`OMITTED`, `NONE`, `LAX`, `STRICT`)로 구성된다 (`Since: 2.6.0`). | [class-level, line 102] "SameSite values." + Enum Constant Summary 4-row table (lines 130145: `LAX`/`NONE`/`OMITTED`/`STRICT`) | `official-vendor-doc` | Spring Boot 가 쿠키의 SameSite 속성을 표현하는 Java enum 의 리터럴 허용 상수 집합 | 이 enum 이 `server.servlet.session.cookie.same-site` 프로퍼티의 문자열(`lax`/`strict`/`none`)과 어떻게 바인딩되는지(대소문자 처리, `OMITTED`에 대응하는 프로퍼티 문자열 존재 여부)는 이 페이지에 명시되지 않음 |
| SPRINGBOOT-COOKIE-SAMESITE-ENUM-C2 | `OMITTED` 상수는 "쿠키 생성 시 SameSite 속성 자체를 생략한다"는 의미다. | [OMITTED detail, line 199] "SameSite attribute will be omitted when creating the cookie." | `official-vendor-doc` | SameSite 헤더 속성을 아예 붙이지 않는 explicit opt-out 동작 정의 | 이 상수가 실제 어떤 상황에서 기본값으로 쓰이는지(예: 미설정 시 기본값이 `OMITTED`인지)는 이 페이지에서 확인 불가 |
| SPRINGBOOT-COOKIE-SAMESITE-ENUM-C3 | `NONE` 상수는 SameSite 를 `None` 으로 설정하며, "쿠키가 first-party 요청과 cross-origin 요청 모두에서 전송된다"고 정의한다. | [NONE detail, lines 208209] "SameSite attribute will be set to None. Cookies are sent in both first-party and cross-origin requests." | `official-vendor-doc` | `None` 값의 전송 범위(모든 컨텍스트) 정의 | `Secure` 속성 강제 여부·브라우저별 `None`+미-`Secure` 거부 동작은 이 페이지가 다루지 않음(그 근거는 별도 official-doc — MDN/RFC 6265bis 쪽) |
| SPRINGBOOT-COOKIE-SAMESITE-ENUM-C4 | `LAX` 상수는 SameSite 를 `Lax` 로 설정하며, "쿠키가 first-party 컨텍스트에서, 그리고 origin site 로 이어지는 링크를 따라갈 때도 전송된다"고 정의한다. | [LAX detail, lines 218219] "SameSite attribute will be set to Lax. Cookies are sent in a first-party context, also when following a link to the origin site." | `official-vendor-doc` | `Lax` 값이 same-site 요청 + "링크를 따라가는" cross-site top-level navigation 에서 쿠키를 전송함을 정의 — D3 의 Keycloak redirect 콜백 호환성 판단의 문언 근거 | 이 문장이 "링크를 따라가는" 것을 GET 요청으로 한정한다고 명시하지 않음 — top-level POST(`form_post`) 콜백이 이 범주에 포함되는지는 이 페이지 문언만으로 확정 불가(그 경계는 `RFC6265BIS-SAMESITE-C5` 가 별도로 규정) |
| SPRINGBOOT-COOKIE-SAMESITE-ENUM-C5 | `STRICT` 상수는 SameSite 를 `Strict` 로 설정하며, "쿠키가 first-party 컨텍스트에서만 전송되며(즉 origin site 로 이어지는 링크를 따라갈 때는 전송되지 않음)"이라고 정의한다. | [STRICT detail, lines 228229] "SameSite attribute will be set to Strict. Cookies are only sent in a first-party context (i.e. not when following a link to the origin site)." | `official-vendor-doc` | `Strict` 값이 cross-site top-level navigation(링크 클릭 포함)에서도 쿠키를 배제함을 정의 — D3 에서 `Strict` 를 기각한 근거(Keycloak 콜백 미전송 위험)의 문언 뒷받침 | 이 문장만으로 "이 동작이 모든 브라우저에서 동일하게 구현된다"는 보장은 없음(브라우저 구현 세부는 이 페이지 범위 밖) |
### Strength 허용값
- `official-standard` — RFC, 표준 사양, 언어/프로토콜 표준
- `official-vendor-doc` — Spring, Keycloak, AWS, Google 등 공식 벤더 문서 (본 문서 전 claim 해당)
- `official-reference` — 공식 reference/API 문서
- `company-case-study` — 대기업/실무 기술 블로그의 특정 사례
- `engineering-blog` — 개인/팀 블로그의 엔지니어링 해설
- `tutorial` — 튜토리얼/가이드. 일반화 금지
- `needs-confirmation` — 원문만으로는 적용 판단 불가
## Usage Boundaries / 적용 경계
- 이 자료가 직접 증명하는 것:
- `SPRINGBOOT-COOKIE-SAMESITE-ENUM-C1`: `Cookie.SameSite` enum 이 정확히 4개 상수(`OMITTED`/`NONE`/`LAX`/`STRICT`)로 구성됨.
- `C2`~`C5`: 각 상수의 Spring Boot 공식 문언 정의(어떤 컨텍스트에서 쿠키가 전송/생략되는지).
- 이 자료가 증명하지 않는 것:
- `server.servlet.session.cookie.same-site` 프로퍼티의 문자열 값(`lax`/`strict`/`none`)이 이 enum 상수로 어떻게 매핑되는지(대소문자·바인딩 메커니즘) — 이 페이지엔 프로퍼티 이름 자체가 등장하지 않음.
- 프로퍼티 미설정 시 기본값(default) — 이 페이지는 enum 정의 문서일 뿐 기본값을 선언하지 않음(sibling 문서 `spring-boot-session-cookie-samesite-property-official` 도 동일 갭이 있다고 기록됨 — 두 문서 모두 기본값 미확보).
- Spring Session(Redis 등) 구현체가 이 프로퍼티를 실제로 존중하는지 — branch-note 의 open risk (3)은 이 페이지로 해소되지 않음.
- "링크를 따라갈 때"(LAX 상수 설명)가 GET 만을 의미하는지 POST `form_post` 콜백까지 포함하는지 — RFC 6265bis 쪽 근거(`RFC6265BIS-SAMESITE-C5`)로 보완 필요.
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
- AP3 Keycloak client 의 실제 `response_mode` (GET redirect vs `form_post`) 확인 후에만 D3 의 `Lax` 선택이 실제로 안전한지 최종 확정 가능(branch-note 이미 명시된 open risk).
## 메모
- 이 Javadoc 페이지는 `server.servlet.session.cookie.same-site` 프로퍼티 이름을 직접 언급하지 않는다 — "이 enum 이 그 프로퍼티가 바인딩하는 타입"이라는 연결은 Spring Boot 패키지 구조(`org.springframework.boot.web.server.Cookie.SameSite`)와 sibling 문서(`spring-boot-session-cookie-samesite-property-official`)의 프로퍼티 설명을 통한 추론이며, 이 페이지 자체가 그 바인딩을 선언하지 않는다는 점을 Usage Boundaries에 명시함.
- 페이지 버전 배너가 "Spring Boot 4.1.0 API"로 표시됨 — `docs.spring.io/spring-boot/api/java/...` 경로는 버전 미고정("current") 경로일 가능성이 있어, branch 가 실제 사용하는 Spring Boot 버전과 다를 수 있음. 필요 시 버전 고정 경로(`docs.spring.io/spring-boot/docs/<version>/api/...`)로 재확인 권장.
- `attributeValue()` 메서드는 `@Nullable String` 을 반환한다고만 되어 있고 별도 설명(`<div class="block">`)이 없음 — 인용 대상에서 제외.
## 관련
- 같은 주제 다른 official-doc:
- `[[raw/official-docs/spring-boot-session-cookie-samesite-property-official]]``server.servlet.session.cookie.same-site` 프로퍼티 존재 자체의 근거(허용값 미열거 갭의 원본)
- `[[raw/official-docs/rfc6265bis-samesite-attribute-ietf]]` — SameSite 속성의 표준(IETF Internet-Draft) 정의, `Lax`/top-level POST 콜백 경계
- `[[raw/official-docs/samesite-set-cookie-mdn-official]]` — MDN 서술
- `[[raw/official-docs/csrf-prevention-cheat-sheet-owasp-samesite-official]]` — OWASP defense-in-depth 프레이밍
- 이 자료를 인용한 wiki 요약: (아직 생성 안 됨)