docs: add SVG diagrams, explicit concept sections and the diagram convention
Twelve SVG architecture diagrams cover the experiments whose documents had little or no structure drawing, embedded under a 구조 heading with a shared convention file. Seven documents carried their concepts under narrative headings and now have an explicit 개념 section so they can be found. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
98a74e90a5
commit
78b270559c
@@ -221,6 +221,45 @@ Keycloak 의 role 이름은 임의 문자열이므로 **막을 수 있는 것이
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## 개념
|
||||
|
||||
### nginx 의 헤더 처리는 조건부다
|
||||
|
||||
```nginx
|
||||
proxy_set_header X-Forwarded-Proto https; # 설정한 것 → 덮어쓴다
|
||||
# X-Auth-Request-Roles 설정 없음 # 안 한 것 → 통과시킨다
|
||||
```
|
||||
|
||||
HTTP 는 **같은 이름의 헤더가 여러 번 오는 것을 허용**하므로,
|
||||
edge 가 붙인 것과 클라이언트가 보낸 것이 **함께 도착**한다.
|
||||
Spring 의 `request.getHeader()` 는 **첫 번째**를 돌려주고,
|
||||
그 순서는 프록시가 정한다.
|
||||
|
||||
### 헤더 크기 한계는 계층마다 다르다
|
||||
|
||||
| 크기 | 누가 거부하나 | 클라이언트가 보는 것 |
|
||||
|---|---|---|
|
||||
| ~8KB | **Tomcat** (`maxHttpHeaderSize`) | `400` + HTML |
|
||||
| ~16KB | **nginx** (`large_client_header_buffers`) | 응답 없음 |
|
||||
|
||||
**같은 원인이 두 가지로 보인다.** 그리고 점진적이 아니라 절벽이며,
|
||||
**role 이 많은 사용자만** 깨진다.
|
||||
|
||||
### 세 곳이 독립적으로 필요하다
|
||||
|
||||
```
|
||||
① 외부 → upstream 직접 경로 차단 (NetworkPolicy)
|
||||
② edge 에서 동명 헤더 덮어쓰기 (proxy_set_header)
|
||||
③ upstream 에서 내부 credential 검증 (공통 경계)
|
||||
```
|
||||
|
||||
**하나라도 빠지면 나머지 둘이 무의미하다.** 2홉 실험의 결론이 그대로 적용되며,
|
||||
거기서는 쿠키 속성이었지만 **여기서는 신원 자체**다.
|
||||
|
||||
---
|
||||
|
||||
## 7. 재현 절차 (명령어)
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user