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:
parent
5ee347571f
commit
5de4e911e3
3 changed files with 7585 additions and 595 deletions
|
|
@ -1,3 +1,3 @@
|
|||
export { BrowserOAuthStorage } from "./storage.js";
|
||||
export { BrowserOAuthStorage, getBrowserOAuthStorage } from "./storage.js";
|
||||
export { BrowserNavigation, BrowserOAuthClientProvider } from "./providers.js";
|
||||
export type { OAuthNavigationCallback } from "./providers.js";
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import type {
|
|||
OAuthNavigationCallback,
|
||||
} from "../providers.js";
|
||||
import { CallbackNavigation, BaseOAuthClientProvider } from "../providers.js";
|
||||
import { BrowserOAuthStorage } from "./storage.js";
|
||||
import { getBrowserOAuthStorage } from "./storage.js";
|
||||
|
||||
export type { OAuthNavigationCallback } from "../providers.js";
|
||||
|
||||
|
|
@ -49,12 +49,12 @@ export class BrowserOAuthClientProvider extends BaseOAuthClientProvider {
|
|||
"BrowserOAuthClientProvider requires browser environment",
|
||||
);
|
||||
}
|
||||
const storage = new BrowserOAuthStorage();
|
||||
const storage = getBrowserOAuthStorage();
|
||||
const redirectUrlProvider: RedirectUrlProvider = {
|
||||
getRedirectUrl: () => `${window.location.origin}/oauth/callback`,
|
||||
};
|
||||
const navigation = new BrowserNavigation();
|
||||
|
||||
super(serverUrl, { storage, redirectUrlProvider, navigation }, "normal");
|
||||
super(serverUrl, { storage, redirectUrlProvider, navigation }, "quick");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,3 +13,13 @@ export class BrowserOAuthStorage extends OAuthStorageBase {
|
|||
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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue