@adcp/sdk 6.12.0 → 6.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/auth/oauth/index.d.ts +1 -0
- package/dist/lib/auth/oauth/index.d.ts.map +1 -1
- package/dist/lib/auth/oauth/index.js +17 -1
- package/dist/lib/auth/oauth/index.js.map +1 -1
- package/dist/lib/auth/oauth/web-flow.d.ts +270 -0
- package/dist/lib/auth/oauth/web-flow.d.ts.map +1 -0
- package/dist/lib/auth/oauth/web-flow.js +413 -0
- package/dist/lib/auth/oauth/web-flow.js.map +1 -0
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/utils/response-unwrapper.d.ts.map +1 -1
- package/dist/lib/utils/response-unwrapper.js +19 -18
- package/dist/lib/utils/response-unwrapper.js.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/package.json +1 -1
|
@@ -34,6 +34,7 @@ export type { OAuthFlowHandler, OAuthProviderConfig, OAuthConfigStorage, OAuthCl
|
|
|
34
34
|
export { DEFAULT_CLIENT_METADATA, OAuthError, OAuthCancelledError, OAuthTimeoutError, toMCPTokens, fromMCPTokens, toMCPClientInfo, fromMCPClientInfo, } from './types';
|
|
35
35
|
export { CLIFlowHandler, type CLIFlowHandlerConfig } from './CLIFlowHandler';
|
|
36
36
|
export { NonInteractiveFlowHandler, type NonInteractiveFlowHandlerConfig } from './NonInteractiveFlowHandler';
|
|
37
|
+
export { startWebOAuthFlow, completeWebOAuthFlow, safeReturnTo, InMemoryPendingFlowStore, InvalidOrExpiredFlowError, StateMismatchError, TokenExchangeError, ProtectedResourceMetadataError, AgentVanishedDuringFlowError, ConfidentialClientNotAllowedError, DEFAULT_WEB_FLOW_TTL_MS, type PendingWebFlow, type PendingWebFlowStore, type PendingFlowStore, type StartWebFlowOptions, type StartWebFlowResult, type CompleteWebFlowOptions, type CompleteWebFlowResult, } from './web-flow';
|
|
37
38
|
export { MCPOAuthProvider } from './MCPOAuthProvider';
|
|
38
39
|
import { MCPOAuthProvider } from './MCPOAuthProvider';
|
|
39
40
|
import type { OAuthClientMetadata, OAuthConfigStorage, AgentConfig } from './types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/auth/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,KAAK,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/auth/oauth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.InsufficientScopeError = exports.InvalidTokenError = exports.unbindAgentStorage = exports.getAgentStorage = exports.bindAgentStorage = exports.MissingEnvSecretError = exports.extractEnvSecretName = exports.toEnvSecretReference = exports.isEnvSecretReference = exports.resolveSecret = exports.ClientCredentialsExchangeError = exports.ensureClientCredentialsTokens = exports.exchangeClientCredentials = exports.createFileOAuthStorage = exports.discoverAuthorizationRequirements = exports.NeedsAuthorizationError = exports.AUTH_DIAGNOSIS_SCHEMA_VERSION = exports.runAuthDiagnosis = exports.validateTokenAudience = exports.decodeAccessTokenClaims = exports.parseWWWAuthenticate = exports.supportsDynamicRegistration = exports.supportsOAuth = exports.discoverOAuthMetadata = exports.MCPOAuthProvider = exports.NonInteractiveFlowHandler = exports.CLIFlowHandler = exports.fromMCPClientInfo = exports.toMCPClientInfo = exports.fromMCPTokens = exports.toMCPTokens = exports.OAuthTimeoutError = exports.OAuthCancelledError = exports.OAuthError = exports.DEFAULT_CLIENT_METADATA = void 0;
|
|
35
|
+
exports.InsufficientScopeError = exports.InvalidTokenError = exports.unbindAgentStorage = exports.getAgentStorage = exports.bindAgentStorage = exports.MissingEnvSecretError = exports.extractEnvSecretName = exports.toEnvSecretReference = exports.isEnvSecretReference = exports.resolveSecret = exports.ClientCredentialsExchangeError = exports.ensureClientCredentialsTokens = exports.exchangeClientCredentials = exports.createFileOAuthStorage = exports.discoverAuthorizationRequirements = exports.NeedsAuthorizationError = exports.AUTH_DIAGNOSIS_SCHEMA_VERSION = exports.runAuthDiagnosis = exports.validateTokenAudience = exports.decodeAccessTokenClaims = exports.parseWWWAuthenticate = exports.supportsDynamicRegistration = exports.supportsOAuth = exports.discoverOAuthMetadata = exports.MCPOAuthProvider = exports.DEFAULT_WEB_FLOW_TTL_MS = exports.ConfidentialClientNotAllowedError = exports.AgentVanishedDuringFlowError = exports.ProtectedResourceMetadataError = exports.TokenExchangeError = exports.StateMismatchError = exports.InvalidOrExpiredFlowError = exports.InMemoryPendingFlowStore = exports.safeReturnTo = exports.completeWebOAuthFlow = exports.startWebOAuthFlow = exports.NonInteractiveFlowHandler = exports.CLIFlowHandler = exports.fromMCPClientInfo = exports.toMCPClientInfo = exports.fromMCPTokens = exports.toMCPTokens = exports.OAuthTimeoutError = exports.OAuthCancelledError = exports.OAuthError = exports.DEFAULT_CLIENT_METADATA = void 0;
|
|
36
36
|
exports.createCLIOAuthProvider = createCLIOAuthProvider;
|
|
37
37
|
exports.createNonInteractiveOAuthProvider = createNonInteractiveOAuthProvider;
|
|
38
38
|
exports.isOAuthRequired = isOAuthRequired;
|
|
@@ -53,6 +53,22 @@ var CLIFlowHandler_1 = require("./CLIFlowHandler");
|
|
|
53
53
|
Object.defineProperty(exports, "CLIFlowHandler", { enumerable: true, get: function () { return CLIFlowHandler_1.CLIFlowHandler; } });
|
|
54
54
|
var NonInteractiveFlowHandler_1 = require("./NonInteractiveFlowHandler");
|
|
55
55
|
Object.defineProperty(exports, "NonInteractiveFlowHandler", { enumerable: true, get: function () { return NonInteractiveFlowHandler_1.NonInteractiveFlowHandler; } });
|
|
56
|
+
// Web (server-side) OAuth flow — companion to CLIFlowHandler for environments
|
|
57
|
+
// where /oauth/start and /oauth/callback may be served by different processes.
|
|
58
|
+
// Note: standalone functions, NOT a class implementing OAuthFlowHandler — see
|
|
59
|
+
// docs/guides/WEB-OAUTH.md for the rationale (the contract spans two requests).
|
|
60
|
+
var web_flow_1 = require("./web-flow");
|
|
61
|
+
Object.defineProperty(exports, "startWebOAuthFlow", { enumerable: true, get: function () { return web_flow_1.startWebOAuthFlow; } });
|
|
62
|
+
Object.defineProperty(exports, "completeWebOAuthFlow", { enumerable: true, get: function () { return web_flow_1.completeWebOAuthFlow; } });
|
|
63
|
+
Object.defineProperty(exports, "safeReturnTo", { enumerable: true, get: function () { return web_flow_1.safeReturnTo; } });
|
|
64
|
+
Object.defineProperty(exports, "InMemoryPendingFlowStore", { enumerable: true, get: function () { return web_flow_1.InMemoryPendingFlowStore; } });
|
|
65
|
+
Object.defineProperty(exports, "InvalidOrExpiredFlowError", { enumerable: true, get: function () { return web_flow_1.InvalidOrExpiredFlowError; } });
|
|
66
|
+
Object.defineProperty(exports, "StateMismatchError", { enumerable: true, get: function () { return web_flow_1.StateMismatchError; } });
|
|
67
|
+
Object.defineProperty(exports, "TokenExchangeError", { enumerable: true, get: function () { return web_flow_1.TokenExchangeError; } });
|
|
68
|
+
Object.defineProperty(exports, "ProtectedResourceMetadataError", { enumerable: true, get: function () { return web_flow_1.ProtectedResourceMetadataError; } });
|
|
69
|
+
Object.defineProperty(exports, "AgentVanishedDuringFlowError", { enumerable: true, get: function () { return web_flow_1.AgentVanishedDuringFlowError; } });
|
|
70
|
+
Object.defineProperty(exports, "ConfidentialClientNotAllowedError", { enumerable: true, get: function () { return web_flow_1.ConfidentialClientNotAllowedError; } });
|
|
71
|
+
Object.defineProperty(exports, "DEFAULT_WEB_FLOW_TTL_MS", { enumerable: true, get: function () { return web_flow_1.DEFAULT_WEB_FLOW_TTL_MS; } });
|
|
56
72
|
// Main provider
|
|
57
73
|
var MCPOAuthProvider_1 = require("./MCPOAuthProvider");
|
|
58
74
|
Object.defineProperty(exports, "MCPOAuthProvider", { enumerable: true, get: function () { return MCPOAuthProvider_1.MCPOAuthProvider; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/auth/oauth/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/auth/oauth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web (server-side) OAuth flow helpers for `@adcp/sdk`.
|
|
3
|
+
*
|
|
4
|
+
* Companion to `CLIFlowHandler` for environments where `/oauth/start` and
|
|
5
|
+
* `/oauth/callback` may be served by different processes. Discovery, PKCE,
|
|
6
|
+
* URL construction, and token exchange are delegated to the MCP SDK's
|
|
7
|
+
* `client/auth.js` primitives so this module is glue plus a pending-flow
|
|
8
|
+
* store interface — not reimplemented protocol logic.
|
|
9
|
+
*
|
|
10
|
+
* Wire contract:
|
|
11
|
+
* - PRM (RFC 9728) is consulted first; `prm.resource` is the source of
|
|
12
|
+
* truth for the RFC 8707 `resource` indicator. We fall back to
|
|
13
|
+
* `resourceUrlFromServerUrl(agent.agent_uri)` only when the resource
|
|
14
|
+
* server does not implement PRM (404). Connection / parse / 5xx
|
|
15
|
+
* errors throw `ProtectedResourceMetadataError` — never silently
|
|
16
|
+
* downgrade to local guessing.
|
|
17
|
+
* - `prm.resource` must share an origin with the agent URL; the MCP
|
|
18
|
+
* SDK's `checkResourceAllowed` guards against a poisoned PRM
|
|
19
|
+
* pointing the audience at a third party.
|
|
20
|
+
* - AS URL = `prm.authorization_servers[0]` when PRM is present, else
|
|
21
|
+
* the agent origin.
|
|
22
|
+
* - Scope priority: caller-supplied `scopeHint` (e.g. from a 401
|
|
23
|
+
* `WWW-Authenticate` challenge, per SEP-835) > `prm.scopes_supported`
|
|
24
|
+
* > `clientMetadata.scope`.
|
|
25
|
+
* - Refresh is NOT this module's concern. Once `oauth_tokens` are
|
|
26
|
+
* persisted, `MCPOAuthProvider` handles refresh on the next agent
|
|
27
|
+
* call and the MCP SDK forwards `resource` into the refresh request.
|
|
28
|
+
* Callers who DIY refresh against `oauth_tokens` are responsible for
|
|
29
|
+
* forwarding `resource` themselves.
|
|
30
|
+
*/
|
|
31
|
+
import type { OAuthClientInformation, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
32
|
+
import type { AgentConfig, OAuthConfigStorage } from './types';
|
|
33
|
+
import { OAuthError } from './types';
|
|
34
|
+
/**
|
|
35
|
+
* Default TTL for a pending web flow row. RFC 6749 §10.12 recommends
|
|
36
|
+
* short-lived state; 10 minutes covers slow-typing users without leaving
|
|
37
|
+
* the PKCE verifier on disk longer than necessary.
|
|
38
|
+
*/
|
|
39
|
+
export declare const DEFAULT_WEB_FLOW_TTL_MS: number;
|
|
40
|
+
/**
|
|
41
|
+
* State persisted between `/oauth/start` and `/oauth/callback`.
|
|
42
|
+
*
|
|
43
|
+
* `codeVerifier` is a PKCE secret. Store implementations MUST encrypt it
|
|
44
|
+
* at rest if persistence crosses a trust boundary (shared DB, cross-tenant
|
|
45
|
+
* Redis, etc.).
|
|
46
|
+
*
|
|
47
|
+
* `carry` is preserved verbatim and round-tripped to the callback. It
|
|
48
|
+
* MUST be JSON-serializable, MUST NOT contain secrets, and MUST be
|
|
49
|
+
* treated as attacker-influenced data (the caller typically populates it
|
|
50
|
+
* from the `/start` request).
|
|
51
|
+
*/
|
|
52
|
+
export interface PendingWebFlow {
|
|
53
|
+
state: string;
|
|
54
|
+
agentId: string;
|
|
55
|
+
agentUrl: string;
|
|
56
|
+
codeVerifier: string;
|
|
57
|
+
redirectUri: string;
|
|
58
|
+
resource?: string;
|
|
59
|
+
scope?: string;
|
|
60
|
+
authorizationServerUrl: string;
|
|
61
|
+
/** Persist as JSON (e.g. Postgres `jsonb`); contents are MCP SDK-typed. */
|
|
62
|
+
clientInformation: OAuthClientInformation;
|
|
63
|
+
createdAt: Date;
|
|
64
|
+
expiresAt: Date;
|
|
65
|
+
/** JSON-serializable, no secrets, attacker-influenced. */
|
|
66
|
+
carry?: Record<string, unknown>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Persistence interface for in-flight web OAuth flows.
|
|
70
|
+
*
|
|
71
|
+
* Canonical implementations:
|
|
72
|
+
*
|
|
73
|
+
* Postgres:
|
|
74
|
+
* ```sql
|
|
75
|
+
* INSERT INTO pending_oauth_flows (state, payload, expires_at)
|
|
76
|
+
* VALUES ($1, $2, $3);
|
|
77
|
+
* -- consume:
|
|
78
|
+
* DELETE FROM pending_oauth_flows
|
|
79
|
+
* WHERE state = $1 AND expires_at > now()
|
|
80
|
+
* RETURNING payload;
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* Redis:
|
|
84
|
+
* ```
|
|
85
|
+
* SET pending:flow:<state> <payload> EX 600 NX -- put
|
|
86
|
+
* GETDEL pending:flow:<state> -- consume
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* `consume` MUST be a single atomic operation that deletes and returns the
|
|
90
|
+
* row (or returns null). A `SELECT` followed by a separate `DELETE` is a
|
|
91
|
+
* replay vulnerability and DOES NOT satisfy this contract — a callback
|
|
92
|
+
* replayed before the first one commits would mint two tokens.
|
|
93
|
+
*
|
|
94
|
+
* `consume` MUST treat expired rows as absent (return null) and SHOULD
|
|
95
|
+
* delete them on read so a separate sweep is not strictly required.
|
|
96
|
+
*
|
|
97
|
+
* **Tradeoff: consume runs before token exchange.** `completeWebOAuthFlow`
|
|
98
|
+
* consumes the pending row before attempting `exchangeAuthorization`. If
|
|
99
|
+
* the AS returns a transient 5xx (or the network blips between us and the
|
|
100
|
+
* AS), the row is gone and the user must restart from `/oauth/start`.
|
|
101
|
+
* This is the right call for `invalid_grant` (replay protection — the
|
|
102
|
+
* authorization code is one-shot at the AS regardless), but it means
|
|
103
|
+
* transient AS failures cost the user a click. Revisit only if you see
|
|
104
|
+
* real retry-loss in the field.
|
|
105
|
+
*/
|
|
106
|
+
export interface PendingWebFlowStore {
|
|
107
|
+
/** Insert a new flow. MUST reject duplicate `state`. */
|
|
108
|
+
put(flow: PendingWebFlow): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* Atomic delete-and-return. MUST NOT return the same row twice.
|
|
111
|
+
* Returns null if the row is absent or expired.
|
|
112
|
+
*/
|
|
113
|
+
consume(state: string): Promise<PendingWebFlow | null>;
|
|
114
|
+
/** Optional housekeeping for expired rows that were never claimed. */
|
|
115
|
+
cleanupExpired?(): Promise<number>;
|
|
116
|
+
}
|
|
117
|
+
/** @deprecated Renamed to `PendingWebFlowStore`. */
|
|
118
|
+
export type PendingFlowStore = PendingWebFlowStore;
|
|
119
|
+
export declare class InvalidOrExpiredFlowError extends OAuthError {
|
|
120
|
+
constructor(state: string);
|
|
121
|
+
}
|
|
122
|
+
export declare class StateMismatchError extends OAuthError {
|
|
123
|
+
constructor();
|
|
124
|
+
}
|
|
125
|
+
export declare class TokenExchangeError extends OAuthError {
|
|
126
|
+
readonly status: number;
|
|
127
|
+
readonly body: string;
|
|
128
|
+
/**
|
|
129
|
+
* RFC 6749 §5.2 error code when the authorization server returned a
|
|
130
|
+
* standard error envelope (`invalid_grant`, `invalid_client`, etc.).
|
|
131
|
+
* Undefined when the AS returned a non-OAuth-shaped failure.
|
|
132
|
+
*/
|
|
133
|
+
readonly oauthErrorCode?: string | undefined;
|
|
134
|
+
constructor(message: string, status: number, body: string,
|
|
135
|
+
/**
|
|
136
|
+
* RFC 6749 §5.2 error code when the authorization server returned a
|
|
137
|
+
* standard error envelope (`invalid_grant`, `invalid_client`, etc.).
|
|
138
|
+
* Undefined when the AS returned a non-OAuth-shaped failure.
|
|
139
|
+
*/
|
|
140
|
+
oauthErrorCode?: string | undefined);
|
|
141
|
+
}
|
|
142
|
+
export declare class ProtectedResourceMetadataError extends OAuthError {
|
|
143
|
+
constructor(message: string);
|
|
144
|
+
}
|
|
145
|
+
export declare class AgentVanishedDuringFlowError extends OAuthError {
|
|
146
|
+
constructor(agentId: string);
|
|
147
|
+
}
|
|
148
|
+
export declare class ConfidentialClientNotAllowedError extends OAuthError {
|
|
149
|
+
constructor(agentId: string | undefined);
|
|
150
|
+
}
|
|
151
|
+
export interface StartWebFlowOptions {
|
|
152
|
+
/** Agent the flow is for. Must include `agent_uri`. */
|
|
153
|
+
agent: AgentConfig;
|
|
154
|
+
/** Absolute URL of the consumer's `/callback` route (must match what the AS sees). */
|
|
155
|
+
redirectUri: string;
|
|
156
|
+
/** Where to persist the pending flow until callback. */
|
|
157
|
+
pendingFlowStore: PendingWebFlowStore;
|
|
158
|
+
/** When provided, dynamic-registration results land in `agent.oauth_client`. */
|
|
159
|
+
agentStorage?: OAuthConfigStorage;
|
|
160
|
+
/**
|
|
161
|
+
* Free-form caller payload, round-tripped to `completeWebOAuthFlow`.
|
|
162
|
+
* Must be JSON-serializable. Do not store secrets here. Treated as
|
|
163
|
+
* attacker-influenced — validate before reflecting (e.g. via
|
|
164
|
+
* {@link safeReturnTo} for redirect targets).
|
|
165
|
+
*/
|
|
166
|
+
carry?: Record<string, unknown>;
|
|
167
|
+
/**
|
|
168
|
+
* Scope hint (highest priority per SEP-835). Pass through the `scope`
|
|
169
|
+
* value from a prior 401 `WWW-Authenticate` challenge if you have one.
|
|
170
|
+
*/
|
|
171
|
+
scopeHint?: string;
|
|
172
|
+
/** Override flow TTL. Default: {@link DEFAULT_WEB_FLOW_TTL_MS}. */
|
|
173
|
+
ttlMs?: number;
|
|
174
|
+
/** Override the random-state generator (defaults to 32 bytes base64url). */
|
|
175
|
+
generateState?: () => string;
|
|
176
|
+
/** Override `fetch` (timeouts, signing, mocks). */
|
|
177
|
+
fetch?: typeof fetch;
|
|
178
|
+
/**
|
|
179
|
+
* Override base client metadata. `redirect_uris` is always replaced
|
|
180
|
+
* with `[redirectUri]` regardless of what's passed here.
|
|
181
|
+
*/
|
|
182
|
+
clientMetadata?: Partial<OAuthClientMetadata>;
|
|
183
|
+
/**
|
|
184
|
+
* Permit the AS to register a confidential client (i.e. one that
|
|
185
|
+
* returns a `client_secret` from dynamic registration). Default false:
|
|
186
|
+
* if the AS issues a secret we throw {@link ConfidentialClientNotAllowedError}
|
|
187
|
+
* rather than silently persisting a long-lived credential to your
|
|
188
|
+
* agent storage.
|
|
189
|
+
*/
|
|
190
|
+
allowConfidentialClient?: boolean;
|
|
191
|
+
}
|
|
192
|
+
export interface StartWebFlowResult {
|
|
193
|
+
authorizationUrl: string;
|
|
194
|
+
state: string;
|
|
195
|
+
expiresAt: Date;
|
|
196
|
+
}
|
|
197
|
+
export interface CompleteWebFlowOptions {
|
|
198
|
+
state: string;
|
|
199
|
+
code: string;
|
|
200
|
+
pendingFlowStore: PendingWebFlowStore;
|
|
201
|
+
/** When provided, the issued tokens are persisted to `agent.oauth_tokens`. */
|
|
202
|
+
agentStorage?: OAuthConfigStorage;
|
|
203
|
+
fetch?: typeof fetch;
|
|
204
|
+
/**
|
|
205
|
+
* The caller-bound expected state (e.g. from a session cookie set at
|
|
206
|
+
* `/oauth/start`). When provided, must equal `state`; mismatch throws
|
|
207
|
+
* {@link StateMismatchError}. Without this, `state` is replay-protected
|
|
208
|
+
* but not browser-bound — see WEB-OAUTH.md.
|
|
209
|
+
*/
|
|
210
|
+
expectedState?: string;
|
|
211
|
+
}
|
|
212
|
+
export interface CompleteWebFlowResult {
|
|
213
|
+
agentId: string;
|
|
214
|
+
agentUrl: string;
|
|
215
|
+
tokens: OAuthTokens;
|
|
216
|
+
carry?: Record<string, unknown>;
|
|
217
|
+
/** True if `agentStorage` was provided AND `saveAgent` succeeded. */
|
|
218
|
+
persisted: boolean;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Begin a web OAuth flow. Returns the authorization URL the consumer
|
|
222
|
+
* should redirect the browser to. Persists the PKCE verifier and other
|
|
223
|
+
* flow state via `pendingFlowStore.put` so a different process can complete it.
|
|
224
|
+
*/
|
|
225
|
+
export declare function startWebOAuthFlow(opts: StartWebFlowOptions): Promise<StartWebFlowResult>;
|
|
226
|
+
/**
|
|
227
|
+
* Finish a web OAuth flow. Atomically consumes the pending row, exchanges
|
|
228
|
+
* the authorization code for tokens, and (if storage is provided)
|
|
229
|
+
* persists tokens to `agent.oauth_tokens`. Returns whatever the caller
|
|
230
|
+
* stashed in `carry` so the consumer can route the user appropriately.
|
|
231
|
+
*
|
|
232
|
+
* The pending row is consumed BEFORE `exchangeAuthorization` runs. A
|
|
233
|
+
* transient AS failure leaves the user with no row to retry against and
|
|
234
|
+
* they must restart from `/oauth/start`. See {@link PendingWebFlowStore}
|
|
235
|
+
* for the full tradeoff discussion.
|
|
236
|
+
*/
|
|
237
|
+
export declare function completeWebOAuthFlow(opts: CompleteWebFlowOptions): Promise<CompleteWebFlowResult>;
|
|
238
|
+
/**
|
|
239
|
+
* Validate a redirect target supplied via `carry`.
|
|
240
|
+
*
|
|
241
|
+
* Treats `value` as attacker-influenced. Returns a string that is safe to
|
|
242
|
+
* pass to `res.redirect`, or `undefined` if the value is invalid.
|
|
243
|
+
*
|
|
244
|
+
* Defaults to **path-only** redirects (must start with a single `/` and
|
|
245
|
+
* not be protocol-relative `//evil.example`). Pass `allowedReturnHosts`
|
|
246
|
+
* to permit absolute URLs against an allowlist.
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```ts
|
|
250
|
+
* res.redirect(safeReturnTo(carry?.return_to) ?? '/');
|
|
251
|
+
* res.redirect(safeReturnTo(carry?.return_to, { allowedReturnHosts: ['app.example.com'] }) ?? '/');
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
export declare function safeReturnTo(value: unknown, options?: {
|
|
255
|
+
allowedReturnHosts?: string[];
|
|
256
|
+
}): string | undefined;
|
|
257
|
+
/**
|
|
258
|
+
* In-memory pending-flow store for tests and single-instance dev.
|
|
259
|
+
*
|
|
260
|
+
* Production deployments MUST implement `PendingWebFlowStore` against a
|
|
261
|
+
* shared store (Postgres `DELETE … RETURNING`, Redis `GETDEL`) so
|
|
262
|
+
* `/start` and `/callback` can hit different processes.
|
|
263
|
+
*/
|
|
264
|
+
export declare class InMemoryPendingFlowStore implements PendingWebFlowStore {
|
|
265
|
+
private readonly flows;
|
|
266
|
+
put(flow: PendingWebFlow): Promise<void>;
|
|
267
|
+
consume(state: string): Promise<PendingWebFlow | null>;
|
|
268
|
+
cleanupExpired(): Promise<number>;
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=web-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-flow.d.ts","sourceRoot":"","sources":["../../../../src/lib/auth/oauth/web-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Web (server-side) OAuth flow helpers for `@adcp/sdk`.
|
|
4
|
+
*
|
|
5
|
+
* Companion to `CLIFlowHandler` for environments where `/oauth/start` and
|
|
6
|
+
* `/oauth/callback` may be served by different processes. Discovery, PKCE,
|
|
7
|
+
* URL construction, and token exchange are delegated to the MCP SDK's
|
|
8
|
+
* `client/auth.js` primitives so this module is glue plus a pending-flow
|
|
9
|
+
* store interface — not reimplemented protocol logic.
|
|
10
|
+
*
|
|
11
|
+
* Wire contract:
|
|
12
|
+
* - PRM (RFC 9728) is consulted first; `prm.resource` is the source of
|
|
13
|
+
* truth for the RFC 8707 `resource` indicator. We fall back to
|
|
14
|
+
* `resourceUrlFromServerUrl(agent.agent_uri)` only when the resource
|
|
15
|
+
* server does not implement PRM (404). Connection / parse / 5xx
|
|
16
|
+
* errors throw `ProtectedResourceMetadataError` — never silently
|
|
17
|
+
* downgrade to local guessing.
|
|
18
|
+
* - `prm.resource` must share an origin with the agent URL; the MCP
|
|
19
|
+
* SDK's `checkResourceAllowed` guards against a poisoned PRM
|
|
20
|
+
* pointing the audience at a third party.
|
|
21
|
+
* - AS URL = `prm.authorization_servers[0]` when PRM is present, else
|
|
22
|
+
* the agent origin.
|
|
23
|
+
* - Scope priority: caller-supplied `scopeHint` (e.g. from a 401
|
|
24
|
+
* `WWW-Authenticate` challenge, per SEP-835) > `prm.scopes_supported`
|
|
25
|
+
* > `clientMetadata.scope`.
|
|
26
|
+
* - Refresh is NOT this module's concern. Once `oauth_tokens` are
|
|
27
|
+
* persisted, `MCPOAuthProvider` handles refresh on the next agent
|
|
28
|
+
* call and the MCP SDK forwards `resource` into the refresh request.
|
|
29
|
+
* Callers who DIY refresh against `oauth_tokens` are responsible for
|
|
30
|
+
* forwarding `resource` themselves.
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.InMemoryPendingFlowStore = exports.ConfidentialClientNotAllowedError = exports.AgentVanishedDuringFlowError = exports.ProtectedResourceMetadataError = exports.TokenExchangeError = exports.StateMismatchError = exports.InvalidOrExpiredFlowError = exports.DEFAULT_WEB_FLOW_TTL_MS = void 0;
|
|
34
|
+
exports.startWebOAuthFlow = startWebOAuthFlow;
|
|
35
|
+
exports.completeWebOAuthFlow = completeWebOAuthFlow;
|
|
36
|
+
exports.safeReturnTo = safeReturnTo;
|
|
37
|
+
const crypto_1 = require("crypto");
|
|
38
|
+
const auth_js_1 = require("@modelcontextprotocol/sdk/client/auth.js");
|
|
39
|
+
const auth_utils_js_1 = require("@modelcontextprotocol/sdk/shared/auth-utils.js");
|
|
40
|
+
const types_1 = require("./types");
|
|
41
|
+
/**
|
|
42
|
+
* Default TTL for a pending web flow row. RFC 6749 §10.12 recommends
|
|
43
|
+
* short-lived state; 10 minutes covers slow-typing users without leaving
|
|
44
|
+
* the PKCE verifier on disk longer than necessary.
|
|
45
|
+
*/
|
|
46
|
+
exports.DEFAULT_WEB_FLOW_TTL_MS = 10 * 60 * 1000;
|
|
47
|
+
class InvalidOrExpiredFlowError extends types_1.OAuthError {
|
|
48
|
+
constructor(state) {
|
|
49
|
+
super(`OAuth flow not found or expired (state=${state})`, 'invalid_or_expired_flow');
|
|
50
|
+
this.name = 'InvalidOrExpiredFlowError';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.InvalidOrExpiredFlowError = InvalidOrExpiredFlowError;
|
|
54
|
+
class StateMismatchError extends types_1.OAuthError {
|
|
55
|
+
constructor() {
|
|
56
|
+
super('OAuth state does not match the value the caller bound to this session', 'state_mismatch');
|
|
57
|
+
this.name = 'StateMismatchError';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.StateMismatchError = StateMismatchError;
|
|
61
|
+
class TokenExchangeError extends types_1.OAuthError {
|
|
62
|
+
status;
|
|
63
|
+
body;
|
|
64
|
+
oauthErrorCode;
|
|
65
|
+
constructor(message, status, body,
|
|
66
|
+
/**
|
|
67
|
+
* RFC 6749 §5.2 error code when the authorization server returned a
|
|
68
|
+
* standard error envelope (`invalid_grant`, `invalid_client`, etc.).
|
|
69
|
+
* Undefined when the AS returned a non-OAuth-shaped failure.
|
|
70
|
+
*/
|
|
71
|
+
oauthErrorCode) {
|
|
72
|
+
super(message, 'token_exchange_failed');
|
|
73
|
+
this.status = status;
|
|
74
|
+
this.body = body;
|
|
75
|
+
this.oauthErrorCode = oauthErrorCode;
|
|
76
|
+
this.name = 'TokenExchangeError';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.TokenExchangeError = TokenExchangeError;
|
|
80
|
+
class ProtectedResourceMetadataError extends types_1.OAuthError {
|
|
81
|
+
constructor(message) {
|
|
82
|
+
super(message, 'protected_resource_metadata_error');
|
|
83
|
+
this.name = 'ProtectedResourceMetadataError';
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.ProtectedResourceMetadataError = ProtectedResourceMetadataError;
|
|
87
|
+
class AgentVanishedDuringFlowError extends types_1.OAuthError {
|
|
88
|
+
constructor(agentId) {
|
|
89
|
+
super(`Agent ${agentId} could not be loaded from storage during token persistence; tokens were not saved`, 'agent_vanished_during_flow', agentId);
|
|
90
|
+
this.name = 'AgentVanishedDuringFlowError';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.AgentVanishedDuringFlowError = AgentVanishedDuringFlowError;
|
|
94
|
+
class ConfidentialClientNotAllowedError extends types_1.OAuthError {
|
|
95
|
+
constructor(agentId) {
|
|
96
|
+
super('Authorization server issued a confidential client (client_secret) during dynamic registration. ' +
|
|
97
|
+
'Pass `allowConfidentialClient: true` if you intend to persist a long-lived AS credential to your agent storage.', 'confidential_client_not_allowed', agentId);
|
|
98
|
+
this.name = 'ConfidentialClientNotAllowedError';
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.ConfidentialClientNotAllowedError = ConfidentialClientNotAllowedError;
|
|
102
|
+
/**
|
|
103
|
+
* Begin a web OAuth flow. Returns the authorization URL the consumer
|
|
104
|
+
* should redirect the browser to. Persists the PKCE verifier and other
|
|
105
|
+
* flow state via `pendingFlowStore.put` so a different process can complete it.
|
|
106
|
+
*/
|
|
107
|
+
async function startWebOAuthFlow(opts) {
|
|
108
|
+
const { agent, redirectUri, pendingFlowStore, agentStorage, carry, scopeHint, ttlMs = exports.DEFAULT_WEB_FLOW_TTL_MS, generateState, fetch: fetchFn, clientMetadata: clientMetadataOverrides, allowConfidentialClient = false, } = opts;
|
|
109
|
+
if (!agent.agent_uri) {
|
|
110
|
+
throw new types_1.OAuthError('Agent missing agent_uri', 'invalid_agent', agent.id);
|
|
111
|
+
}
|
|
112
|
+
const prm = await tryDiscoverPRM(agent.agent_uri, fetchFn);
|
|
113
|
+
if (prm?.resource) {
|
|
114
|
+
assertPrmResourceMatchesAgentOrigin(agent.agent_uri, prm.resource);
|
|
115
|
+
}
|
|
116
|
+
const asUrl = resolveAuthorizationServerUrl(agent.agent_uri, prm);
|
|
117
|
+
const asMetadata = await (0, auth_js_1.discoverAuthorizationServerMetadata)(asUrl.toString(), { fetchFn });
|
|
118
|
+
if (!asMetadata) {
|
|
119
|
+
throw new types_1.OAuthError(`No OAuth metadata at ${asUrl.toString()}`, 'no_authorization_server_metadata', agent.id);
|
|
120
|
+
}
|
|
121
|
+
const resource = prm?.resource ? new URL(prm.resource) : (0, auth_utils_js_1.resourceUrlFromServerUrl)(new URL(agent.agent_uri));
|
|
122
|
+
const baseClientMetadata = {
|
|
123
|
+
...types_1.DEFAULT_CLIENT_METADATA,
|
|
124
|
+
...clientMetadataOverrides,
|
|
125
|
+
redirect_uris: [redirectUri],
|
|
126
|
+
};
|
|
127
|
+
const scope = scopeHint ?? prm?.scopes_supported?.join(' ') ?? baseClientMetadata.scope;
|
|
128
|
+
const clientInformation = await resolveClientInformation({
|
|
129
|
+
agent,
|
|
130
|
+
agentStorage,
|
|
131
|
+
asUrl,
|
|
132
|
+
asMetadata,
|
|
133
|
+
clientMetadata: baseClientMetadata,
|
|
134
|
+
fetchFn,
|
|
135
|
+
allowConfidentialClient,
|
|
136
|
+
});
|
|
137
|
+
const state = (generateState ?? defaultGenerateState)();
|
|
138
|
+
const { authorizationUrl, codeVerifier } = await (0, auth_js_1.startAuthorization)(asUrl.toString(), {
|
|
139
|
+
metadata: asMetadata,
|
|
140
|
+
clientInformation,
|
|
141
|
+
redirectUrl: redirectUri,
|
|
142
|
+
scope,
|
|
143
|
+
state,
|
|
144
|
+
resource,
|
|
145
|
+
});
|
|
146
|
+
const now = new Date();
|
|
147
|
+
const expiresAt = new Date(now.getTime() + ttlMs);
|
|
148
|
+
const flow = {
|
|
149
|
+
state,
|
|
150
|
+
agentId: agent.id,
|
|
151
|
+
agentUrl: agent.agent_uri,
|
|
152
|
+
codeVerifier,
|
|
153
|
+
redirectUri,
|
|
154
|
+
resource: resource.href,
|
|
155
|
+
scope,
|
|
156
|
+
authorizationServerUrl: asUrl.toString(),
|
|
157
|
+
clientInformation,
|
|
158
|
+
createdAt: now,
|
|
159
|
+
expiresAt,
|
|
160
|
+
carry,
|
|
161
|
+
};
|
|
162
|
+
await pendingFlowStore.put(flow);
|
|
163
|
+
return {
|
|
164
|
+
authorizationUrl: authorizationUrl.toString(),
|
|
165
|
+
state,
|
|
166
|
+
expiresAt,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Finish a web OAuth flow. Atomically consumes the pending row, exchanges
|
|
171
|
+
* the authorization code for tokens, and (if storage is provided)
|
|
172
|
+
* persists tokens to `agent.oauth_tokens`. Returns whatever the caller
|
|
173
|
+
* stashed in `carry` so the consumer can route the user appropriately.
|
|
174
|
+
*
|
|
175
|
+
* The pending row is consumed BEFORE `exchangeAuthorization` runs. A
|
|
176
|
+
* transient AS failure leaves the user with no row to retry against and
|
|
177
|
+
* they must restart from `/oauth/start`. See {@link PendingWebFlowStore}
|
|
178
|
+
* for the full tradeoff discussion.
|
|
179
|
+
*/
|
|
180
|
+
async function completeWebOAuthFlow(opts) {
|
|
181
|
+
const { state, code, pendingFlowStore, agentStorage, fetch: fetchFn, expectedState } = opts;
|
|
182
|
+
if (expectedState !== undefined && expectedState !== state) {
|
|
183
|
+
throw new StateMismatchError();
|
|
184
|
+
}
|
|
185
|
+
const flow = await pendingFlowStore.consume(state);
|
|
186
|
+
if (!flow || flow.expiresAt.getTime() < Date.now()) {
|
|
187
|
+
throw new InvalidOrExpiredFlowError(state);
|
|
188
|
+
}
|
|
189
|
+
const asMetadata = await (0, auth_js_1.discoverAuthorizationServerMetadata)(flow.authorizationServerUrl, {
|
|
190
|
+
fetchFn,
|
|
191
|
+
});
|
|
192
|
+
let tokens;
|
|
193
|
+
try {
|
|
194
|
+
tokens = await (0, auth_js_1.exchangeAuthorization)(flow.authorizationServerUrl, {
|
|
195
|
+
metadata: asMetadata ?? undefined,
|
|
196
|
+
clientInformation: flow.clientInformation,
|
|
197
|
+
authorizationCode: code,
|
|
198
|
+
codeVerifier: flow.codeVerifier,
|
|
199
|
+
redirectUri: flow.redirectUri,
|
|
200
|
+
resource: flow.resource ? new URL(flow.resource) : undefined,
|
|
201
|
+
fetchFn,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
throw wrapTokenExchangeError(err);
|
|
206
|
+
}
|
|
207
|
+
let persisted = false;
|
|
208
|
+
if (agentStorage) {
|
|
209
|
+
const agent = await agentStorage.loadAgent(flow.agentId);
|
|
210
|
+
if (!agent) {
|
|
211
|
+
throw new AgentVanishedDuringFlowError(flow.agentId);
|
|
212
|
+
}
|
|
213
|
+
agent.oauth_tokens = (0, types_1.fromMCPTokens)(tokens);
|
|
214
|
+
delete agent.oauth_code_verifier;
|
|
215
|
+
await agentStorage.saveAgent(agent);
|
|
216
|
+
persisted = true;
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
agentId: flow.agentId,
|
|
220
|
+
agentUrl: flow.agentUrl,
|
|
221
|
+
tokens,
|
|
222
|
+
carry: flow.carry,
|
|
223
|
+
persisted,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Validate a redirect target supplied via `carry`.
|
|
228
|
+
*
|
|
229
|
+
* Treats `value` as attacker-influenced. Returns a string that is safe to
|
|
230
|
+
* pass to `res.redirect`, or `undefined` if the value is invalid.
|
|
231
|
+
*
|
|
232
|
+
* Defaults to **path-only** redirects (must start with a single `/` and
|
|
233
|
+
* not be protocol-relative `//evil.example`). Pass `allowedReturnHosts`
|
|
234
|
+
* to permit absolute URLs against an allowlist.
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```ts
|
|
238
|
+
* res.redirect(safeReturnTo(carry?.return_to) ?? '/');
|
|
239
|
+
* res.redirect(safeReturnTo(carry?.return_to, { allowedReturnHosts: ['app.example.com'] }) ?? '/');
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
function safeReturnTo(value, options = {}) {
|
|
243
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
244
|
+
return undefined;
|
|
245
|
+
// Path-only: must be `/...` but not `//...` (protocol-relative) or `/\...`.
|
|
246
|
+
if (value.startsWith('/') && !value.startsWith('//') && !value.startsWith('/\\')) {
|
|
247
|
+
return value;
|
|
248
|
+
}
|
|
249
|
+
const allowed = options.allowedReturnHosts;
|
|
250
|
+
if (!allowed || allowed.length === 0)
|
|
251
|
+
return undefined;
|
|
252
|
+
let parsed;
|
|
253
|
+
try {
|
|
254
|
+
parsed = new URL(value);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:')
|
|
260
|
+
return undefined;
|
|
261
|
+
if (!allowed.includes(parsed.host))
|
|
262
|
+
return undefined;
|
|
263
|
+
return parsed.toString();
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* In-memory pending-flow store for tests and single-instance dev.
|
|
267
|
+
*
|
|
268
|
+
* Production deployments MUST implement `PendingWebFlowStore` against a
|
|
269
|
+
* shared store (Postgres `DELETE … RETURNING`, Redis `GETDEL`) so
|
|
270
|
+
* `/start` and `/callback` can hit different processes.
|
|
271
|
+
*/
|
|
272
|
+
class InMemoryPendingFlowStore {
|
|
273
|
+
flows = new Map();
|
|
274
|
+
async put(flow) {
|
|
275
|
+
if (this.flows.has(flow.state)) {
|
|
276
|
+
throw new Error(`Pending flow already exists for state ${flow.state}`);
|
|
277
|
+
}
|
|
278
|
+
this.flows.set(flow.state, flow);
|
|
279
|
+
}
|
|
280
|
+
async consume(state) {
|
|
281
|
+
const flow = this.flows.get(state);
|
|
282
|
+
if (!flow)
|
|
283
|
+
return null;
|
|
284
|
+
this.flows.delete(state);
|
|
285
|
+
if (flow.expiresAt.getTime() < Date.now())
|
|
286
|
+
return null;
|
|
287
|
+
return flow;
|
|
288
|
+
}
|
|
289
|
+
async cleanupExpired() {
|
|
290
|
+
const now = Date.now();
|
|
291
|
+
let removed = 0;
|
|
292
|
+
for (const [state, flow] of this.flows) {
|
|
293
|
+
if (flow.expiresAt.getTime() < now) {
|
|
294
|
+
this.flows.delete(state);
|
|
295
|
+
removed++;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return removed;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
exports.InMemoryPendingFlowStore = InMemoryPendingFlowStore;
|
|
302
|
+
// ============================================================
|
|
303
|
+
// Internals
|
|
304
|
+
// ============================================================
|
|
305
|
+
/**
|
|
306
|
+
* The MCP SDK reports a 404 PRM lookup with this exact message; treat it
|
|
307
|
+
* as "PRM is genuinely absent" and fall back. Anything else is a
|
|
308
|
+
* connection, parse, or 5xx error and is allowed to bubble.
|
|
309
|
+
*
|
|
310
|
+
* Source (verified against `@modelcontextprotocol/sdk@1.29.0`):
|
|
311
|
+
* `dist/esm/client/auth.js` → `discoverOAuthProtectedResourceMetadata`
|
|
312
|
+
* throws `new Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`)`
|
|
313
|
+
* when `response.status === 404` (or no response was returned).
|
|
314
|
+
*
|
|
315
|
+
* If a future MCP SDK reword this message, the test
|
|
316
|
+
* "falls back to server-derived resource on a 404 PRM" at
|
|
317
|
+
* `test/lib/oauth-web-flow.test.js` will fail — that test calls the real
|
|
318
|
+
* SDK against a 404 fixture and is the canary for this regression.
|
|
319
|
+
*/
|
|
320
|
+
const PRM_ABSENT_MARKER = 'does not implement OAuth 2.0 Protected Resource Metadata';
|
|
321
|
+
async function tryDiscoverPRM(agentUrl, fetchFn) {
|
|
322
|
+
try {
|
|
323
|
+
return await (0, auth_js_1.discoverOAuthProtectedResourceMetadata)(agentUrl, undefined, fetchFn);
|
|
324
|
+
}
|
|
325
|
+
catch (err) {
|
|
326
|
+
if (err instanceof Error && err.message.includes(PRM_ABSENT_MARKER)) {
|
|
327
|
+
// PRM is optional under RFC 9728 — fall back to local resource
|
|
328
|
+
// derivation. Connection/parse/5xx errors fall through.
|
|
329
|
+
return undefined;
|
|
330
|
+
}
|
|
331
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
332
|
+
throw new ProtectedResourceMetadataError(`PRM discovery failed: ${message}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
function assertPrmResourceMatchesAgentOrigin(agentUrl, prmResource) {
|
|
336
|
+
const requested = (0, auth_utils_js_1.resourceUrlFromServerUrl)(new URL(agentUrl));
|
|
337
|
+
if (!(0, auth_utils_js_1.checkResourceAllowed)({ requestedResource: requested, configuredResource: prmResource })) {
|
|
338
|
+
throw new ProtectedResourceMetadataError(`PRM advertises resource ${prmResource} which does not share an origin/path with agent ${agentUrl}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
function resolveAuthorizationServerUrl(agentUrl, prm) {
|
|
342
|
+
const first = prm?.authorization_servers?.[0];
|
|
343
|
+
if (first) {
|
|
344
|
+
return new URL(first);
|
|
345
|
+
}
|
|
346
|
+
return new URL(new URL(agentUrl).origin);
|
|
347
|
+
}
|
|
348
|
+
async function resolveClientInformation(args) {
|
|
349
|
+
const { agent, agentStorage, asUrl, asMetadata, clientMetadata, fetchFn, allowConfidentialClient } = args;
|
|
350
|
+
if (agent.oauth_client) {
|
|
351
|
+
return (0, types_1.toMCPClientInfo)(agent.oauth_client);
|
|
352
|
+
}
|
|
353
|
+
if (!asMetadata.registration_endpoint) {
|
|
354
|
+
throw new types_1.OAuthError('Agent has no oauth_client and authorization server does not advertise dynamic client registration', 'no_client_credentials', agent.id);
|
|
355
|
+
}
|
|
356
|
+
const registered = await (0, auth_js_1.registerClient)(asUrl.toString(), {
|
|
357
|
+
metadata: asMetadata,
|
|
358
|
+
clientMetadata,
|
|
359
|
+
fetchFn,
|
|
360
|
+
});
|
|
361
|
+
if (registered.client_secret && !allowConfidentialClient) {
|
|
362
|
+
throw new ConfidentialClientNotAllowedError(agent.id);
|
|
363
|
+
}
|
|
364
|
+
if (agentStorage) {
|
|
365
|
+
// Load fresh and save fresh so two concurrent /start calls for the
|
|
366
|
+
// same agentId do not trample each other's `oauth_client` via a
|
|
367
|
+
// shared in-memory reference.
|
|
368
|
+
const fresh = (await agentStorage.loadAgent(agent.id)) ?? agent;
|
|
369
|
+
fresh.oauth_client = (0, types_1.fromMCPClientInfo)(registered);
|
|
370
|
+
await agentStorage.saveAgent(fresh);
|
|
371
|
+
}
|
|
372
|
+
return registered;
|
|
373
|
+
}
|
|
374
|
+
function defaultGenerateState() {
|
|
375
|
+
return (0, crypto_1.randomBytes)(32).toString('base64url');
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Map an MCP SDK token-exchange failure to {@link TokenExchangeError},
|
|
379
|
+
* redacting bearer/refresh tokens that some authorization servers echo
|
|
380
|
+
* back in error responses for debugging.
|
|
381
|
+
*/
|
|
382
|
+
function wrapTokenExchangeError(err) {
|
|
383
|
+
// The MCP SDK's `parseErrorResponse` decodes a well-formed OAuth error
|
|
384
|
+
// envelope into an `OAuthError` subclass with `errorCode` (e.g.
|
|
385
|
+
// `InvalidGrantError`). Malformed responses come through as
|
|
386
|
+
// `ServerError` with the raw body in `message`, so the redaction pass
|
|
387
|
+
// covers both cases.
|
|
388
|
+
const oauthErrorCode = err?.errorCode;
|
|
389
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
390
|
+
const status = err?.status ?? 0;
|
|
391
|
+
const rawBody = err?.body ?? message;
|
|
392
|
+
const body = redactTokens(rawBody);
|
|
393
|
+
const display = oauthErrorCode ? `${oauthErrorCode}: ${message}` : message;
|
|
394
|
+
return new TokenExchangeError(`Token exchange failed: ${redactTokens(display)}`, status, body, oauthErrorCode);
|
|
395
|
+
}
|
|
396
|
+
const SENSITIVE_TOKEN_KEYS = ['access_token', 'refresh_token', 'id_token', 'token'];
|
|
397
|
+
/**
|
|
398
|
+
* Best-effort redaction of bearer/refresh tokens from an AS error body
|
|
399
|
+
* (which may be JSON, form-encoded, or freeform). Adopters MUST still
|
|
400
|
+
* treat `TokenExchangeError.body` as sensitive — do not reflect it to
|
|
401
|
+
* the browser or write it to access logs unredacted.
|
|
402
|
+
*/
|
|
403
|
+
function redactTokens(input) {
|
|
404
|
+
let out = input;
|
|
405
|
+
for (const key of SENSITIVE_TOKEN_KEYS) {
|
|
406
|
+
// JSON form: "key":"…"
|
|
407
|
+
out = out.replace(new RegExp(`("${key}"\\s*:\\s*")[^"]*(")`, 'gi'), '$1<redacted>$2');
|
|
408
|
+
// form-encoded: key=…
|
|
409
|
+
out = out.replace(new RegExp(`(\\b${key}=)[^&\\s]+`, 'gi'), '$1<redacted>');
|
|
410
|
+
}
|
|
411
|
+
return out;
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=web-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-flow.js","sourceRoot":"","sources":["../../../../src/lib/auth/oauth/web-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
"source_sha": "4e553ad955f83b49c7d221ab5c3ff78237ad02e3",
|
|
5
5
|
"source_tarball_sha256": "580656d6466ef9f0d1119985e6726c2efea718dc671e2ad30957fcb2fd54af0f",
|
|
6
6
|
"upstream_adcp_version": "2.5.3",
|
|
7
|
-
"synced_at": "2026-05-
|
|
7
|
+
"synced_at": "2026-05-07T19:07:41.217Z"
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-unwrapper.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/response-unwrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,kCAAkC,EAClC,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAGlC;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,2BAA2B,GAC3B,sBAAsB,GACtB,qBAAqB,GACrB,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,2BAA2B,GAC3B,kCAAkC,GAClC,qBAAqB,GACrB,uBAAuB,GACvB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,GAAG,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,EACxB,OAAO,CAAC,EAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CA0FtC;AAyDD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1F,eAAO,MAAM,mBAAmB,EAAG,kBAA2B,CAAC;AAuI/D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAI/E;
|
|
1
|
+
{"version":3,"file":"response-unwrapper.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/response-unwrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,kCAAkC,EAClC,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAGlC;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,2BAA2B,GAC3B,sBAAsB,GACtB,qBAAqB,GACrB,qBAAqB,GACrB,sBAAsB,GACtB,oBAAoB,GACpB,2BAA2B,GAC3B,kCAAkC,GAClC,qBAAqB,GACrB,uBAAuB,GACvB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,GAAG,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,EACxB,OAAO,CAAC,EAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CA0FtC;AAyDD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1F,eAAO,MAAM,mBAAmB,EAAG,kBAA2B,CAAC;AAuI/D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAI/E;AAsFD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgBtE"}
|
|
@@ -303,20 +303,21 @@ function readExtractionPath(data) {
|
|
|
303
303
|
/**
|
|
304
304
|
* Unwrap A2A response
|
|
305
305
|
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
306
|
+
* Called for terminal task states ("completed", "failed", "rejected",
|
|
307
|
+
* "canceled"). All four carry the same artifact + DataPart envelope per
|
|
308
|
+
* AdCP transport-errors §A2A Binding — failed tasks place `adcp_error`
|
|
309
|
+
* into the DataPart alongside an optional terse TextPart.
|
|
309
310
|
*
|
|
310
|
-
*
|
|
311
|
-
* -
|
|
312
|
-
*
|
|
311
|
+
* Intermediate statuses ("working", "submitted", "input-required",
|
|
312
|
+
* "auth-required") do not yet have AdCP artifacts and are rejected here
|
|
313
|
+
* so callers handle them at the response level.
|
|
313
314
|
*/
|
|
315
|
+
const TERMINAL_A2A_STATES = new Set(['completed', 'failed', 'rejected', 'canceled']);
|
|
314
316
|
function unwrapA2AResponse(response) {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
'Only completed responses should be unwrapped.');
|
|
317
|
+
const taskState = response.result?.status?.state;
|
|
318
|
+
if (taskState && !TERMINAL_A2A_STATES.has(taskState)) {
|
|
319
|
+
throw new Error(`Cannot unwrap A2A response with intermediate status: ${taskState}. ` +
|
|
320
|
+
'Only terminal responses (completed, failed, rejected, canceled) should be unwrapped.');
|
|
320
321
|
}
|
|
321
322
|
// A2A error response (JSON-RPC error)
|
|
322
323
|
if (response.error) {
|
|
@@ -330,20 +331,20 @@ function unwrapA2AResponse(response) {
|
|
|
330
331
|
],
|
|
331
332
|
};
|
|
332
333
|
}
|
|
333
|
-
// A2A
|
|
334
|
-
// - MUST have result.artifacts array with at least one
|
|
335
|
-
// -
|
|
334
|
+
// A2A terminal response — same shape regardless of success or failure:
|
|
335
|
+
// - MUST have result.artifacts array with at least one artifact
|
|
336
|
+
// - Artifact MUST have at least one DataPart (kind: 'data') with the AdCP payload
|
|
337
|
+
// (success payload for `completed`, `adcp_error` envelope for `failed`)
|
|
336
338
|
// - MAY have TextParts (kind: 'text') with optional messages
|
|
337
339
|
const artifacts = response.result?.artifacts;
|
|
338
340
|
if (!Array.isArray(artifacts) || artifacts.length === 0) {
|
|
339
|
-
throw new Error('A2A
|
|
341
|
+
throw new Error('A2A response must have at least one artifact');
|
|
340
342
|
}
|
|
341
343
|
// Take last artifact (conversational protocols append artifacts over time)
|
|
342
344
|
// Note: A2A artifacts don't have a status field - only Tasks have status.
|
|
343
|
-
// If the Task status is "completed", all artifacts in result.artifacts are completed.
|
|
344
345
|
const artifact = artifacts[artifacts.length - 1];
|
|
345
346
|
if (!artifact) {
|
|
346
|
-
throw new Error('A2A
|
|
347
|
+
throw new Error('A2A response must have at least one artifact');
|
|
347
348
|
}
|
|
348
349
|
if (!artifact.parts || !Array.isArray(artifact.parts)) {
|
|
349
350
|
throw new Error('A2A artifact missing parts array');
|
|
@@ -353,7 +354,7 @@ function unwrapA2AResponse(response) {
|
|
|
353
354
|
const dataParts = artifact.parts.filter((p) => p.kind === 'data');
|
|
354
355
|
const dataPart = dataParts[dataParts.length - 1];
|
|
355
356
|
if (!dataPart?.data) {
|
|
356
|
-
throw new Error('A2A
|
|
357
|
+
throw new Error('A2A response must have a DataPart with AdCP data');
|
|
357
358
|
}
|
|
358
359
|
const textParts = artifact.parts.filter((p) => p.kind === 'text' && p.text).map((p) => p.text);
|
|
359
360
|
// Unwrap nested response field if present (some agents wrap AdCP responses)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-unwrapper.js","sourceRoot":"","sources":["../../../src/lib/utils/response-unwrapper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"response-unwrapper.js","sourceRoot":"","sources":["../../../src/lib/utils/response-unwrapper.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/version.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AdCP SDK library version
|
|
3
3
|
*/
|
|
4
|
-
export declare const LIBRARY_VERSION = "6.
|
|
4
|
+
export declare const LIBRARY_VERSION = "6.13.1";
|
|
5
5
|
/**
|
|
6
6
|
* AdCP specification version this library is built for
|
|
7
7
|
*/
|
|
@@ -29,10 +29,10 @@ export type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];
|
|
|
29
29
|
* Full version information
|
|
30
30
|
*/
|
|
31
31
|
export declare const VERSION_INFO: {
|
|
32
|
-
readonly library: "6.
|
|
32
|
+
readonly library: "6.13.1";
|
|
33
33
|
readonly adcp: "3.0.6";
|
|
34
34
|
readonly compatibleVersions: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0.0-beta.3", "3.0.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6"];
|
|
35
|
-
readonly generatedAt: "2026-05-
|
|
35
|
+
readonly generatedAt: "2026-05-07T19:07:17.284Z";
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
38
|
* Get the AdCP specification version this library is built for
|
package/dist/lib/version.js
CHANGED
|
@@ -11,7 +11,7 @@ exports.parseAdcpMajorVersion = parseAdcpMajorVersion;
|
|
|
11
11
|
/**
|
|
12
12
|
* AdCP SDK library version
|
|
13
13
|
*/
|
|
14
|
-
exports.LIBRARY_VERSION = '6.
|
|
14
|
+
exports.LIBRARY_VERSION = '6.13.1';
|
|
15
15
|
/**
|
|
16
16
|
* AdCP specification version this library is built for
|
|
17
17
|
*/
|
|
@@ -43,10 +43,10 @@ exports.COMPATIBLE_ADCP_VERSIONS = [
|
|
|
43
43
|
* Full version information
|
|
44
44
|
*/
|
|
45
45
|
exports.VERSION_INFO = {
|
|
46
|
-
library: '6.
|
|
46
|
+
library: '6.13.1',
|
|
47
47
|
adcp: '3.0.6',
|
|
48
48
|
compatibleVersions: exports.COMPATIBLE_ADCP_VERSIONS,
|
|
49
|
-
generatedAt: '2026-05-
|
|
49
|
+
generatedAt: '2026-05-07T19:07:17.284Z',
|
|
50
50
|
};
|
|
51
51
|
/**
|
|
52
52
|
* Get the AdCP specification version this library is built for
|