refactor: 문서 개선 중
This commit is contained in:
+41
-32
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="680" height="677" viewBox="0 0 680 677" role="img" aria-labelledby="diagram-title diagram-description">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="707" height="605" viewBox="0 0 707 605" role="img" aria-labelledby="diagram-title diagram-description">
|
||||
<title id="diagram-title">열린 질문 네 개가 닿은 곳</title>
|
||||
<desc id="diagram-description">Q1 은 저장소를 밖으로 빼면 다중 인스턴스와 재시작은 풀리지만 덮어쓰기와 로그아웃 정리는 남는다는 답을 얻었고 원인은 기본키에 세션 id 가 없다는 것이었다. Q2 는 이긴 요청의 토큰조차 못 쓴다는 답이었다. Q3 은 세션과 토큰의 조회 키가 다르므로 각각 결정해야 한다는 답이었다. Q4 는 프록시가 헤더를 먼저 지워야 하고 IdP 의 클레임 변경은 재인증 전까지 반영되지 않는다는 답이었다.</desc>
|
||||
<metadata>{"techviz":{"spec_version":"1.1","id":"open-questions-answered","profile":"component-flow"},"source_context":{"document":"docs/keycloak-session-store/final/document.md","document_sha256":"1d44cba1905544d92f1d26ae36a8deb64a3db3914d6b488fd30d6ae7f8cfbabe","anchor":{"kind":"heading","value":"열린 질문 네 개에 대한 답","line":680}},"evidence_policy":"Each factual element cites source lines or is marked assumption.","diagram_only":true}</metadata>
|
||||
<desc id="diagram-description">Q1은 저장소를 밖으로 빼면 다중 인스턴스와 재시작은 풀리지만 기본키에 session id가 없어 덮어쓰기와 정리 문제가 남는다는 답이다. Q2는 refresh 경쟁이 감지되면 client session이 지워져 이긴 요청의 새 token도 쓸 수 없다는 답이다. Q3는 Application Session과 OAuth2AuthorizedClient의 조회 키가 달라 각각 저장소를 결정해야 한다는 답이다. Q4는 위조 헤더가 permitAll echo까지 도착해도 JWT 보호 경로는 401이었고, 헤더 삭제 처방은 미적용이며 IdP claim 변경은 재인증 전까지 반영되지 않는다는 답이다.</desc>
|
||||
<metadata>{"techviz":{"spec_version":"1.1","id":"open-questions-answered","profile":"component-flow"},"source_context":{"document":"docs/keycloak-session-store/final/document.md","document_sha256":"28aef96a2bbb94fbb10ade26a71238fee62a5a4d9fa6e7749ae98cfd0a65e560","anchor":{"kind":"heading","value":"열린 질문 네 개에 대한 답","line":1221}},"evidence_policy":"Each factual element cites source lines or is marked assumption.","diagram_only":true}</metadata>
|
||||
<defs>
|
||||
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" />
|
||||
@@ -49,38 +49,47 @@
|
||||
.timeline-detail { font-size: 11px; fill: #4b5563; text-anchor: middle; }
|
||||
</style>
|
||||
</defs>
|
||||
<rect class="canvas" width="680" height="677" />
|
||||
<polyline class="edge kind-request style-solid emphasis-normal" points="150.0,131.0 150.0,179.0 150.0,179.0 150.0,227.0" data-evidence="682-692" />
|
||||
<rect class="edge-label-bg" x="148.2" y="165.0" width="51.5" height="22" rx="3" />
|
||||
<text class="edge-label" x="174.0" y="180.0">1차 검토</text>
|
||||
<polyline class="edge kind-request style-solid emphasis-normal" points="150.0,298.0 150.0,346.0 150.0,346.0 150.0,394.0" data-evidence="682-694" />
|
||||
<rect class="edge-label-bg" x="144.9" y="332.0" width="58.2" height="22" rx="3" />
|
||||
<text class="edge-label" x="174.0" y="347.0">미해결 잔여</text>
|
||||
<polyline class="edge kind-request style-solid emphasis-normal" points="150.0,465.0 150.0,513.0 150.0,513.0 150.0,561.0" data-evidence="682-696" />
|
||||
<rect class="edge-label-bg" x="148.2" y="499.0" width="51.5" height="22" rx="3" />
|
||||
<text class="edge-label" x="174.0" y="514.0">최종 잔여</text>
|
||||
<rect class="canvas" width="707" height="605" />
|
||||
<polyline class="edge kind-request style-solid emphasis-normal" points="223.0,288.0 329.2,288.0 329.2,95.5 435.5,95.5" data-evidence="1225-1225" />
|
||||
<rect class="edge-label-bg" x="331.2" y="177.7" width="44.0" height="22" rx="3" />
|
||||
<text class="edge-label" x="353.2" y="192.7">답</text>
|
||||
<polyline class="edge kind-request style-solid emphasis-normal" points="223.0,302.7 334.5,302.7 334.5,238.5 446.0,238.5" data-evidence="1226-1226" />
|
||||
<rect class="edge-label-bg" x="336.5" y="256.6" width="44.0" height="22" rx="3" />
|
||||
<text class="edge-label" x="358.5" y="271.6">답</text>
|
||||
<polyline class="edge kind-request style-solid emphasis-normal" points="223.0,317.3 325.8,317.3 325.8,381.5 428.5,381.5" data-evidence="1227-1227" />
|
||||
<rect class="edge-label-bg" x="327.8" y="335.4" width="44.0" height="22" rx="3" />
|
||||
<text class="edge-label" x="349.8" y="350.4">답</text>
|
||||
<polyline class="edge kind-request style-solid emphasis-normal" points="223.0,332.0 303.0,332.0 303.0,524.5 383.0,524.5" data-evidence="1228-1228" />
|
||||
<rect class="edge-label-bg" x="305.0" y="414.3" width="44.0" height="22" rx="3" />
|
||||
<text class="edge-label" x="327.0" y="429.3">답</text>
|
||||
<g id="node-questions">
|
||||
<rect class="node-shape kind-component emphasis-primary role-source" data-evidence="682-690" x="73.5" y="60.0" width="153.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="150.0" y="87.0">열린 질문 네 개</text>
|
||||
<line class="node-detail-divider" x1="87.5" y1="108.0" x2="212.5" y2="108.0" />
|
||||
<text class="node-detail" x="89.5" y="125.0">Q1 · Q2 · Q3 · Q4</text>
|
||||
<rect class="node-shape kind-component emphasis-primary role-source" data-evidence="1223-1228" x="70.0" y="274.5" width="153.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="146.5" y="301.5">열린 질문 네 개</text>
|
||||
<line class="node-detail-divider" x1="84.0" y1="322.5" x2="209.0" y2="322.5" />
|
||||
<text class="node-detail" x="86.0" y="339.5">Q1 · Q2 · Q3 · Q4</text>
|
||||
</g>
|
||||
<g id="node-store-choice">
|
||||
<rect class="node-shape kind-process emphasis-normal role-control" data-evidence="682-692" x="70.0" y="227.0" width="160.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="150.0" y="254.0">저장소 선택</text>
|
||||
<line class="node-detail-divider" x1="84.0" y1="275.0" x2="216.0" y2="275.0" />
|
||||
<text class="node-detail" x="86.0" y="292.0">Redis · PostgreSQL</text>
|
||||
<g id="node-q1">
|
||||
<rect class="node-shape kind-process emphasis-warning role-target" data-evidence="1225-1225" x="435.5" y="60.0" width="174.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="522.5" y="87.0">Q1 · 저장소와 스키마</text>
|
||||
<line class="node-detail-divider" x1="449.5" y1="108.0" x2="595.5" y2="108.0" />
|
||||
<text class="node-detail" x="451.5" y="125.0">외부 저장소 · 세션 id 없는 PK</text>
|
||||
</g>
|
||||
<g id="node-schema">
|
||||
<rect class="node-shape kind-process emphasis-warning role-control" data-evidence="682-694" x="75.0" y="394.0" width="150.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="150.0" y="421.0">스키마와 조회 키</text>
|
||||
<line class="node-detail-divider" x1="89.0" y1="442.0" x2="211.0" y2="442.0" />
|
||||
<text class="node-detail" x="91.0" y="459.0">키에 세션 id 없음</text>
|
||||
<g id="node-q2">
|
||||
<rect class="node-shape kind-process emphasis-warning role-target" data-evidence="1226-1226" x="446.0" y="203.0" width="153.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="522.5" y="230.0">Q2 · 회전 경쟁</text>
|
||||
<line class="node-detail-divider" x1="460.0" y1="251.0" x2="585.0" y2="251.0" />
|
||||
<text class="node-detail" x="462.0" y="268.0">이긴 새 token도 사용 불가</text>
|
||||
</g>
|
||||
<g id="node-snapshot">
|
||||
<rect class="node-shape kind-process emphasis-warning role-target" data-evidence="682-696" x="75.0" y="561.0" width="150.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="150.0" y="588.0">세션 스냅샷</text>
|
||||
<line class="node-detail-divider" x1="89.0" y1="609.0" x2="211.0" y2="609.0" />
|
||||
<text class="node-detail" x="91.0" y="626.0">옛 클레임 값</text>
|
||||
<g id="node-q3">
|
||||
<rect class="node-shape kind-process emphasis-normal role-target" data-evidence="1227-1227" x="428.5" y="346.0" width="188.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="522.5" y="373.0">Q3 · 조회 키 분리</text>
|
||||
<line class="node-detail-divider" x1="442.5" y1="394.0" x2="602.5" y2="394.0" />
|
||||
<text class="node-detail" x="444.5" y="411.0">session id · principal</text>
|
||||
</g>
|
||||
<g id="node-q4">
|
||||
<rect class="node-shape kind-process emphasis-warning role-target" data-evidence="1228-1228" x="383.0" y="489.0" width="279.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="522.5" y="516.0">Q4 · Edge 신뢰 경계</text>
|
||||
<line class="node-detail-divider" x1="397.0" y1="537.0" x2="648.0" y2="537.0" />
|
||||
<text class="node-detail" x="399.0" y="554.0">permitAll 200 · JWT 401 · 삭제 처방 미검증</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.8 KiB |
Reference in New Issue
Block a user