Files
document-haness/docs/keycloak-session-store/final/assets/open-questions-answered/open-questions-answered.drawio
T

47 lines
4.5 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2026-07-23T00:00:00.000Z" agent="techviz-harness" version="24.7.17" type="device">
<diagram id="open-questions-answered" name="열린 질문 네 개가 닿은 곳">
<mxGraphModel dx="707" dy="605" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="n_questions" value="열린 질문 네 개&lt;br/&gt;Q1 · Q2 · Q3 · Q4" tooltip="설계만으로는 닫히지 않았던 Q1부터 Q4다. | Evidence: L1223-L1228" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="70.0" y="274.5" width="153.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_q1" value="Q1 · 저장소와 스키마&lt;br/&gt;외부 저장소 · 세션 id 없는 PK" tooltip="①②는 외부 저장소로 풀리고 ③④는 기본키 문제로 남는다. | Evidence: L1225-L1225" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="435.5" y="60.0" width="174.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_q2" value="Q2 · 회전 경쟁&lt;br/&gt;이긴 새 token도 사용 불가" tooltip="경쟁이 감지되면 client session이 지워진다. | Evidence: L1226-L1226" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="446.0" y="203.0" width="153.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_q3" value="Q3 · 조회 키 분리&lt;br/&gt;session id · principal" tooltip="Session과 AuthorizedClient는 각각 결정해야 한다. | Evidence: L1227-L1227" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="428.5" y="346.0" width="188.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_q4" value="Q4 · Edge 신뢰 경계&lt;br/&gt;permitAll 200 · JWT 401 · 삭제 처방 미검증" tooltip="헤더 도착과 인가 우회는 다르고 claim은 재인증까지 snapshot이다. | Evidence: L1228-L1228" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="383.0" y="489.0" width="279.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="e_questions-q1" value="답" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_q1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="353.2" y="191.7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_questions-q2" value="답" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_q2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="358.5" y="270.6" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_questions-q3" value="답" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_q3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="349.8" y="349.4" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_questions-q4" value="답" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_questions" target="n_q4">
<mxGeometry relative="1" as="geometry">
<mxPoint x="327.0" y="428.3" as="offset"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>