chore: readme 수정
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"version": "1.1",
|
||||
"id": "credential-contract-migration",
|
||||
"title": "패턴 이동은 credential contract의 소유권 전환이다",
|
||||
"question": "AP1→AP2, AP2→AP3, AP3→AP4, AP4→AP3 이동에서 호출 계약과 책임 소유자는 각각 어떻게 바뀌는가?",
|
||||
"type": "concept",
|
||||
"direction": "LR",
|
||||
"audience": [
|
||||
"Keycloak 통합 패턴 사이의 변경 범위를 판단하는 애플리케이션 아키텍트"
|
||||
],
|
||||
"summary": "네 이동 경로는 성숙도 단계가 아니라 호출 계약, session·identity 소유권과 검증 책임을 서로 다르게 재배치하는 독립적인 전환이다.",
|
||||
"alt": "AP1에서 AP2, AP2에서 AP3, AP3에서 AP4, AP4에서 AP3로 이동할 때 호출 계약, 소유권, 브라우저 계약, 운영 책임과 전환 성격을 같은 다섯 축으로 비교한 네 항목.",
|
||||
"long_description": "네 항목을 호출 계약, 소유권, 브라우저 계약, 운영 책임, 전환 성격의 다섯 축으로 비교한다. AP1에서 AP2는 Resource Server의 Bearer 계약을 유지하면서 OAuth callback을 mediator로 옮긴다. AP2에서 AP3는 browser의 access endpoint와 direct API 호출을 없애고 UI API를 BFF 계약으로 바꾼다. AP3에서 AP4는 application-owned session과 orchestration을 edge-owned session과 identity projection으로 전환한다. AP4에서 AP3로 되돌아가는 선택도 별도 항목으로 두어 번호 순서나 성숙도 상승을 암시하지 않는다.",
|
||||
"source_context": {
|
||||
"document": "document.md",
|
||||
"document_sha256": "df4d1a604c74e756672b5b40510abfedb8c67b39af280a5f51985ea9972f5371",
|
||||
"anchor": {
|
||||
"kind": "marker",
|
||||
"value": "credential-contract-migration",
|
||||
"line": 1293
|
||||
}
|
||||
},
|
||||
"composition": {
|
||||
"profile": "comparison",
|
||||
"diagram_only": true,
|
||||
"reference_ids": [
|
||||
"contract-comparison"
|
||||
],
|
||||
"rationale": "본문은 네 이동을 하나의 시간 순서가 아닌 독립적인 contract 전환으로 설명하므로, call edge 없이 동일한 세 축을 정렬하는 comparison이 성숙도 사다리 오해를 막는다."
|
||||
},
|
||||
"groups": [],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "ap1-to-ap2",
|
||||
"label": "AP1 → AP2",
|
||||
"kind": "concept",
|
||||
"role": "contract",
|
||||
"details": [
|
||||
"호출 · Bearer API 유지",
|
||||
"소유 · callback → mediator",
|
||||
"브라우저 · access API + session",
|
||||
"운영 · CORS → AP2 UI",
|
||||
"성격 · callback 재배치"
|
||||
],
|
||||
"description": "Bearer API는 유지하되 OAuth callback과 browser-facing session·access endpoint의 책임을 mediator 쪽으로 옮기는 전환.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1285,
|
||||
"end_line": 1285
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "ap2-to-ap3",
|
||||
"label": "AP2 → AP3",
|
||||
"kind": "concept",
|
||||
"role": "contract",
|
||||
"details": [
|
||||
"호출 · direct API → /bff/**",
|
||||
"소유 · UI API → BFF",
|
||||
"브라우저 · /token/access 제거",
|
||||
"운영 · error mapping + CSRF",
|
||||
"성격 · direct path 제거"
|
||||
],
|
||||
"description": "Browser access handoff와 direct API 호출을 제거하고 UI의 API 계약과 관련 방어를 BFF가 소유하게 하는 전환.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1287,
|
||||
"end_line": 1287
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "ap3-to-ap4",
|
||||
"label": "AP3 → AP4",
|
||||
"kind": "concept",
|
||||
"role": "contract",
|
||||
"details": [
|
||||
"호출 · API 조합 → identity",
|
||||
"소유 · app session → edge",
|
||||
"브라우저 · identity projection",
|
||||
"운영 · 인가 → upstream/policy",
|
||||
"성격 · upgrade 아님"
|
||||
],
|
||||
"description": "Application-owned session과 API orchestration을 edge-owned session과 identity projection으로 바꾸고 세밀한 인가를 재배치하는 전환.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1289,
|
||||
"end_line": 1289
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "ap4-to-ap3",
|
||||
"label": "AP4 → AP3",
|
||||
"kind": "concept",
|
||||
"role": "contract",
|
||||
"details": [
|
||||
"호출 · headers → BFF workflow",
|
||||
"소유 · claims/workflow → BFF",
|
||||
"브라우저 · app workflow",
|
||||
"운영 · state + verification",
|
||||
"성격 · 역방향 가능"
|
||||
],
|
||||
"description": "Upstream의 claim과 workflow 요구가 커질 때 header contract를 계속 넓히지 않고 책임을 BFF로 되돌리는 역방향 전환.",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1291,
|
||||
"end_line": 1291
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
}
|
||||
],
|
||||
"edges": [],
|
||||
"legend": [],
|
||||
"metadata": {
|
||||
"rationale": "비교 항목 사이에 edge를 두지 않고 역방향 AP4→AP3를 동등하게 배치해 패턴 번호를 maturity sequence로 해석하지 않도록 했다."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user