docs/diagrams/deployment-diagram.drawio
<mxfile host="Electron" modified="2024-03-19T14:23:26.526Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.0.4 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="lkPP9_9fma43i8LHyDrh" version="24.0.4" type="device" pages="2">
<diagram id="RsEBuL2j2FxcC2xUAIOb" name="System Landscape Diagram">
<mxGraphModel dx="1194" dy="824" 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="nZr1s_xvxv8HGBcKXtdm-15" value="Manage DIDs" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=10;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="nZr1s_xvxv8HGBcKXtdm-5" target="nZr1s_xvxv8HGBcKXtdm-13" edge="1">
<mxGeometry x="0.0769" y="10" relative="1" as="geometry">
<mxPoint x="290" y="340" as="targetPoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-5" value="<b>Customer Administration<br></b><font style="font-size: 10px;">[ system ]</font><br><br>Used to administer identities" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="30" y="290" width="180" height="100" as="geometry" />
</mxCell>
<mxCell id="WfkWgWw-5861kOZeiU1g-2" value="Register DID on service,<div>synchronize registered DIDs</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="nZr1s_xvxv8HGBcKXtdm-13" target="nxW3UQs6Lxfz1vIE0hKA-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="675" y="340" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-13" value="<b>Nuts<br></b><font style="font-size: 10px;">[ system ]</font><br><br>Manages identities and credentials<div>Negotiates access tokens</div><div>Synchronizes with Discovery Services</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="317.5" y="290" width="225" height="100" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-16" value="<font style=""><b>Resource Server<br></b></font><font style="font-size: 10px;">[ system ]</font><br><br>(depends on use case, e.g. medical data of customer's patients)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="315.5" y="130" width="175" height="100" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-25" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=10;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="nZr1s_xvxv8HGBcKXtdm-22" target="nZr1s_xvxv8HGBcKXtdm-5" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="115" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-26" value="<font style="font-size: 11px;">Manage identities and<div style="font-size: 10px;"><font style="font-size: 11px;">discoverability for use cases<br>[ browser ]</font></div></font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" parent="nZr1s_xvxv8HGBcKXtdm-25" vertex="1" connectable="0">
<mxGeometry x="-0.0857" y="2" relative="1" as="geometry">
<mxPoint x="-2" y="16" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-22" value="<span style="background-color: rgb(255, 255, 255);">Administrator<br></span>" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
<mxGeometry x="105" y="90" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-28" value="Local Party" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;dashed=1;fontSize=13;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="30" y="50" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-35" value="<span style="font-size: 11px;">Access protected resources</span>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=10;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="nZr1s_xvxv8HGBcKXtdm-38" target="Q3GsZa3JKKng3efH_Hw1-3" edge="1">
<mxGeometry x="-0.4118" relative="1" as="geometry">
<mxPoint x="690" y="490" as="targetPoint" />
<mxPoint as="offset" />
<mxPoint x="840" y="520" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-46" value="<span style="font-size: 11px;">Negotiate access tokens,</span><div><span style="font-size: 11px;">Resolve DIDs</span></div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=13;entryX=0.5;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="nZr1s_xvxv8HGBcKXtdm-37" target="nZr1s_xvxv8HGBcKXtdm-13" edge="1">
<mxGeometry x="-0.0667" relative="1" as="geometry">
<mxPoint x="430" y="450" as="targetPoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-37" value="<b>Nuts Node<br></b><font style="font-size: 10px;">[ system ]</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="365" y="540" width="130" height="70" as="geometry" />
</mxCell>
<mxCell id="Q3GsZa3JKKng3efH_Hw1-5" value="Get<div>access token</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="nZr1s_xvxv8HGBcKXtdm-38" target="nZr1s_xvxv8HGBcKXtdm-37" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-38" value="<font style=""><b>Resource Viewer<br></b></font><font style="font-size: 10px;">[ system ]</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="610" y="540" width="120" height="70" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-43" value="Remote Party" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;dashed=1;fontSize=13;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="30" y="530" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-47" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;fontSize=13;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="30" y="520" as="sourcePoint" />
<mxPoint x="880" y="520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-50" value="<b>System of other SP</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="30" y="880" width="150" height="50" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-51" value="Legend" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;dashed=1;fontSize=13;fontStyle=5" parent="1" vertex="1">
<mxGeometry x="30" y="730" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="nZr1s_xvxv8HGBcKXtdm-53" value="<b>Non-Nuts system of the local SP / care organization</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="30" y="820" width="150" height="50" as="geometry" />
</mxCell>
<mxCell id="7HOEhPl6AeZOWrZ2KhyJ-1" value="<b>Nuts system of the local SP</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="30" y="760" width="150" height="50" as="geometry" />
</mxCell>
<mxCell id="I-DHWrx8JUp1F3W_3w0v-1" value="<b>Nuts Node System Landscape Diagram</b>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;" parent="1" vertex="1">
<mxGeometry x="200" y="10" width="440" height="30" as="geometry" />
</mxCell>
<mxCell id="TUtzicrxZ2ia3vebERb_-4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;jumpStyle=arc;orthogonalLoop=1;jettySize=auto;html=1;fontSize=10;strokeWidth=1;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" parent="1" source="lqj40UPQKe0FeM-HE5OF-1" target="nZr1s_xvxv8HGBcKXtdm-13" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="320" y="450" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="TUtzicrxZ2ia3vebERb_-5" value="Monitor status/metrics/logs" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" parent="TUtzicrxZ2ia3vebERb_-4" vertex="1" connectable="0">
<mxGeometry x="-0.2195" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="lqj40UPQKe0FeM-HE5OF-1" value="<b>Monitoring<br></b><font style="font-size: 11px;"><font style="font-size: 11px;">[ system ]</font><br></font><br>Monitors services,<br>collects metrics and logs" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="30" y="400" width="180" height="100" as="geometry" />
</mxCell>
<mxCell id="Q3GsZa3JKKng3efH_Hw1-4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Q3GsZa3JKKng3efH_Hw1-3" target="nZr1s_xvxv8HGBcKXtdm-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="QaRcAgpuvo49QnjbLQMJ-8" value="allow<div>access</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Q3GsZa3JKKng3efH_Hw1-4" vertex="1" connectable="0">
<mxGeometry x="0.1778" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="QaRcAgpuvo49QnjbLQMJ-12" value="Authorize<div>request for</div><div>use case</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="Q3GsZa3JKKng3efH_Hw1-3" target="QaRcAgpuvo49QnjbLQMJ-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Q3GsZa3JKKng3efH_Hw1-3" value="<font style=""><b>Policy Enforcement Point</b></font><div><font style="font-size: 10px;">[ system ]</font><br><br>Authorizes access through OAuth2 and PDP, typically an API Gateway</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="580.5" y="130" width="180" height="100" as="geometry" />
</mxCell>
<mxCell id="nxW3UQs6Lxfz1vIE0hKA-1" value="<font style=""><b>Discovery Server<br></b></font><font style="font-size: 10px;">[ system ]</font><div><font style="font-size: 10px;"><br></font></div><div><font style="font-size: 10px;"><span style="font-size: 12px;">Manages registrations (Verifiable Presentations) on a Discovery Service</span><br></font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="680" y="660" width="200" height="100" as="geometry" />
</mxCell>
<mxCell id="QaRcAgpuvo49QnjbLQMJ-5" value="Other" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;dashed=1;fontSize=13;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="30" y="640" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="QaRcAgpuvo49QnjbLQMJ-6" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;fontSize=13;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="30" y="630" as="sourcePoint" />
<mxPoint x="880" y="630" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="QaRcAgpuvo49QnjbLQMJ-7" value="<font style=""><b>Policy Decision Point</b></font><div><font style="font-size: 10px;">[ system ]</font><br><br>Makes authorization decisions given the use case's policy</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="840" y="130" width="180" height="100" as="geometry" />
</mxCell>
<mxCell id="QaRcAgpuvo49QnjbLQMJ-10" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;" parent="1" source="Q3GsZa3JKKng3efH_Hw1-3" target="nZr1s_xvxv8HGBcKXtdm-13" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="310" as="sourcePoint" />
<mxPoint x="600" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="QaRcAgpuvo49QnjbLQMJ-11" value="Introspect OAuth2<div>access token</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="QaRcAgpuvo49QnjbLQMJ-10" vertex="1" connectable="0">
<mxGeometry x="-0.0852" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="V-6K89S_kqe5WIdJ8vyh" name="Container Diagram">
<mxGraphModel dx="1194" dy="824" 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="x2Qut-l0ZhKx_QRdccFG-1" value="<font style="font-size: 11px;">Manage DIDs<br>[ HTTP: :8081 ]</font>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=10;entryX=0.002;entryY=0.1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="x2Qut-l0ZhKx_QRdccFG-2" target="x2Qut-l0ZhKx_QRdccFG-8" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="290" y="613" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="x2Qut-l0ZhKx_QRdccFG-2" value="<b>Administration<br></b><font style="font-size: 11px;"><font style="font-size: 11px;">[ system ]</font><br></font><br>Used to administer identities" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="25" y="523" width="180" height="100" as="geometry" />
</mxCell>
<mxCell id="ehPlBRrDmDGYRuR8fdLt-12" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=11;strokeWidth=1;exitX=0.119;exitY=1.03;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;" parent="1" source="x2Qut-l0ZhKx_QRdccFG-8" target="_RRxC_tLSVQTTaB8x7Jw-8" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="465" y="663" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="IOCf1MQmqLf0axdGfr9W-4" value="Store/use private keys of <br>DID documents<br>[ HTTP ]" style="edgeStyle=orthogonalEdgeStyle;rounded=0;jumpStyle=arc;orthogonalLoop=1;jettySize=auto;html=1;fontSize=10;startArrow=none;startFill=0;strokeWidth=1;exitX=0.519;exitY=1.02;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="x2Qut-l0ZhKx_QRdccFG-8" target="IOCf1MQmqLf0axdGfr9W-2" edge="1">
<mxGeometry x="0.1765" relative="1" as="geometry">
<mxPoint x="535" y="743" as="targetPoint" />
<mxPoint as="offset" />
<Array as="points">
<mxPoint x="558" y="693" />
<mxPoint x="559" y="693" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nRIUPZkFJP7h9maNa5DA-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;jumpStyle=arc;orthogonalLoop=1;jettySize=auto;html=1;fontSize=11;startArrow=none;startFill=0;strokeWidth=1;exitX=0.902;exitY=0.995;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" source="x2Qut-l0ZhKx_QRdccFG-8" target="O-EjuFgS05vvKBtpSWUI-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nRIUPZkFJP7h9maNa5DA-4" value="OAuth2 flows,<div>DID resolving<br>[ HTTPS ]</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;" parent="nRIUPZkFJP7h9maNa5DA-3" vertex="1" connectable="0">
<mxGeometry x="-0.1737" y="3" relative="1" as="geometry">
<mxPoint x="-11" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="kTtKYcXZKeHEBj9DDNKn-14" value="Register DID on service,<div>synchronize registered DIDs</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="x2Qut-l0ZhKx_QRdccFG-8" target="kTtKYcXZKeHEBj9DDNKn-7" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1060" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="x2Qut-l0ZhKx_QRdccFG-8" value="<b>Nuts Node<br></b><font style="font-size: 11px;"><font style="font-size: 11px;">[ docker ]</font><br></font><br>Manages identities and credentials<div>Negotiates access tokens</div><div>Synchronizes with Discovery Services<br></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="340" y="563" width="420" height="100" as="geometry" />
</mxCell>
<mxCell id="x2Qut-l0ZhKx_QRdccFG-11" value="<font style=""><b>Resource Server<br></b></font><font style="font-size: 11px;"><font style="font-size: 11px;">[ system ]</font><br></font><br>(depends on use case, e.g. medical data of customer's patients)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="344" y="440" width="180" height="100" as="geometry" />
</mxCell>
<mxCell id="x2Qut-l0ZhKx_QRdccFG-12" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=10;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="x2Qut-l0ZhKx_QRdccFG-14" target="x2Qut-l0ZhKx_QRdccFG-2" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="115" y="220" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="x2Qut-l0ZhKx_QRdccFG-13" value="<font style="font-size: 11px;">Manage identities and</font><div><font style="font-size: 11px;">discoverability for use cases<br>[ browser ]<br></font></div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=10;" parent="x2Qut-l0ZhKx_QRdccFG-12" vertex="1" connectable="0">
<mxGeometry x="-0.0857" y="2" relative="1" as="geometry">
<mxPoint x="-2" y="16" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="x2Qut-l0ZhKx_QRdccFG-15" value="Local Party" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;dashed=1;fontSize=13;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="11.5" y="69" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="x2Qut-l0ZhKx_QRdccFG-14" value="<span style="background-color: rgb(255, 255, 255);">Administrator<br></span>" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;fillColor=default;" parent="1" vertex="1">
<mxGeometry x="100" y="140" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="dxS8jxl4kUl2gUgPd0Wk-8" value="OAuth2 flows, DID resolving<br>[ HTTPS ]" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=11;strokeWidth=2;jumpStyle=arc;jumpSize=11;fillColor=#e51400;strokeColor=#B20000;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" parent="1" source="O-EjuFgS05vvKBtpSWUI-1" target="ehPlBRrDmDGYRuR8fdLt-5" edge="1">
<mxGeometry x="0.6529" relative="1" as="geometry">
<mxPoint x="1041.25" y="1049.5" as="sourcePoint" />
<mxPoint x="1010" y="439.5" as="targetPoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="O-EjuFgS05vvKBtpSWUI-1" value="<b>Nuts Node<br></b><font style="font-size: 10px;">[ system ]</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="690" y="950" width="135" height="60" as="geometry" />
</mxCell>
<mxCell id="_RRxC_tLSVQTTaB8x7Jw-1" value="<b>System of other SP / External system</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="25" y="1050" width="150" height="50" as="geometry" />
</mxCell>
<mxCell id="_RRxC_tLSVQTTaB8x7Jw-2" value="Legend" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;dashed=1;fontSize=13;fontStyle=5" parent="1" vertex="1">
<mxGeometry x="25" y="900" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="_RRxC_tLSVQTTaB8x7Jw-3" value="<b>Non-Nuts system of the local SP</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="25" y="990" width="150" height="50" as="geometry" />
</mxCell>
<mxCell id="_RRxC_tLSVQTTaB8x7Jw-4" value="<b>Nuts system of the local SP</b>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="25" y="930" width="150" height="50" as="geometry" />
</mxCell>
<mxCell id="_RRxC_tLSVQTTaB8x7Jw-8" value="Data storage<br><span style="font-weight: normal; font-size: 11px;">[ SQL database ]</span><br><span style="font-size: 12px; font-weight: 400;">Stores DIDs, and VCs</span>" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fontSize=13;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="315" y="734" width="150" height="79" as="geometry" />
</mxCell>
<mxCell id="_RRxC_tLSVQTTaB8x7Jw-9" value="<b>Nuts Node Container Diagram<br></b>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;" parent="1" vertex="1">
<mxGeometry x="194" y="10" width="440" height="30" as="geometry" />
</mxCell>
<mxCell id="ehPlBRrDmDGYRuR8fdLt-4" value="<font style="font-size: 11px;">Monitor node status<br>[ HTTP: :8081/status]<br></font>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=15;strokeWidth=1;entryX=-0.005;entryY=0.39;entryDx=0;entryDy=0;exitX=1.005;exitY=0.139;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="ehPlBRrDmDGYRuR8fdLt-3" target="x2Qut-l0ZhKx_QRdccFG-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ehPlBRrDmDGYRuR8fdLt-3" value="<b>Monitoring<br></b><font style="font-size: 11px;">[ system ]<br></font><br>Monitors services,<br>collects metrics and logs" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="25" y="633" width="180" height="85" as="geometry" />
</mxCell>
<mxCell id="dxS8jxl4kUl2gUgPd0Wk-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=12;strokeWidth=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="1" source="ehPlBRrDmDGYRuR8fdLt-5" target="x2Qut-l0ZhKx_QRdccFG-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="dxS8jxl4kUl2gUgPd0Wk-3" value="<font style="font-size: 11px;">Proxy<br>[ HTTP:8080 ]</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" parent="dxS8jxl4kUl2gUgPd0Wk-2" vertex="1" connectable="0">
<mxGeometry x="-0.0877" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="fuF0RcqsqV7eixx_joqQ-8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="ehPlBRrDmDGYRuR8fdLt-5" target="fuF0RcqsqV7eixx_joqQ-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="fuF0RcqsqV7eixx_joqQ-9" value="Authorize<div>request for</div><div>use case</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="fuF0RcqsqV7eixx_joqQ-8" vertex="1" connectable="0">
<mxGeometry x="-0.2" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ehPlBRrDmDGYRuR8fdLt-5" value="<font style=""><b>Proxy / Policy Enforcement Point</b></font><div><font style="font-size: 11px;"><font style="font-size: 11px;">[ NGINX / HAproxy / APISIX / etc ]</font><br></font><br>Gateway for:<div>- accessing Nuts Node from the outside</div><div>- manageas access to Resource Server</div><div><br></div><div>Terminates TLS</div></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="540" y="250" width="220" height="120" as="geometry" />
</mxCell>
<mxCell id="uDHW2id99aylv9dnx3-l-1" value="<font style="font-size: 11px;">Collect metrics<br>[ HTTP: :8081/metrics]<br></font>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=15;strokeWidth=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=-0.007;entryY=0.87;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="ehPlBRrDmDGYRuR8fdLt-3" target="x2Qut-l0ZhKx_QRdccFG-8" edge="1">
<mxGeometry x="-0.007" relative="1" as="geometry">
<mxPoint x="215" y="738" as="sourcePoint" />
<mxPoint x="360" y="683" as="targetPoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="KLxqLItcgrM7DC0CsMkn-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="KLxqLItcgrM7DC0CsMkn-1" target="ehPlBRrDmDGYRuR8fdLt-5" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="992.5" y="850" as="sourcePoint" />
<mxPoint x="1040" y="350" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Rffyl1ibUIpWuX3uxQtP-1" value="Access protected resources" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="KLxqLItcgrM7DC0CsMkn-3" vertex="1" connectable="0">
<mxGeometry x="0.1024" y="-3" relative="1" as="geometry">
<mxPoint x="-3" y="-286" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOqEdcKxVY7kOjAuLzO5-1" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;fontSize=13;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="12.5" y="880" as="sourcePoint" />
<mxPoint x="1092.5" y="880" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="kTtKYcXZKeHEBj9DDNKn-8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="KLxqLItcgrM7DC0CsMkn-1" target="O-EjuFgS05vvKBtpSWUI-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="900" y="1000" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="kTtKYcXZKeHEBj9DDNKn-9" value="get OAuth2<div>access token</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="kTtKYcXZKeHEBj9DDNKn-8" vertex="1" connectable="0">
<mxGeometry x="-0.1429" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="KLxqLItcgrM7DC0CsMkn-1" value="<font style=""><b>Resource Viewer<br></b></font><font style="font-size: 10px;">[ system ]</font>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="680" y="1060" width="160" height="70" as="geometry" />
</mxCell>
<mxCell id="IOCf1MQmqLf0axdGfr9W-2" value="Private Key Storage<br><span style="font-weight: normal; font-size: 11px;">[ vault ]</span><br><font style="font-size: 12px;"><span style="font-weight: normal;">S</span><span style="font-weight: normal;">torage of private keys</span></font>" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fontSize=13;fillColor=#e1d5e7;strokeColor=#9673a6;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="484" y="734" width="150" height="80" as="geometry" />
</mxCell>
<mxCell id="u5o7FcwqiVioV4mDeCkN-1" value="External, incoming call" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#e51400;strokeColor=#B20000;strokeWidth=2;" parent="1" edge="1">
<mxGeometry x="-0.0572" relative="1" as="geometry">
<mxPoint x="25" y="1130" as="targetPoint" />
<mxPoint as="offset" />
<mxPoint x="173.5" y="1130" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="u5o7FcwqiVioV4mDeCkN-2" value="<font style="font-size: 11px;">Internal or outgoing call</font>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;jumpStyle=arc;orthogonalLoop=1;jettySize=auto;html=1;fontSize=10;strokeWidth=1;" parent="1" edge="1">
<mxGeometry x="-0.0667" relative="1" as="geometry">
<mxPoint x="173.5" y="1156" as="sourcePoint" />
<mxPoint x="23.5" y="1156" as="targetPoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="r1Tt2wERg0TToz4Et71T-1" value="Remote Party" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;dashed=1;fontSize=13;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="840" y="880" width="90" height="30" as="geometry" />
</mxCell>
<mxCell id="fuF0RcqsqV7eixx_joqQ-7" value="<font style=""><b>Policy Decision Point<br></b></font><font style="font-size: 11px;"><font style="font-size: 11px;">[ e.g. Open Policy Agent ]</font><br></font><div><br></div><div>Authorizes access to Resource Server</div><div><br></div><div>(depends on use case)</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="326" y="250" width="139" height="120" as="geometry" />
</mxCell>
<mxCell id="kTtKYcXZKeHEBj9DDNKn-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="kTtKYcXZKeHEBj9DDNKn-1" target="fuF0RcqsqV7eixx_joqQ-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="kTtKYcXZKeHEBj9DDNKn-1" value="Authz policies (static or dynamic)" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
<mxGeometry x="180" y="265" width="107" height="90" as="geometry" />
</mxCell>
<mxCell id="kTtKYcXZKeHEBj9DDNKn-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;jumpStyle=arc;orthogonalLoop=1;jettySize=auto;html=1;fontSize=11;startArrow=none;startFill=0;strokeWidth=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="ehPlBRrDmDGYRuR8fdLt-5" target="x2Qut-l0ZhKx_QRdccFG-11" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1080" y="30" as="sourcePoint" />
<mxPoint x="1020" y="380" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="kTtKYcXZKeHEBj9DDNKn-6" value="Proxy" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;" parent="kTtKYcXZKeHEBj9DDNKn-5" vertex="1" connectable="0">
<mxGeometry x="-0.1737" y="3" relative="1" as="geometry">
<mxPoint x="-11" y="-8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="kTtKYcXZKeHEBj9DDNKn-7" value="<b>Discovery Server<br></b><font style="font-size: 10px;">[ Nuts Node ]</font><div><font style="font-size: 10px;"><br></font></div><div>Manages registrations (Verifiable Presentations) on a Discovery Service</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="970" y="558" width="190" height="110" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>