<mxfile host="Electron" version="29.6.1">
  <diagram name="Entra-Cognito-Federation" id="diagram-1">
    <mxGraphModel dx="1600" dy="1000" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="1170" pageHeight="740" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>

        <!-- Titelblock -->
        <mxCell id="title-group" connectable="0" style="group;fontFamily=Helvetica;" value="" vertex="1" parent="1"><mxGeometry x="50" y="30" width="1060" height="83" as="geometry"/></mxCell>
        <mxCell id="title-text" style="text;html=1;align=left;verticalAlign=top;spacingTop=-4;fontSize=30;fontStyle=1;fontFamily=Helvetica;" value="Entra ID (Azure AD)  &#8596;  Amazon Cognito" vertex="1" parent="title-group"><mxGeometry width="1040" height="42" as="geometry"/></mxCell>
        <mxCell id="subtitle-text" style="text;html=1;align=left;verticalAlign=top;spacingTop=-4;fontSize=16;fontFamily=Helvetica;" value="SAML-Federation f&#252;r die Capita Web-Tools &#183; Shared Cognito Pool (Telag PROD)" vertex="1" parent="title-group"><mxGeometry x="5" y="40" width="1040" height="25" as="geometry"/></mxCell>
        <mxCell id="title-separator" style="line;strokeWidth=2;html=1;strokeColor=#FF9900;fontFamily=Helvetica;" value="" vertex="1" parent="title-group"><mxGeometry x="5" y="70" width="1050" height="10" as="geometry"/></mxCell>

        <!-- AWS Cloud Container -->
        <mxCell id="aws-cloud" value="AWS Cloud  &#183;  eu-central-1" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=14;fontStyle=1;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud;strokeColor=#232F3E;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#232F3E;dashed=0;container=0;pointerEvents=0;collapsible=0;fontFamily=Helvetica;" vertex="1" parent="1"><mxGeometry x="270" y="140" width="830" height="240" as="geometry"/></mxCell>

        <!-- Azure Container -->
        <mxCell id="azure-cloud" value="Microsoft Azure  &#183;  Entra ID Tenant" style="rounded=1;arcSize=3;html=1;whiteSpace=wrap;fontSize=14;fontStyle=1;strokeColor=#0078D4;fillColor=#EAF1FB;verticalAlign=top;align=left;spacingLeft=14;spacingTop=8;fontColor=#0078D4;dashed=0;container=0;pointerEvents=0;collapsible=0;fontFamily=Helvetica;" vertex="1" parent="1"><mxGeometry x="470" y="470" width="360" height="190" as="geometry"/></mxCell>

        <!-- User -->
        <mxCell id="svc-group-user" value="Mitarbeiter" style="fillColor=#F5F5F5;strokeColor=#666666;rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=8;fontStyle=1;fontSize=12;fontColor=#333333;fontFamily=Helvetica;container=1;collapsible=0;shadow=1;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="80" y="190" width="120" height="120" as="geometry"/></mxCell>
        <mxCell id="svc-user" value="User / Browser" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#232F3E;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.users;fontFamily=Helvetica;" vertex="1" parent="svc-group-user"><mxGeometry x="36" y="30" width="48" height="48" as="geometry"/></mxCell>

        <!-- Web-Tools (CloudFront) -->
        <mxCell id="svc-group-web" value="Web-Tools" style="fillColor=#EDE7F6;strokeColor=#8C4FFF;rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=8;fontStyle=1;fontSize=12;fontColor=#8C4FFF;fontFamily=Helvetica;container=1;collapsible=0;shadow=1;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="310" y="190" width="120" height="120" as="geometry"/></mxCell>
        <mxCell id="svc-web" value="Apps Portal&lt;div&gt;&lt;i&gt;CloudFront + S3&lt;/i&gt;&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudfront;fontFamily=Helvetica;" vertex="1" parent="svc-group-web"><mxGeometry x="36" y="30" width="48" height="48" as="geometry"/></mxCell>

        <!-- Cognito (Broker) -->
        <mxCell id="svc-group-cognito" value="Auth · Broker" style="fillColor=#FFEBEE;strokeColor=#DD344C;rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=8;fontStyle=1;fontSize=12;fontColor=#DD344C;fontFamily=Helvetica;container=1;collapsible=0;shadow=1;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="530" y="190" width="120" height="120" as="geometry"/></mxCell>
        <mxCell id="svc-cognito" value="Amazon Cognito&lt;div&gt;&lt;i&gt;User Pool · SP&lt;/i&gt;&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cognito;fontFamily=Helvetica;" vertex="1" parent="svc-group-cognito"><mxGeometry x="36" y="30" width="48" height="48" as="geometry"/></mxCell>

        <!-- Lambda (Pre-Token) -->
        <mxCell id="svc-group-lambda" value="Compute" style="fillColor=#FFF2E8;strokeColor=#ED7100;rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=8;fontStyle=1;fontSize=12;fontColor=#ED7100;fontFamily=Helvetica;container=1;collapsible=0;shadow=1;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="750" y="190" width="120" height="120" as="geometry"/></mxCell>
        <mxCell id="svc-lambda" value="Pre-Token Lambda&lt;div&gt;&lt;i&gt;App-Zugriff + Gruppen&lt;/i&gt;&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;fontFamily=Helvetica;" vertex="1" parent="svc-group-lambda"><mxGeometry x="36" y="30" width="48" height="48" as="geometry"/></mxCell>

        <!-- DynamoDB (App-Access) -->
        <mxCell id="svc-group-ddb" value="Database" style="fillColor=#F5E6F7;strokeColor=#C925D1;rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=8;fontStyle=1;fontSize=12;fontColor=#C925D1;fontFamily=Helvetica;container=1;collapsible=0;shadow=1;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="970" y="190" width="120" height="120" as="geometry"/></mxCell>
        <mxCell id="svc-ddb" value="DynamoDB&lt;div&gt;&lt;i&gt;app-access · Gruppen&lt;/i&gt;&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#C925D1;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.dynamodb;fontFamily=Helvetica;" vertex="1" parent="svc-group-ddb"><mxGeometry x="36" y="30" width="48" height="48" as="geometry"/></mxCell>

        <!-- Entra ID (Azure IdP) -->
        <mxCell id="svc-group-entra" value="Identity Provider" style="fillColor=#DEEBFA;strokeColor=#0078D4;rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=8;fontStyle=1;fontSize=12;fontColor=#0078D4;fontFamily=Helvetica;container=1;collapsible=0;shadow=1;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="530" y="505" width="120" height="120" as="geometry"/></mxCell>
        <mxCell id="svc-entra" value="Microsoft Entra ID&lt;div&gt;&lt;i&gt;IdP · MFA · Cond. Access&lt;/i&gt;&lt;/div&gt;" style="sketch=0;html=1;aspect=fixed;outlineConnect=0;fontColor=#232F3E;fontSize=10;verticalLabelPosition=bottom;verticalAlign=top;align=center;fontFamily=Helvetica;shape=image;image=img/lib/azure2/identity/Azure_Active_Directory.svg;" vertex="1" parent="svc-group-entra"><mxGeometry x="36" y="30" width="48" height="48" as="geometry"/></mxCell>

        <!-- ==================== KANTEN (an Karten, nicht Icons) ==================== -->
        <mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle;rounded=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#4A5568;strokeWidth=2;fontColor=#232F3E;fontFamily=Helvetica;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="svc-group-user" target="svc-group-web"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e1-l" value="1  Aufruf (HTTPS)" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;fontFamily=Helvetica;labelBackgroundColor=#FFFFFF;fontColor=#232F3E;" connectable="0" vertex="1" parent="e1"><mxGeometry relative="1" as="geometry"><mxPoint y="-12" as="offset"/></mxGeometry></mxCell>

        <mxCell id="e2" style="edgeStyle=orthogonalEdgeStyle;rounded=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#4A5568;strokeWidth=2;fontColor=#232F3E;fontFamily=Helvetica;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="svc-group-web" target="svc-group-cognito"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e2-l" value="2  Login-Redirect · PKCE" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;fontFamily=Helvetica;labelBackgroundColor=#FFFFFF;fontColor=#232F3E;" connectable="0" vertex="1" parent="e2"><mxGeometry relative="1" as="geometry"><mxPoint y="-12" as="offset"/></mxGeometry></mxCell>

        <mxCell id="e3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#0F6CBD;strokeWidth=2;fontColor=#0F5BA8;fontFamily=Helvetica;fontSize=11;exitX=0.35;exitY=1;entryX=0.35;entryY=0;" edge="1" parent="1" source="svc-group-cognito" target="svc-group-entra"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e3-l" value="3  SAML AuthnRequest" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;fontFamily=Helvetica;labelBackgroundColor=#FFFFFF;fontColor=#0F5BA8;" connectable="0" vertex="1" parent="e3"><mxGeometry relative="1" as="geometry"><mxPoint x="-72" as="offset"/></mxGeometry></mxCell>

        <mxCell id="e4" style="edgeStyle=orthogonalEdgeStyle;rounded=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#0F6CBD;strokeWidth=2;fontColor=#0F5BA8;fontFamily=Helvetica;fontSize=11;exitX=0.65;exitY=0;entryX=0.65;entryY=1;" edge="1" parent="1" source="svc-group-entra" target="svc-group-cognito"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e4-l" value="5  SAML-Assertion&#10;emailaddress = UPN" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;fontFamily=Helvetica;labelBackgroundColor=#FFFFFF;fontColor=#0F5BA8;" connectable="0" vertex="1" parent="e4"><mxGeometry relative="1" as="geometry"><mxPoint x="92" as="offset"/></mxGeometry></mxCell>

        <mxCell id="e5" style="edgeStyle=orthogonalEdgeStyle;rounded=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#4A5568;strokeWidth=2;fontColor=#232F3E;fontFamily=Helvetica;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="svc-group-cognito" target="svc-group-lambda"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e5-l" value="6  Pre-Token-Trigger" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;fontFamily=Helvetica;labelBackgroundColor=#FFFFFF;fontColor=#232F3E;" connectable="0" vertex="1" parent="e5"><mxGeometry relative="1" as="geometry"><mxPoint y="-12" as="offset"/></mxGeometry></mxCell>

        <mxCell id="e6" style="edgeStyle=orthogonalEdgeStyle;rounded=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#4A5568;strokeWidth=2;fontColor=#232F3E;fontFamily=Helvetica;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="svc-group-lambda" target="svc-group-ddb"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e6-l" value="7  pr&#252;ft Gruppen" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;fontFamily=Helvetica;labelBackgroundColor=#FFFFFF;fontColor=#232F3E;" connectable="0" vertex="1" parent="e6"><mxGeometry relative="1" as="geometry"><mxPoint y="-12" as="offset"/></mxGeometry></mxCell>

        <!-- Schritt 4: User-Login bei Entra (MFA) -->
        <mxCell id="note4" value="4  Anmeldung + MFA /&#10;Conditional Access" style="text;html=1;whiteSpace=wrap;rounded=1;arcSize=8;strokeColor=#8FBBE8;fillColor=#FFFFFF;align=center;verticalAlign=middle;fontSize=11;fontColor=#0F5BA8;fontFamily=Helvetica;" vertex="1" parent="1"><mxGeometry x="672" y="535" width="140" height="70" as="geometry"/></mxCell>

        <!-- Schritt 8: Token zurueck, User eingeloggt -->
        <mxCell id="e8" style="edgeStyle=orthogonalEdgeStyle;rounded=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F7A52;strokeWidth=2;fontColor=#1F7A52;fontFamily=Helvetica;fontSize=11;exitX=0.15;exitY=1;entryX=0.85;entryY=1;" edge="1" parent="1" source="svc-group-cognito" target="svc-group-web"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="485" y="352"/></Array></mxGeometry></mxCell>
        <mxCell id="e8-l" value="8  Token (JWT) → eingeloggt" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=11;fontFamily=Helvetica;labelBackgroundColor=#FFFFFF;fontColor=#1F7A52;" connectable="0" vertex="1" parent="e8"><mxGeometry relative="1" as="geometry"><mxPoint y="14" as="offset"/></mxGeometry></mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
