inspector/core/auth/browser/storage.ts
Bob Dickinson 5de4e911e3
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).
2026-06-24 22:15:12 -04:00

25 lines
960 B
TypeScript

import { createJSONStorage } from "zustand/middleware";
import { OAuthStorageBase } from "../oauth-storage.js";
import { createOAuthStore } from "../store.js";
/**
* Browser storage implementation using Zustand with sessionStorage.
* For web client (can be used by InspectorClient in browser).
*/
export class BrowserOAuthStorage extends OAuthStorageBase {
constructor() {
// Use Zustand's built-in sessionStorage adapter
// The `name` option in persist() ("mcp-inspector-oauth") becomes the sessionStorage key
super(createOAuthStore(createJSONStorage(() => sessionStorage)));
}
}
let sharedBrowserOAuthStorage: BrowserOAuthStorage | undefined;
/** Shared sessionStorage-backed OAuth store for the web client (single in-memory view). */
export function getBrowserOAuthStorage(): BrowserOAuthStorage {
if (!sharedBrowserOAuthStorage) {
sharedBrowserOAuthStorage = new BrowserOAuthStorage();
}
return sharedBrowserOAuthStorage;
}