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
1 changed files with 7585 additions and 595 deletions
35
core/auth/ema/clientConfigError.ts
Normal file
35
core/auth/ema/clientConfigError.ts
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
export type EmaClientNotConfiguredReason = "disabled" | "not_configured";
|
||||
|
||||
export function emaClientNotConfiguredMessage(
|
||||
reason: EmaClientNotConfiguredReason,
|
||||
): string {
|
||||
if (reason === "disabled") {
|
||||
return (
|
||||
"This server uses enterprise-managed authorization, but Enterprise IdP is " +
|
||||
"turned off in Client Settings. Open Client Settings, enable " +
|
||||
'"Enterprise IdP configuration", then try connecting again.'
|
||||
);
|
||||
}
|
||||
return (
|
||||
"This server uses enterprise-managed authorization, but the Inspector " +
|
||||
"client IdP is not configured. Open Client Settings, enable Enterprise IdP, " +
|
||||
"and set issuer, client ID, and client secret."
|
||||
);
|
||||
}
|
||||
|
||||
/** Thrown when connecting to an EMA server without active install-level IdP config. */
|
||||
export class EmaClientNotConfiguredError extends Error {
|
||||
readonly reason: EmaClientNotConfiguredReason;
|
||||
|
||||
constructor(reason: EmaClientNotConfiguredReason) {
|
||||
super(emaClientNotConfiguredMessage(reason));
|
||||
this.name = "EmaClientNotConfiguredError";
|
||||
this.reason = reason;
|
||||
}
|
||||
}
|
||||
|
||||
export function isEmaClientNotConfiguredError(
|
||||
err: unknown,
|
||||
): err is EmaClientNotConfiguredError {
|
||||
return err instanceof EmaClientNotConfiguredError;
|
||||
}
|
||||
Loading…
Reference in a new issue