feat: 가상화 문서들 추가

This commit is contained in:
DongHyeonka
2026-09-10 08:54:05 +09:00
parent e9f6a93327
commit 43e1aadef0
695 changed files with 153404 additions and 12754 deletions
@@ -13,20 +13,20 @@
"long_description": "왼쪽 외부 브라우저가 AP4_SESSION과 함께 AP4 deployment path의 공개 Nginx entry point를 호출한다. 같은 deployment path에서 Nginx는 host 비공개 oauth2-proxy의 internal /oauth2/auth endpoint에 subrequest를 보내 session을 검증하고 user와 email 결과를 받는다. 이어서 client가 보낸 동명 header를 덮어쓰고 Nginx-owned identity header와 internal token을 host 비공개 Spring upstream의 /edge/me로 전달한다. Upstream은 user header와 internal token을 함께 확인하며 JWT를 직접 입력으로 받지 않는다.",
"source_context": {
"document": "document.md",
"document_sha256": "df4d1a604c74e756672b5b40510abfedb8c67b39af280a5f51985ea9972f5371",
"document_sha256": "e2cc061f683294c937f089ad874cbf7a617f7313c07a92c2148fb11287a0da37",
"anchor": {
"kind": "marker",
"value": "ap4-edge-trust-architecture",
"line": 182
"kind": "heading",
"value": "AP4: OAuth를 모르는 upstream 앞에서 신뢰 경로를 만든다",
"line": 202
}
},
"composition": {
"profile": "two-zone-pipeline",
"profile": "component-flow",
"diagram_only": true,
"reference_ids": [
"localization-pipeline"
"payment-event-flow"
],
"rationale": "외부 browser와 AP4 deployment path의 경계 crossing, 그리고 deployment 내부 Nginx·auth service·upstream 관계가 중심이므로 zone containment와 crossing label을 드러내는 구성이 적합하다.",
"rationale": "경계는 group 으로 남기고 방향이 있는 경로로 그린다 — two-zone-pipeline 은 지역 안쪽 엣지 라벨을 캔버스 위쪽에 고정해 group 테두리를 덮는다.",
"focus_node": "nginx"
},
"groups": [
@@ -38,12 +38,12 @@
"description": "AP4_SESSION을 애플리케이션의 공개 entry point로 보내는 외부 client 경계.",
"evidence": [
{
"start_line": 914,
"end_line": 919
"start_line": 952,
"end_line": 957
},
{
"start_line": 980,
"end_line": 999
"start_line": 1018,
"end_line": 1039
}
],
"assumption": false
@@ -56,12 +56,12 @@
"description": "Host-published Nginx와 host 비공개 oauth2-proxy 및 Spring app이 연결되는 deployment 경계.",
"evidence": [
{
"start_line": 914,
"end_line": 914
"start_line": 952,
"end_line": 952
},
{
"start_line": 1093,
"end_line": 1093
"start_line": 1133,
"end_line": 1133
}
],
"assumption": false
@@ -81,8 +81,8 @@
],
"evidence": [
{
"start_line": 980,
"end_line": 999
"start_line": 1018,
"end_line": 1039
}
],
"assumption": false
@@ -96,17 +96,18 @@
"emphasis": "primary",
"description": "Internal auth subrequest를 만들고 검증 결과를 allowlisted upstream header로 다시 조립하는 공개 gateway.",
"details": [
"/api/edge",
"auth_request",
"client header overwrite"
],
"evidence": [
{
"start_line": 914,
"end_line": 928
"start_line": 952,
"end_line": 966
},
{
"start_line": 1009,
"end_line": 1028
"start_line": 1049,
"end_line": 1068
}
],
"assumption": false
@@ -126,12 +127,12 @@
],
"evidence": [
{
"start_line": 1017,
"end_line": 1037
"start_line": 1057,
"end_line": 1077
},
{
"start_line": 1065,
"end_line": 1078
"start_line": 1105,
"end_line": 1118
}
],
"assumption": false
@@ -150,12 +151,12 @@
],
"evidence": [
{
"start_line": 940,
"end_line": 990
"start_line": 978,
"end_line": 1028
},
{
"start_line": 1009,
"end_line": 1014
"start_line": 1049,
"end_line": 1054
}
],
"assumption": false
@@ -166,12 +167,12 @@
"id": "browser-to-nginx",
"from": "browser",
"to": "nginx",
"label": "GET /api/edge · AP4_SESSION",
"label": "AP4_SESSION",
"kind": "request",
"evidence": [
{
"start_line": 994,
"end_line": 999
"start_line": 1034,
"end_line": 1039
}
],
"assumption": false
@@ -180,16 +181,16 @@
"id": "nginx-to-oauth2-proxy",
"from": "nginx",
"to": "oauth2-proxy",
"label": "internal /oauth2/auth subrequest",
"label": "auth subrequest",
"kind": "request",
"evidence": [
{
"start_line": 922,
"end_line": 928
"start_line": 960,
"end_line": 966
},
{
"start_line": 1009,
"end_line": 1009
"start_line": 1049,
"end_line": 1049
}
],
"assumption": false
@@ -198,17 +199,17 @@
"id": "nginx-to-upstream",
"from": "nginx",
"to": "spring-upstream",
"label": "allowlisted identity + internal token",
"label": "identity",
"kind": "data",
"emphasis": "primary",
"evidence": [
{
"start_line": 1017,
"end_line": 1026
"start_line": 1057,
"end_line": 1066
},
{
"start_line": 1065,
"end_line": 1078
"start_line": 1105,
"end_line": 1118
}
],
"assumption": false