function registrationPathsFigure(host) { ensureStyles(); var steps = [ { rank: '1', label: 'Pre-registered credentials', detail: 'client id already on file', deprecated: false }, { rank: '2', label: 'Client ID Metadata Document', detail: 'AS advertises CIMD support', deprecated: false }, { rank: '3', label: 'Dynamic Client Registration', detail: 'deprecated fallback via DCR', deprecated: true }, { rank: '4', label: 'Ask the user', detail: 'no automated path available', deprecated: false } ]; var checklist = [ 'client_id equals the URL', 'https scheme with a path', 'redirect_uris validated', 'kept keyed by issuer' ]; var rowH = 54; var gapY = 16; var top = 18; var colX = 8; var colW = 300; var parts = []; var i; for (i = 0; i < steps.length; i++) { var step = steps[i]; var y = top + i * (rowH + gapY); var boxClass = step.deprecated ? 'l24bd' : 'l24b'; parts.push(''); parts.push('' + step.rank + ''); parts.push('' + step.label + ''); parts.push('' + step.detail + ''); if (i < steps.length - 1) { var midX = colX + colW / 2; var lineY1 = y + rowH; var lineY2 = y + rowH + gapY - 4; parts.push(''); parts.push('if unavailable'); } } var panelX = colX + colW + 18; var panelW = 560 - panelX - 8; var panelTop = top; var panelH = steps.length * (rowH + gapY) - gapY; parts.push(''); parts.push('a CIMD checked like this'); for (i = 0; i < checklist.length; i++) { var cy = panelTop + 46 + i * 46; parts.push(''); parts.push('' + checklist[i] + ''); } var shell = document.createElement('div'); shell.className = 'mf-shell'; shell.innerHTML = [ '
Client Registration Paths priority order for a client an authorization server has never met
', '
', '', '', '', parts.join(''), '', '
', '
A client tries each path in order and stops at the first one available: pre-registered credentials, then a Client ID Metadata Document if the authorization server advertises it, then Dynamic Client Registration as a deprecated fallback, then asking the user. Credentials from any path are kept keyed by the issuing authorization server and are never reused against a different one.
' ].join(''); host.appendChild(shell); } // register as: mcpa-24-registration-paths