{"templateId":"markdown","versions":[{"version":"v1.40","label":"v1.40 STS","link":"/products/custody/identity-and-access/sso/troubleshooting","default":true,"active":false,"folderId":"c15a2701"},{"version":"v1.39","label":"v1.39 STS","link":"/products/custody/v1.39/identity-and-access/sso/troubleshooting","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.38","label":"v1.38 STS","link":"/products/custody/v1.38/identity-and-access/sso/troubleshooting","default":false,"active":true,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/identity-and-access/sso/troubleshooting","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/identity-and-access/sso/troubleshooting","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/identity-and-access/sso/troubleshooting","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/identity-and-access/sso/troubleshooting","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Troubleshoot SSO","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"troubleshoot-sso","__idx":0},"children":["Troubleshoot SSO"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this page to investigate federated identity and SSO issues without exposing sensitive identity data."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"start-with-the-failure-point","__idx":1},"children":["Start with the failure point"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"flowchart TD\n    A[\"User starts login\"] --> B{\"Redirect to Keycloak works?\"}\n    B -- No --> R[\"Check URLs, ingress, TLS, and Keycloak availability\"]\n    B -- Yes --> C{\"External IdP login works?\"}\n    C -- No --> I[\"Check discovery, client ID, client secret, redirect URI, scopes, and IdP policy\"]\n    C -- Yes --> D{\"Keycloak maps the user?\"}\n    D -- No --> M[\"Check provider mappers and required claims\"]\n    D -- Yes --> E{\"Custody accepts the token?\"}\n    E -- No --> T[\"Check issuer, audience, subject, loginIds, and user domain access\"]\n    E -- Yes --> S[\"Check session, role, policy, and application-specific behavior\"]\n","diagramHtml":"<svg id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 1029.40234375px;\" viewBox=\"0 0 1029.40234375 1515.359375\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>\n    #diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d foreignObject {\n      overflow: visible;\n    }\n  </style><style>#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .error-icon{fill:#552222;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .error-text{fill:#552222;stroke:#552222;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edge-thickness-normal{stroke-width:1px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edge-thickness-thick{stroke-width:3.5px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edge-pattern-solid{stroke-dasharray:0;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edge-pattern-dashed{stroke-dasharray:3;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edge-pattern-dotted{stroke-dasharray:2;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .marker{fill:#333333;stroke:#333333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .marker.cross{stroke:#333333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d p{margin:0;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .label{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;color:#333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .cluster-label text{fill:#333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .cluster-label span{color:#333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .cluster-label span p{background-color:transparent;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .label text,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d span{fill:#333;color:#333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node rect,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node circle,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node ellipse,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node polygon,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .rough-node .label text,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node .label text,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .image-shape .label,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .icon-shape .label{text-anchor:middle;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .rough-node .label,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node .label,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .image-shape .label,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .icon-shape .label{text-align:center;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node.clickable{cursor:pointer;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .arrowheadPath{fill:#333333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edgePath .path{stroke:#333333;stroke-width:1px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .flowchart-link{stroke:#333333;fill:none;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .cluster text{fill:#333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .cluster span{color:#333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d rect.text{fill:none;stroke-width:0;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .icon-shape,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .icon-shape p,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .icon-shape .label rect,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d .node .neo-node{stroke:#9370DB;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].node rect,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].cluster rect,#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M286.563,62L286.563,66.167C286.563,70.333,286.563,78.667,286.563,86.333C286.563,94,286.563,101,286.563,104.5L286.563,108\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_A_B_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_A_B_0\" data-points=\"W3sieCI6Mjg2LjU2MjUsInkiOjYyfSx7IngiOjI4Ni41NjI1LCJ5Ijo4N30seyJ4IjoyODYuNTYyNSwieSI6MTEyfV0=\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path><path d=\"M222.938,326.375L208.782,343.146C194.625,359.917,166.313,393.458,152.156,428.75C138,464.042,138,501.083,138,519.604L138,538.125\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_B_R_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_R_0\" data-points=\"W3sieCI6MjIyLjkzNzgxMjkyMTI0MDEyLCJ5IjozMjYuMzc1MzEyOTIxMjQwMTV9LHsieCI6MTM4LCJ5Ijo0Mjd9LHsieCI6MTM4LCJ5Ijo1NDIuMTI1fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path><path d=\"M350.187,326.375L364.343,343.146C378.5,359.917,406.812,393.458,420.969,415.729C435.125,438,435.125,449,435.125,454.5L435.125,460\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_B_C_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_C_0\" data-points=\"W3sieCI6MzUwLjE4NzE4NzA3ODc1OTg1LCJ5IjozMjYuMzc1MzEyOTIxMjQwMTV9LHsieCI6NDM1LjEyNSwieSI6NDI3fSx7IngiOjQzNS4xMjUsInkiOjQ2NH1d\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path><path d=\"M377.668,640.793L362.508,656.536C347.349,672.279,317.03,703.764,301.87,735.979C286.711,768.193,286.711,801.135,286.711,817.607L286.711,834.078\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_C_I_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_C_I_0\" data-points=\"W3sieCI6Mzc3LjY2Nzk2NjQyOTk1NDgsInkiOjY0MC43OTI5NjY0Mjk5NTQ4fSx7IngiOjI4Ni43MTA5Mzc1LCJ5Ijo3MzUuMjV9LHsieCI6Mjg2LjcxMDkzNzUsInkiOjgzOC4wNzgxMjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path><path d=\"M492.582,640.793L507.742,656.536C522.901,672.279,553.22,703.764,568.38,725.007C583.539,746.25,583.539,757.25,583.539,762.75L583.539,768.25\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_C_D_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_C_D_0\" data-points=\"W3sieCI6NDkyLjU4MjAzMzU3MDA0NTIsInkiOjY0MC43OTI5NjY0Mjk5NTQ4fSx7IngiOjU4My41MzkwNjI1LCJ5Ijo3MzUuMjV9LHsieCI6NTgzLjUzOTA2MjUsInkiOjc3Mi4yNX1d\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path><path d=\"M525.309,947.676L509.537,963.548C493.764,979.419,462.22,1011.163,446.448,1046.989C430.676,1082.815,430.676,1122.724,430.676,1142.678L430.676,1162.633\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_D_M_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_D_M_0\" data-points=\"W3sieCI6NTI1LjMwODc2OTIyODUwMzYsInkiOjk0Ny42NzU5NTY3Mjg1MDM2fSx7IngiOjQzMC42NzU3ODEyNSwieSI6MTA0Mi45MDYyNX0seyJ4Ijo0MzAuNjc1NzgxMjUsInkiOjExNjYuNjMyODEyNX1d\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path><path d=\"M641.769,947.676L657.542,963.548C673.314,979.419,704.858,1011.163,720.63,1032.535C736.402,1053.906,736.402,1064.906,736.402,1070.406L736.402,1075.906\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_D_E_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_D_E_0\" data-points=\"W3sieCI6NjQxLjc2OTM1NTc3MTQ5NjQsInkiOjk0Ny42NzU5NTY3Mjg1MDM2fSx7IngiOjczNi40MDIzNDM3NSwieSI6MTA0Mi45MDYyNX0seyJ4Ijo3MzYuNDAyMzQzNzUsInkiOjEwNzkuOTA2MjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path><path d=\"M675.068,1270.025L659.457,1286.414C643.846,1302.803,612.624,1335.581,597.013,1357.47C581.402,1379.359,581.402,1390.359,581.402,1395.859L581.402,1401.359\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_E_T_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_E_T_0\" data-points=\"W3sieCI6Njc1LjA2Nzc4OTE3NTI2MjUsInkiOjEyNzAuMDI0ODIwNDI1MjYyNX0seyJ4Ijo1ODEuNDAyMzQzNzUsInkiOjEzNjguMzU5Mzc1fSx7IngiOjU4MS40MDIzNDM3NSwieSI6MTQwNS4zNTkzNzV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path><path d=\"M797.737,1270.025L813.348,1286.414C828.959,1302.803,860.181,1335.581,875.791,1357.47C891.402,1379.359,891.402,1390.359,891.402,1395.859L891.402,1401.359\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-L_E_S_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_E_S_0\" data-points=\"W3sieCI6Nzk3LjczNjg5ODMyNDczNzUsInkiOjEyNzAuMDI0ODIwNDI1MjYyNX0seyJ4Ijo4OTEuNDAyMzQzNzUsInkiOjEzNjguMzU5Mzc1fSx7IngiOjg5MS40MDIzNDM3NSwieSI6MTQwNS4zNTkzNzV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_A_B_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(138, 427)\"><g class=\"label\" data-id=\"L_B_R_0\" transform=\"translate(-10.2265625, -12)\"><foreignObject width=\"20.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(435.125, 427)\"><g class=\"label\" data-id=\"L_B_C_0\" transform=\"translate(-13.0546875, -12)\"><foreignObject width=\"26.109375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(286.7109375, 735.25)\"><g class=\"label\" data-id=\"L_C_I_0\" transform=\"translate(-10.2265625, -12)\"><foreignObject width=\"20.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(583.5390625, 735.25)\"><g class=\"label\" data-id=\"L_C_D_0\" transform=\"translate(-13.0546875, -12)\"><foreignObject width=\"26.109375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(430.67578125, 1042.90625)\"><g class=\"label\" data-id=\"L_D_M_0\" transform=\"translate(-10.2265625, -12)\"><foreignObject width=\"20.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(736.40234375, 1042.90625)\"><g class=\"label\" data-id=\"L_D_E_0\" transform=\"translate(-13.0546875, -12)\"><foreignObject width=\"26.109375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(581.40234375, 1368.359375)\"><g class=\"label\" data-id=\"L_E_T_0\" transform=\"translate(-10.2265625, -12)\"><foreignObject width=\"20.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(891.40234375, 1368.359375)\"><g class=\"label\" data-id=\"L_E_S_0\" transform=\"translate(-13.0546875, -12)\"><foreignObject width=\"26.109375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-A-0\" data-look=\"classic\" transform=\"translate(286.5625, 35)\"><rect class=\"basic label-container\" style=\"\" x=\"-87.796875\" y=\"-27\" width=\"175.59375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-57.796875, -12)\"><rect></rect><foreignObject width=\"115.59375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>User starts login</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-B-1\" data-look=\"classic\" transform=\"translate(286.5625, 251)\"><polygon points=\"139,0 278,-139 139,-278 0,-139\" class=\"label-container\" transform=\"translate(-138.5, 139)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Redirect to Keycloak works?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-R-3\" data-look=\"classic\" transform=\"translate(138, 581.125)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check URLs, ingress, TLS, and Keycloak availability</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-C-5\" data-look=\"classic\" transform=\"translate(435.125, 581.125)\"><polygon points=\"117.125,0 234.25,-117.125 117.125,-234.25 0,-117.125\" class=\"label-container\" transform=\"translate(-116.625, 117.125)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-90.125, -12)\"><rect></rect><foreignObject width=\"180.25\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>External IdP login works?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-I-7\" data-look=\"classic\" transform=\"translate(286.7109375, 889.078125)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check discovery, client ID, client secret, redirect URI, scopes, and IdP policy</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-D-9\" data-look=\"classic\" transform=\"translate(583.5390625, 889.078125)\"><polygon points=\"116.828125,0 233.65625,-116.828125 116.828125,-233.65625 0,-116.828125\" class=\"label-container\" transform=\"translate(-116.328125, 116.828125)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-89.828125, -12)\"><rect></rect><foreignObject width=\"179.65625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Keycloak maps the user?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-M-11\" data-look=\"classic\" transform=\"translate(430.67578125, 1205.6328125)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check provider mappers and required claims</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-E-13\" data-look=\"classic\" transform=\"translate(736.40234375, 1205.6328125)\"><polygon points=\"125.7265625,0 251.453125,-125.7265625 125.7265625,-251.453125 0,-125.7265625\" class=\"label-container\" transform=\"translate(-125.2265625, 125.7265625)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-98.7265625, -12)\"><rect></rect><foreignObject width=\"197.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Custody accepts the token?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-T-15\" data-look=\"classic\" transform=\"translate(581.40234375, 1456.359375)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check issuer, audience, subject, loginIds, and user domain access</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-flowchart-S-17\" data-look=\"classic\" transform=\"translate(891.40234375, 1456.359375)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check session, role, policy, and application-specific behavior</p></span></div></foreignObject></g></g></g></g></g><defs><filter id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs><defs><filter id=\"diagram-1f63fa74fc35d8b03d1eecf8c2e3b2cd4d216ec21dbeb8ed0c0624e75e17e43d-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs></svg>","diagramHtmlDark":"<svg id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 1029.40234375px;\" viewBox=\"0 0 1029.40234375 1515.359375\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>\n    #diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef foreignObject {\n      overflow: visible;\n    }\n  </style><style>#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .error-icon{fill:#a44141;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .error-text{fill:#ddd;stroke:#ddd;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edge-thickness-normal{stroke-width:1px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edge-thickness-thick{stroke-width:3.5px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edge-pattern-solid{stroke-dasharray:0;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edge-pattern-dashed{stroke-dasharray:3;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edge-pattern-dotted{stroke-dasharray:2;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .marker{fill:lightgrey;stroke:lightgrey;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .marker.cross{stroke:lightgrey;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef p{margin:0;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .label{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;color:#ccc;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .cluster-label text{fill:#F9FFFE;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .cluster-label span{color:#F9FFFE;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .cluster-label span p{background-color:transparent;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .label text,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef span{fill:#ccc;color:#ccc;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node rect,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node circle,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node ellipse,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node polygon,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .rough-node .label text,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node .label text,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .image-shape .label,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .icon-shape .label{text-anchor:middle;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .rough-node .label,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node .label,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .image-shape .label,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .icon-shape .label{text-align:center;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node.clickable{cursor:pointer;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .arrowheadPath{fill:lightgrey;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edgePath .path{stroke:lightgrey;stroke-width:1px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .flowchart-link{stroke:lightgrey;fill:none;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .cluster text{fill:#F9FFFE;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .cluster span{color:#F9FFFE;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef rect.text{fill:none;stroke-width:0;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .icon-shape,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .icon-shape p,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .icon-shape .label rect,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef .node .neo-node{stroke:#ccc;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].node rect,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].cluster rect,#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].node polygon{stroke:url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].node path{stroke:url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-gradient);stroke-width:1px;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].node circle{stroke:url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M286.563,62L286.563,66.167C286.563,70.333,286.563,78.667,286.563,86.333C286.563,94,286.563,101,286.563,104.5L286.563,108\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_A_B_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_A_B_0\" data-points=\"W3sieCI6Mjg2LjU2MjUsInkiOjYyfSx7IngiOjI4Ni41NjI1LCJ5Ijo4N30seyJ4IjoyODYuNTYyNSwieSI6MTEyfV0=\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path><path d=\"M222.938,326.375L208.782,343.146C194.625,359.917,166.313,393.458,152.156,428.75C138,464.042,138,501.083,138,519.604L138,538.125\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_B_R_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_R_0\" data-points=\"W3sieCI6MjIyLjkzNzgxMjkyMTI0MDEyLCJ5IjozMjYuMzc1MzEyOTIxMjQwMTV9LHsieCI6MTM4LCJ5Ijo0Mjd9LHsieCI6MTM4LCJ5Ijo1NDIuMTI1fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path><path d=\"M350.187,326.375L364.343,343.146C378.5,359.917,406.812,393.458,420.969,415.729C435.125,438,435.125,449,435.125,454.5L435.125,460\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_B_C_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_C_0\" data-points=\"W3sieCI6MzUwLjE4NzE4NzA3ODc1OTg1LCJ5IjozMjYuMzc1MzEyOTIxMjQwMTV9LHsieCI6NDM1LjEyNSwieSI6NDI3fSx7IngiOjQzNS4xMjUsInkiOjQ2NH1d\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path><path d=\"M377.668,640.793L362.508,656.536C347.349,672.279,317.03,703.764,301.87,735.979C286.711,768.193,286.711,801.135,286.711,817.607L286.711,834.078\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_C_I_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_C_I_0\" data-points=\"W3sieCI6Mzc3LjY2Nzk2NjQyOTk1NDgsInkiOjY0MC43OTI5NjY0Mjk5NTQ4fSx7IngiOjI4Ni43MTA5Mzc1LCJ5Ijo3MzUuMjV9LHsieCI6Mjg2LjcxMDkzNzUsInkiOjgzOC4wNzgxMjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path><path d=\"M492.582,640.793L507.742,656.536C522.901,672.279,553.22,703.764,568.38,725.007C583.539,746.25,583.539,757.25,583.539,762.75L583.539,768.25\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_C_D_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_C_D_0\" data-points=\"W3sieCI6NDkyLjU4MjAzMzU3MDA0NTIsInkiOjY0MC43OTI5NjY0Mjk5NTQ4fSx7IngiOjU4My41MzkwNjI1LCJ5Ijo3MzUuMjV9LHsieCI6NTgzLjUzOTA2MjUsInkiOjc3Mi4yNX1d\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path><path d=\"M525.309,947.676L509.537,963.548C493.764,979.419,462.22,1011.163,446.448,1046.989C430.676,1082.815,430.676,1122.724,430.676,1142.678L430.676,1162.633\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_D_M_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_D_M_0\" data-points=\"W3sieCI6NTI1LjMwODc2OTIyODUwMzYsInkiOjk0Ny42NzU5NTY3Mjg1MDM2fSx7IngiOjQzMC42NzU3ODEyNSwieSI6MTA0Mi45MDYyNX0seyJ4Ijo0MzAuNjc1NzgxMjUsInkiOjExNjYuNjMyODEyNX1d\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path><path d=\"M641.769,947.676L657.542,963.548C673.314,979.419,704.858,1011.163,720.63,1032.535C736.402,1053.906,736.402,1064.906,736.402,1070.406L736.402,1075.906\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_D_E_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_D_E_0\" data-points=\"W3sieCI6NjQxLjc2OTM1NTc3MTQ5NjQsInkiOjk0Ny42NzU5NTY3Mjg1MDM2fSx7IngiOjczNi40MDIzNDM3NSwieSI6MTA0Mi45MDYyNX0seyJ4Ijo3MzYuNDAyMzQzNzUsInkiOjEwNzkuOTA2MjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path><path d=\"M675.068,1270.025L659.457,1286.414C643.846,1302.803,612.624,1335.581,597.013,1357.47C581.402,1379.359,581.402,1390.359,581.402,1395.859L581.402,1401.359\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_E_T_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_E_T_0\" data-points=\"W3sieCI6Njc1LjA2Nzc4OTE3NTI2MjUsInkiOjEyNzAuMDI0ODIwNDI1MjYyNX0seyJ4Ijo1ODEuNDAyMzQzNzUsInkiOjEzNjguMzU5Mzc1fSx7IngiOjU4MS40MDIzNDM3NSwieSI6MTQwNS4zNTkzNzV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path><path d=\"M797.737,1270.025L813.348,1286.414C828.959,1302.803,860.181,1335.581,875.791,1357.47C891.402,1379.359,891.402,1390.359,891.402,1395.859L891.402,1401.359\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-L_E_S_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_E_S_0\" data-points=\"W3sieCI6Nzk3LjczNjg5ODMyNDczNzUsInkiOjEyNzAuMDI0ODIwNDI1MjYyNX0seyJ4Ijo4OTEuNDAyMzQzNzUsInkiOjEzNjguMzU5Mzc1fSx7IngiOjg5MS40MDIzNDM3NSwieSI6MTQwNS4zNTkzNzV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_A_B_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(138, 427)\"><g class=\"label\" data-id=\"L_B_R_0\" transform=\"translate(-10.2265625, -12)\"><foreignObject width=\"20.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(435.125, 427)\"><g class=\"label\" data-id=\"L_B_C_0\" transform=\"translate(-13.0546875, -12)\"><foreignObject width=\"26.109375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(286.7109375, 735.25)\"><g class=\"label\" data-id=\"L_C_I_0\" transform=\"translate(-10.2265625, -12)\"><foreignObject width=\"20.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(583.5390625, 735.25)\"><g class=\"label\" data-id=\"L_C_D_0\" transform=\"translate(-13.0546875, -12)\"><foreignObject width=\"26.109375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(430.67578125, 1042.90625)\"><g class=\"label\" data-id=\"L_D_M_0\" transform=\"translate(-10.2265625, -12)\"><foreignObject width=\"20.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(736.40234375, 1042.90625)\"><g class=\"label\" data-id=\"L_D_E_0\" transform=\"translate(-13.0546875, -12)\"><foreignObject width=\"26.109375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(581.40234375, 1368.359375)\"><g class=\"label\" data-id=\"L_E_T_0\" transform=\"translate(-10.2265625, -12)\"><foreignObject width=\"20.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>No</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(891.40234375, 1368.359375)\"><g class=\"label\" data-id=\"L_E_S_0\" transform=\"translate(-13.0546875, -12)\"><foreignObject width=\"26.109375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Yes</p></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-A-0\" data-look=\"classic\" transform=\"translate(286.5625, 35)\"><rect class=\"basic label-container\" style=\"\" x=\"-87.796875\" y=\"-27\" width=\"175.59375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-57.796875, -12)\"><rect></rect><foreignObject width=\"115.59375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>User starts login</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-B-1\" data-look=\"classic\" transform=\"translate(286.5625, 251)\"><polygon points=\"139,0 278,-139 139,-278 0,-139\" class=\"label-container\" transform=\"translate(-138.5, 139)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Redirect to Keycloak works?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-R-3\" data-look=\"classic\" transform=\"translate(138, 581.125)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check URLs, ingress, TLS, and Keycloak availability</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-C-5\" data-look=\"classic\" transform=\"translate(435.125, 581.125)\"><polygon points=\"117.125,0 234.25,-117.125 117.125,-234.25 0,-117.125\" class=\"label-container\" transform=\"translate(-116.625, 117.125)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-90.125, -12)\"><rect></rect><foreignObject width=\"180.25\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>External IdP login works?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-I-7\" data-look=\"classic\" transform=\"translate(286.7109375, 889.078125)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check discovery, client ID, client secret, redirect URI, scopes, and IdP policy</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-D-9\" data-look=\"classic\" transform=\"translate(583.5390625, 889.078125)\"><polygon points=\"116.828125,0 233.65625,-116.828125 116.828125,-233.65625 0,-116.828125\" class=\"label-container\" transform=\"translate(-116.328125, 116.828125)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-89.828125, -12)\"><rect></rect><foreignObject width=\"179.65625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Keycloak maps the user?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-M-11\" data-look=\"classic\" transform=\"translate(430.67578125, 1205.6328125)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check provider mappers and required claims</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-E-13\" data-look=\"classic\" transform=\"translate(736.40234375, 1205.6328125)\"><polygon points=\"125.7265625,0 251.453125,-125.7265625 125.7265625,-251.453125 0,-125.7265625\" class=\"label-container\" transform=\"translate(-125.2265625, 125.7265625)\"></polygon><g class=\"label\" style=\"\" transform=\"translate(-98.7265625, -12)\"><rect></rect><foreignObject width=\"197.453125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Custody accepts the token?</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-T-15\" data-look=\"classic\" transform=\"translate(581.40234375, 1456.359375)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check issuer, audience, subject, loginIds, and user domain access</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-flowchart-S-17\" data-look=\"classic\" transform=\"translate(891.40234375, 1456.359375)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Check session, role, policy, and application-specific behavior</p></span></div></foreignObject></g></g></g></g></g><defs><filter id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><defs><filter id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><linearGradient id=\"diagram-1636e48ae3d93101f8d0a165338ef3d994e54bbbe0ef4d5f8ef6b54662036cef-gradient\" gradientUnits=\"objectBoundingBox\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#cccccc\" stop-opacity=\"1\"></stop><stop offset=\"100%\" stop-color=\"hsl(180, 0%, 18.3529411765%)\" stop-opacity=\"1\"></stop></linearGradient></svg>"},"children":["flowchart TD\n    A[\"User starts login\"] --> B{\"Redirect to Keycloak works?\"}\n    B -- No --> R[\"Check URLs, ingress, TLS, and Keycloak availability\"]\n    B -- Yes --> C{\"External IdP login works?\"}\n    C -- No --> I[\"Check discovery, client ID, client secret, redirect URI, scopes, and IdP policy\"]\n    C -- Yes --> D{\"Keycloak maps the user?\"}\n    D -- No --> M[\"Check provider mappers and required claims\"]\n    D -- Yes --> E{\"Custody accepts the token?\"}\n    E -- No --> T[\"Check issuer, audience, subject, loginIds, and user domain access\"]\n    E -- Yes --> S[\"Check session, role, policy, and application-specific behavior\"]\n"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"common-symptoms","__idx":2},"children":["Common symptoms"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Symptom"},"children":["Symptom"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Check first"},"children":["Check first"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User cannot reach the sign-in page"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Keycloak availability, ingress, TLS, hostname, and browser redirect URL."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["IdP rejects the login request"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Client ID, client secret, redirect URI, requested scopes, and IdP application assignment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User loops through the identity provider"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["IdP prompt and consent settings, and whether the user has already granted required consent."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Login succeeds at the IdP but fails in Keycloak"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Keycloak provider settings, client secret, discovery endpoint, JWKS, and provider mappers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Web login remains stuck after identity-provider authentication"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Keycloak client configuration, required claims, and token mapper configuration."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Token validation returns 401"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Issuer, audience, token expiry, signing key, and whether the token subject matches a Custody login ID."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User signs in but sees only some domains"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["loginIds"]},", roles, and domain access for each domain where the user should operate."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Repeat login creates or finds the wrong user"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mapper templates, chosen claim, sync mode, and whether the claim is stable and populated."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Keycloak or dependent services fail after deployment"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Database connection URL encoding, Keycloak database state, client secrets, and deployment secret references."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"claim-and-mapper-checks","__idx":3},"children":["Claim and mapper checks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a federated user, confirm:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The upstream ID token contains the claim used by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["${CLAIM.<claim-name>}"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Keycloak provider alias matches the Custody ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["loginIds.providerId"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Username template mappers use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[":"]}," as the separator."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Hardcoded user session attribute"]}," mapper sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["identity_provider_alias"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Keycloak-issued token subject is the value Custody expects for the user's login ID."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a mapper template resolves to an empty value, request the missing scope in Keycloak or configure the upstream identity provider to emit the required claim."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"browser-visible-and-server-side-failures","__idx":4},"children":["Browser-visible and server-side failures"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Some SSO failures are not visible in browser developer tools. During OIDC federation, the browser sees the redirects, but Keycloak also performs server-side calls to the upstream provider."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Failure area"},"children":["Failure area"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Where to look"},"children":["Where to look"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Authorization redirect"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Browser network trace, redirect URI, provider alias, and IdP application assignment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Token exchange"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Keycloak logs, upstream token endpoint availability, client secret, TLS trust, and network policy."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User mapping"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Keycloak logs, provider mappers, token claims, and Custody ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["loginIds"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Custody authorization"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Custody API response, user roles, domain access, policy requirements, and signing state."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If login fails after the upstream IdP step, do not rely only on the browser trace. Check Keycloak logs for token endpoint, TLS, issuer, audience, and mapper errors."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"secret-and-redirect-checks","__idx":5},"children":["Secret and redirect checks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Client secret and redirect URI mismatches are common because both Keycloak and the upstream identity provider must agree on the values."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Area"},"children":["Area"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What to compare"},"children":["What to compare"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Identity provider client secret"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Secret configured on the Keycloak identity provider and the secret configured for the application in the upstream IdP."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Component client secrets"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Secrets stored in Keycloak and the deployment secrets consumed by Custody components."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Redirect URI"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Redirect URI registered in the upstream IdP and the Keycloak broker endpoint for the provider alias."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Issuer URL"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Issuer in tokens and the issuer expected by the downstream verifier. Match scheme, host, port, realm, and trailing slash behavior exactly."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Audience"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Audience in the token and the value expected by the receiving service."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When rotating secrets, remember that Keycloak stores some configuration in its realm database. Updating a Kubernetes secret alone might not update the value already stored in Keycloak. Confirm the value in the upstream IdP, Keycloak, and the deployment secret reference."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For deployment-level secret references, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.38/deployment/reference/auth-secrets"},"children":["Secret management for authentication"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.38/deployment/reference/keycloak"},"children":["Keycloak configuration"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"keycloak-deployment-checks","__idx":6},"children":["Keycloak deployment checks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If Keycloak or a dependent service fails immediately after deployment:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm Keycloak can connect to its PostgreSQL database."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Percent-encode reserved URL characters in database usernames or passwords used in connection strings."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm Keycloak realm import or synchronization completed successfully."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm client secrets in Keycloak match the secrets consumed by dependent services."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm the Keycloak issuer URL is reachable from both the browser path and the in-cluster service path."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"evidence-to-collect","__idx":7},"children":["Evidence to collect"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Collect enough evidence to isolate the failure point:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Keycloak provider alias."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The non-secret IdP client settings: discovery endpoint, redirect URI, scopes, and issuer."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sanitized Keycloak logs around the failed login."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sanitized application logs around the failed API call."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Decoded JWT headers and claims with signatures, secrets, and personal data removed."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Timestamp, redacted user identifier, and whether repeat login or first login failed."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Do not collect client secrets, private keys, full JWTs, or unredacted identity data in tickets or chat."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"when-login-succeeds-but-authorization-fails","__idx":8},"children":["When login succeeds but authorization fails"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["SSO proves who the user is. It does not grant custody permissions by itself. If authentication succeeds but the user cannot perform an action, check:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The user exists in the expected domain."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The user has the expected ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["loginIds"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The user has the roles required by policies and domain read access."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The operation still has the required signature and approval path."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The user is not locked."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For user operations, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.38/governance/users/manage-users-and-roles"},"children":["Manage users and roles"]},". For the policy model, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/v1.38/governance/policies"},"children":["Policies"]},"."]}]},"headings":[{"value":"Troubleshoot SSO","id":"troubleshoot-sso","depth":1},{"value":"Start with the failure point","id":"start-with-the-failure-point","depth":2},{"value":"Common symptoms","id":"common-symptoms","depth":2},{"value":"Claim and mapper checks","id":"claim-and-mapper-checks","depth":2},{"value":"Browser-visible and server-side failures","id":"browser-visible-and-server-side-failures","depth":2},{"value":"Secret and redirect checks","id":"secret-and-redirect-checks","depth":2},{"value":"Keycloak deployment checks","id":"keycloak-deployment-checks","depth":2},{"value":"Evidence to collect","id":"evidence-to-collect","depth":2},{"value":"When login succeeds but authorization fails","id":"when-login-succeeds-but-authorization-fails","depth":2}],"frontmatter":{"seo":{"title":"Troubleshoot SSO"}},"lastModified":"2026-07-27T10:10:43.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/v1.38/identity-and-access/sso/troubleshooting","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}