<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="eli.ai" agent="eli.ai diagram exporter" version="1">
  <diagram id="enterprise-sso-sign-in-lifecycle-dcd0c52f" name="Enterprise SSO sign-in lifecycle">
    <mxGraphModel dx="1600" dy="1200" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <object id="1" label="Enterprise SSO sign-in lifecycle" schemaVersion="1" diagramId="enterprise-sso-sign-in-lifecycle-dcd0c52f" canonicalAppearanceKey="tsx:src/app/(docs)/docs/capabilities/enterprise-sso/page.tsx:ssoChart#1" sourceSha256="dcd0c52f7c004a71340b97f4e8d7da6fd61846e27d99becc90bbf5ea7a015d95" metadataPayloadSha256="7671a99edfdcaa787ae7a7d96f38ce602a1e5d6aeeb79ea54e4d6f7e4d8d1c71" generationKey="c9d19eef8d72c9f558bee96d5899f0c42ed04aaa018dda476bf65282e472fc60" concepts="[&quot;Enterprise SSO&quot;,&quot;Capabilities&quot;,&quot;SSO&quot;]" keywords="[&quot;eli.ai auth&quot;,&quot;enters alice@client.com&quot;,&quot;lookup normalized domain client.com&quot;,&quot;Sign-in page&quot;,&quot;IdP (OIDC)&quot;,&quot;callback with code&quot;,&quot;require enabled + current DNS-proof lease&quot;,&quot;one globally unique provider&quot;,&quot;redirect to IdP authorize&quot;,&quot;authenticates (MFA, policies)&quot;,&quot;exchange code for tokens&quot;,&quot;provision membership + mark account complete&quot;,&quot;sessions retry only still-pending account rows&quot;,&quot;signed in to the workspace&quot;]" application="{&quot;name&quot;:&quot;eli-ai&quot;,&quot;version&quot;:&quot;0.1.0&quot;}" packages="{&quot;mermaid&quot;:&quot;11.16.0&quot;,&quot;mermaidCli&quot;:&quot;11.16.0&quot;,&quot;playwright&quot;:&quot;1.62.1&quot;,&quot;playwrightCore&quot;:&quot;1.62.1&quot;,&quot;puppeteer&quot;:&quot;25.6.0&quot;,&quot;puppeteerCore&quot;:&quot;25.6.0&quot;}" environment="{&quot;architecture&quot;:&quot;x64&quot;,&quot;containerImage&quot;:&quot;playwright:v1.62.1-noble@sha256:c091b21d9fae78c76e85cd4356431e9b018402f172a214fc7d7a5e9a7e29d8ac+node:26.3.1-bookworm-slim@sha256:209558c3e5e40e8adff68959d3c2ba7cd73723e716d89196878a0c362fa1e109&quot;,&quot;node&quot;:&quot;v26.3.1&quot;,&quot;platform&quot;:&quot;linux&quot;,&quot;yarn&quot;:&quot;4.17.1&quot;}" renderer="{&quot;browser&quot;:{&quot;executableSha256&quot;:&quot;0b20b130e7edd9dd51873be867761295fe0cfad490c2b9a64f95bd3cfc08fa71&quot;,&quot;name&quot;:&quot;chromium&quot;,&quot;revision&quot;:&quot;1234&quot;,&quot;version&quot;:&quot;151.0.7922.34&quot;},&quot;font&quot;:{&quot;family&quot;:&quot;Eli Diagram Inter Variable&quot;,&quot;fileSha256&quot;:&quot;3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62&quot;,&quot;licenseSha256&quot;:&quot;3b0a5fca3d17942cde889069889dedbbbd075e9b599968c82a95f4d944e9b345&quot;},&quot;mermaidConfigSha256&quot;:&quot;68c10966fe84406ee626034d58bfabd555df9f65f691204b7c46db24038da101&quot;,&quot;themeCssSha256&quot;:&quot;c80287a78d80ad63d27bd5ca348b2ef9a7e2f44da289e436be6484ea28a1b033&quot;}" adapterVersions="{&quot;diagramGenerator&quot;:&quot;2&quot;,&quot;drawioFlowchart&quot;:&quot;1&quot;,&quot;drawioGantt&quot;:&quot;1&quot;,&quot;drawioSequence&quot;:&quot;1&quot;,&quot;drawioState&quot;:&quot;1&quot;}" mermaidType="sequence" generatedAt="2026-08-12T23:38:21.526Z" mermaidSource="sequenceDiagram&#10;  participant U as User&#10;  participant S as Sign-in page&#10;  participant E as eli.ai auth&#10;  participant P as IdP (OIDC)&#10;&#10;  U-&gt;&gt;S: enters alice@client.com&#10;  S-&gt;&gt;E: lookup normalized domain client.com&#10;  E-&gt;&gt;E: require enabled + current DNS-proof lease&#10;  E--&gt;&gt;S: one globally unique provider&#10;  S-&gt;&gt;P: redirect to IdP authorize&#10;  U-&gt;&gt;P: authenticates (MFA, policies)&#10;  P-&gt;&gt;E: callback with code&#10;  E-&gt;&gt;P: exchange code for tokens&#10;  E-&gt;&gt;E: provision membership + mark account complete&#10;  Note over E: sessions retry only still-pending account rows&#10;  E--&gt;&gt;U: signed in to the workspace">
          <mxCell parent="0"/>
        </object>
        <object id="n:P" label="IdP (OIDC)" mermaidId="P" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="871.5" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:E" label="eli.ai auth" mermaidId="E" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="603" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:S" label="Sign-in page" mermaidId="S" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="251" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:U" label="User" mermaidId="U" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="0" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:i9" label="sessions retry only still-pending account rows" mermaidId="i9" mermaidShape="note">
          <mxCell parent="1" vertex="1" style="fillColor=#EDF2AE;fontColor=#333333;html=1;shape=note;size=15;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="494" y="585" width="368" height="40" as="geometry"/>
          </mxCell>
        </object>
        <object id="e:lifeline:P" label="" mermaidId="lifeline:P" mermaidKind="lifeline">
          <mxCell parent="1" source="n:P" target="n:P" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="946.5" y="65" as="sourcePoint"/>
              <mxPoint x="946.5" y="695" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:E" label="" mermaidId="lifeline:E" mermaidKind="lifeline">
          <mxCell parent="1" source="n:E" target="n:E" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="678" y="65" as="sourcePoint"/>
              <mxPoint x="678" y="695" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:S" label="" mermaidId="lifeline:S" mermaidKind="lifeline">
          <mxCell parent="1" source="n:S" target="n:S" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="326" y="65" as="sourcePoint"/>
              <mxPoint x="326" y="695" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:U" label="" mermaidId="lifeline:U" mermaidKind="lifeline">
          <mxCell parent="1" source="n:U" target="n:U" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="75" y="65" as="sourcePoint"/>
              <mxPoint x="75" y="695" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i0" label="enters alice@client.com" mermaidId="i0" mermaidKind="message">
          <mxCell parent="1" source="n:U" target="n:S" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="76" y="115" as="sourcePoint"/>
              <mxPoint x="322" y="115" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i1" label="lookup normalized domain client.com" mermaidId="i1" mermaidKind="message">
          <mxCell parent="1" source="n:S" target="n:E" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="327" y="165" as="sourcePoint"/>
              <mxPoint x="674" y="165" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i2" label="require enabled + current DNS-proof lease" mermaidId="i2" mermaidKind="message">
          <mxCell parent="1" source="n:E" target="n:E" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="679" y="215" as="sourcePoint"/>
              <mxPoint x="679" y="235" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="739" y="205"/>
                <mxPoint x="739" y="245"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i3" label="one globally unique provider" mermaidId="i3" mermaidKind="message">
          <mxCell parent="1" source="n:E" target="n:S" edge="1" style="dashed=1;dashPattern=3  3;edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="677" y="295" as="sourcePoint"/>
              <mxPoint x="330" y="295" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i4" label="redirect to IdP authorize" mermaidId="i4" mermaidKind="message">
          <mxCell parent="1" source="n:S" target="n:P" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="327" y="345" as="sourcePoint"/>
              <mxPoint x="942.5" y="345" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i5" label="authenticates (MFA, policies)" mermaidId="i5" mermaidKind="message">
          <mxCell parent="1" source="n:U" target="n:P" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="76" y="395" as="sourcePoint"/>
              <mxPoint x="942.5" y="395" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i6" label="callback with code" mermaidId="i6" mermaidKind="message">
          <mxCell parent="1" source="n:P" target="n:E" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="945.5" y="445" as="sourcePoint"/>
              <mxPoint x="682" y="445" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i7" label="exchange code for tokens" mermaidId="i7" mermaidKind="message">
          <mxCell parent="1" source="n:E" target="n:P" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="679" y="495" as="sourcePoint"/>
              <mxPoint x="942.5" y="495" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i8" label="provision membership + mark account complete" mermaidId="i8" mermaidKind="message">
          <mxCell parent="1" source="n:E" target="n:E" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="679" y="545" as="sourcePoint"/>
              <mxPoint x="679" y="565" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="739" y="535"/>
                <mxPoint x="739" y="575"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i10" label="signed in to the workspace" mermaidId="i10" mermaidKind="message">
          <mxCell parent="1" source="n:E" target="n:U" edge="1" style="dashed=1;dashPattern=3  3;edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="677" y="675" as="sourcePoint"/>
              <mxPoint x="79" y="675" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
