<mxfile host="65bd71144e">
    <diagram id="kBUSl4Twz2xUubsumQ87" name="第 1 页">
        <mxGraphModel dx="830" dy="442" 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="24" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="380" y="230" width="330" height="180" as="geometry"/>
                </mxCell>
                <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="60" y="230" width="320" height="180" as="geometry"/>
                </mxCell>
                <mxCell id="3" value="client" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="60" y="90" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="4" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="3">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="120" y="226" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="5" value="HTTP API" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="4">
                    <mxGeometry x="-0.1648" y="6" relative="1" as="geometry">
                        <mxPoint as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="6" value="Basic Auth: base64(用户名:密码)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
                    <mxGeometry x="160" y="170" width="180" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="9" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="7" target="8">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="10" value="user/pass" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="9">
                    <mxGeometry x="-0.0981" y="-3" relative="1" as="geometry">
                        <mxPoint as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="7" value="权限拦截器" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="70" y="250" width="120" height="45" as="geometry"/>
                </mxCell>
                <mxCell id="8" value="用户模块" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="250" y="250" width="120" height="45" as="geometry"/>
                </mxCell>
                <mxCell id="11" value="client" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="380" y="90" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="12" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="11">
                    <mxGeometry relative="1" as="geometry">
                        <mxPoint x="440" y="230" as="targetPoint"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="13" value="基于访问令牌" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
                    <mxGeometry x="460" y="170" width="180" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="17" style="edgeStyle=orthogonalEdgeStyle;html=1;exitX=0;exitY=0.3333333333333333;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="15" target="16">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="18" value="用自己的身份信息 换一个凭证&lt;div&gt;1. user/pass&lt;/div&gt;&lt;div&gt;2. 手机登录&lt;/div&gt;&lt;div&gt;3. 三分认证: 飞书/支付宝&lt;/div&gt;&lt;div&gt;4. LDAP 凭证&lt;/div&gt;&lt;div&gt;...&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="17">
                    <mxGeometry x="0.3099" y="-1" relative="1" as="geometry">
                        <mxPoint as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="15" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1">
                    <mxGeometry x="730" y="60" width="30" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="16" value="令牌颁发" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="570" y="250" width="120" height="45" as="geometry"/>
                </mxCell>
                <mxCell id="19" value="业务服务" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="80" y="350" width="120" height="45" as="geometry"/>
                </mxCell>
                <mxCell id="20" value="业务服务" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="390" y="350" width="120" height="45" as="geometry"/>
                </mxCell>
                <mxCell id="21" value="业务服务" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="580" y="350" width="120" height="45" as="geometry"/>
                </mxCell>
                <mxCell id="23" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="22" target="16">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="22" value="权限拦截器" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="390" y="250" width="120" height="45" as="geometry"/>
                </mxCell>
                <mxCell id="25" value="操作&lt;div&gt;具体的接口&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="560" y="510" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="32" style="edgeStyle=none;html=1;exitX=1;exitY=0.3333333333333333;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="26" target="29">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="26" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1">
                    <mxGeometry x="110" y="500" width="30" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="27" value="Who&amp;nbsp; &amp;nbsp; &amp;nbsp;角色&amp;nbsp; &amp;nbsp;Namespace&lt;div&gt;A&amp;nbsp; 开发 项目A&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="90" y="640" width="330" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="28" value="授权" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
                    <mxGeometry x="90" y="610" width="60" height="30" as="geometry"/>
                </mxCell>
                <mxCell id="30" style="edgeStyle=none;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="29" target="25">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="31" value="1:N&amp;nbsp; 多个权限的集合" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="30">
                    <mxGeometry x="0.3254" y="2" relative="1" as="geometry">
                        <mxPoint x="-30" as="offset"/>
                    </mxGeometry>
                </mxCell>
                <mxCell id="29" value="角色&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="293.5" y="510" width="120" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="34" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="100" y="810" width="790" height="150" as="geometry"/>
                </mxCell>
                <mxCell id="37" style="html=1;exitX=1;exitY=0.3333333333333333;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="35" target="38">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="35" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1">
                    <mxGeometry x="50" y="720" width="30" height="60" as="geometry"/>
                </mxCell>
                <mxCell id="36" value="资源" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="120" y="890" width="120" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="39" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="36">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="41" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="40">
                    <mxGeometry relative="1" as="geometry"/>
                </mxCell>
                <mxCell id="38" value="权限拦截器" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="120" y="830" width="120" height="45" as="geometry"/>
                </mxCell>
                <mxCell id="40" value="授权策略&lt;div&gt;用户的授权策略&lt;/div&gt;&lt;div&gt;User, Name, 接口&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="294" y="830" width="120" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="42" value="空间&lt;div&gt;Namepsace&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="460" y="825" width="120" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="43" value="角色&lt;div&gt;Role&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="620" y="825" width="120" height="50" as="geometry"/>
                </mxCell>
                <mxCell id="44" value="接口列表" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
                    <mxGeometry x="760" y="825" width="120" height="55" as="geometry"/>
                </mxCell>
            </root>
        </mxGraphModel>
    </diagram>
</mxfile>