feat(web,core): enterprise-managed authorization (EMA) (#1509) (#1512)

Adds enterprise-managed authorization (EMA): browser-side IdP login + RFC 8693 token-exchange and JWT-bearer resource-token mint, per-server EMA opt-in in Server Settings, IdP config in Client Settings, and IdP clientSecret keychain storage. Includes the v2/main merge and review follow-ups (400 on malformed client config; normalizeIdpIssuer import consolidation).
This commit is contained in:
Bob Dickinson 2026-06-24 19:15:12 -07:00 • committed by GitHub
commit 5de4e911e3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 7585 additions and 595 deletions

View file

@ -345,6 +345,7 @@ const meta: Meta<typeof InspectorView> = {
// on dispatch. Real wiring routes these to InspectorClient methods (the
// app shell at clients/web/src/App.tsx).
onToggleTheme: fn(),
onOpenClientSettings: fn(),
onToggleConnection: fn(),
onDisconnect: fn(),
onServerAdd: fn(),

View file

@ -80,6 +80,7 @@ function makeProps(
historyUi: EMPTY_HISTORY_UI,
networkUi: EMPTY_NETWORK_UI,
onToggleTheme: vi.fn(),
onOpenClientSettings: vi.fn(),
onToggleConnection: vi.fn(),
onDisconnect: vi.fn(),
onServerAdd: vi.fn(),

View file

@ -259,6 +259,8 @@ export interface InspectorViewProps {
// Theme toggle (lives in the parent so the color scheme can also flow
// into other top-level UI later).
onToggleTheme: () => void;
/** Open install-level client settings (client.json / EMA IdP). */
onOpenClientSettings: () => void;
// Connection lifecycle (dispatched to `useInspectorClient.connect/disconnect`).
onToggleConnection: (id: string) => void;
@ -394,6 +396,7 @@ export function InspectorView({
appRendererRef,
pinnedHistoryIds,
onToggleTheme,
onOpenClientSettings,
onToggleConnection,
onDisconnect,
onServerAdd,
@ -593,9 +596,14 @@ export function InspectorView({
onTabChange={setSelectedTab}
onDisconnect={onDisconnect}
onToggleTheme={onToggleTheme}
onOpenClientSettings={onOpenClientSettings}
/>
) : (
<ViewHeader connected={false} onToggleTheme={onToggleTheme} />
<ViewHeader
connected={false}
onToggleTheme={onToggleTheme}
onOpenClientSettings={onOpenClientSettings}
/>
)}
</AppShell.Header>
<AppShell.Main>