@google/gemini-cli-core 0.64.0-preview.0 → 0.64.0-preview.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/docs/tools/mcp-server.md +41 -12
- package/dist/google-gemini-cli-core-0.64.0-preview.0.tgz +0 -0
- package/dist/src/core/client.d.ts +6 -0
- package/dist/src/core/client.js +15 -0
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +31 -0
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +49 -0
- package/dist/src/core/geminiChat.js +209 -31
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +677 -1
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/mcp/oauth-callback-iss-handling.test.d.ts +6 -0
- package/dist/src/mcp/oauth-callback-iss-handling.test.js +251 -0
- package/dist/src/mcp/oauth-callback-iss-handling.test.js.map +1 -0
- package/dist/src/mcp/oauth-provider.d.ts +1 -0
- package/dist/src/mcp/oauth-provider.js +10 -1
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +112 -0
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +6 -0
- package/dist/src/mcp/oauth-utils.js +6 -0
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +32 -0
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/policy/policy-engine.js +74 -4
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +184 -0
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/tools/mcp-client.js +5 -0
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +49 -0
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/utils/historyHardening.js +4 -0
- package/dist/src/utils/historyHardening.js.map +1 -1
- package/dist/src/utils/historyHardening.test.js +39 -0
- package/dist/src/utils/historyHardening.test.js.map +1 -1
- package/dist/src/utils/oauth-flow.d.ts +2 -1
- package/dist/src/utils/oauth-flow.js +11 -6
- package/dist/src/utils/oauth-flow.js.map +1 -1
- package/dist/src/utils/oauth-flow.test.js +34 -2
- package/dist/src/utils/oauth-flow.test.js.map +1 -1
- package/dist/src/utils/untrustedContextTracker.js +234 -70
- package/dist/src/utils/untrustedContextTracker.js.map +1 -1
- package/dist/src/utils/untrustedContextTracker.test.js +141 -0
- package/dist/src/utils/untrustedContextTracker.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export declare const GIT_COMMIT_INFO = "
|
|
7
|
-
export declare const CLI_VERSION = "0.64.0-preview.
|
|
6
|
+
export declare const GIT_COMMIT_INFO = "581fdbbfa";
|
|
7
|
+
export declare const CLI_VERSION = "0.64.0-preview.1";
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
// This file is auto-generated by the build script (scripts/generate-git-commit-info.js)
|
|
7
7
|
// Do not edit this file manually.
|
|
8
|
-
export const GIT_COMMIT_INFO = '
|
|
9
|
-
export const CLI_VERSION = '0.64.0-preview.
|
|
8
|
+
export const GIT_COMMIT_INFO = '581fdbbfa';
|
|
9
|
+
export const CLI_VERSION = '0.64.0-preview.1';
|
|
10
10
|
//# sourceMappingURL=git-commit.js.map
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, vi, beforeEach, afterEach, afterAll, } from 'vitest';
|
|
7
|
+
const mockOpenBrowserSecurely = vi.hoisted(() => vi.fn());
|
|
8
|
+
vi.mock('../utils/secure-browser-launcher.js', () => ({
|
|
9
|
+
openBrowserSecurely: mockOpenBrowserSecurely,
|
|
10
|
+
}));
|
|
11
|
+
vi.mock('./oauth-token-storage.js', () => {
|
|
12
|
+
const mockSaveToken = vi.fn();
|
|
13
|
+
const mockGetCredentials = vi.fn();
|
|
14
|
+
const mockIsTokenExpired = vi.fn();
|
|
15
|
+
const mockDeleteCredentials = vi.fn();
|
|
16
|
+
return {
|
|
17
|
+
MCPOAuthTokenStorage: vi.fn(() => ({
|
|
18
|
+
saveToken: mockSaveToken,
|
|
19
|
+
getCredentials: mockGetCredentials,
|
|
20
|
+
isTokenExpired: mockIsTokenExpired,
|
|
21
|
+
deleteCredentials: mockDeleteCredentials,
|
|
22
|
+
})),
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
vi.mock('../utils/events.js', () => ({
|
|
26
|
+
coreEvents: {
|
|
27
|
+
emitFeedback: vi.fn(),
|
|
28
|
+
emitConsoleLog: vi.fn(),
|
|
29
|
+
},
|
|
30
|
+
}));
|
|
31
|
+
vi.mock('../utils/authConsent.js', () => ({
|
|
32
|
+
getConsentForOauth: vi.fn(() => Promise.resolve(true)),
|
|
33
|
+
}));
|
|
34
|
+
vi.mock('../utils/headless.js', () => ({
|
|
35
|
+
isHeadlessMode: vi.fn(() => false),
|
|
36
|
+
}));
|
|
37
|
+
vi.mock('node:dns/promises', () => ({
|
|
38
|
+
lookup: vi.fn(),
|
|
39
|
+
}));
|
|
40
|
+
import * as dnsPromises from 'node:dns/promises';
|
|
41
|
+
import ipaddr from 'ipaddr.js';
|
|
42
|
+
import { MCPOAuthProvider } from './oauth-provider.js';
|
|
43
|
+
import { MCPOAuthTokenStorage } from './oauth-token-storage.js';
|
|
44
|
+
import { OAuthUtils } from './oauth-utils.js';
|
|
45
|
+
import { startCallbackServer, REDIRECT_PATH } from '../utils/oauth-flow.js';
|
|
46
|
+
const realFetch = global.fetch;
|
|
47
|
+
const mockFetch = vi.fn();
|
|
48
|
+
global.fetch = mockFetch;
|
|
49
|
+
const createMockResponse = (options) => {
|
|
50
|
+
const status = options.status ?? (options.ok ? 200 : 400);
|
|
51
|
+
const headers = new Headers(options.headers ?? {});
|
|
52
|
+
if (options.contentType) {
|
|
53
|
+
headers.set('content-type', options.contentType);
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
ok: options.ok,
|
|
57
|
+
status,
|
|
58
|
+
headers,
|
|
59
|
+
text: () => Promise.resolve(options.text ?? ''),
|
|
60
|
+
json: () => Promise.resolve(options.json ?? {}),
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
describe('OAuth callback iss parameter handling (RFC 9207 & MCP Spec)', () => {
|
|
64
|
+
const mcpServerUrl = 'https://mcp.notion.com/mcp';
|
|
65
|
+
const expectedIssuer = 'https://mcp.notion.com';
|
|
66
|
+
const mismatchIssuer = 'https://other-idp.example.com';
|
|
67
|
+
const mockTokenResponse = {
|
|
68
|
+
access_token: 'notion_access_token_123',
|
|
69
|
+
token_type: 'Bearer',
|
|
70
|
+
expires_in: 3600,
|
|
71
|
+
refresh_token: 'notion_refresh_token_456',
|
|
72
|
+
scope: 'read write',
|
|
73
|
+
};
|
|
74
|
+
beforeEach(() => {
|
|
75
|
+
vi.clearAllMocks();
|
|
76
|
+
mockOpenBrowserSecurely.mockClear();
|
|
77
|
+
vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
78
|
+
vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
79
|
+
vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
80
|
+
vi.mocked(dnsPromises.lookup).mockImplementation(async (hostname) => {
|
|
81
|
+
if (ipaddr.isValid(hostname)) {
|
|
82
|
+
return [{ address: hostname, family: hostname.includes(':') ? 6 : 4 }];
|
|
83
|
+
}
|
|
84
|
+
return [{ address: '93.184.216.34', family: 4 }];
|
|
85
|
+
});
|
|
86
|
+
const tokenStorage = new MCPOAuthTokenStorage();
|
|
87
|
+
vi.mocked(tokenStorage.saveToken).mockResolvedValue(undefined);
|
|
88
|
+
vi.mocked(tokenStorage.getCredentials).mockResolvedValue(null);
|
|
89
|
+
});
|
|
90
|
+
afterEach(() => {
|
|
91
|
+
vi.restoreAllMocks();
|
|
92
|
+
vi.unstubAllEnvs();
|
|
93
|
+
});
|
|
94
|
+
afterAll(() => {
|
|
95
|
+
// global.fetch is assigned directly (not via vi.spyOn), so
|
|
96
|
+
// vi.restoreAllMocks() does not revert it. Restore it explicitly to avoid
|
|
97
|
+
// affecting other suites that share the same worker process.
|
|
98
|
+
global.fetch = realFetch;
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* Simulates the browser redirect back to the local callback server and the
|
|
102
|
+
* token exchange for a given MCPOAuthConfig.
|
|
103
|
+
*/
|
|
104
|
+
async function runOAuthFlow(oauthAuthConfig, callbackQueryParams) {
|
|
105
|
+
mockOpenBrowserSecurely.mockImplementation(async (authUrlStr) => {
|
|
106
|
+
const authUrl = new URL(authUrlStr);
|
|
107
|
+
const redirectUri = authUrl.searchParams.get('redirect_uri');
|
|
108
|
+
const state = authUrl.searchParams.get('state');
|
|
109
|
+
const callbackUrl = new URL(redirectUri);
|
|
110
|
+
callbackUrl.searchParams.set('code', 'notion_auth_code_abc');
|
|
111
|
+
callbackUrl.searchParams.set('state', state);
|
|
112
|
+
for (const [key, value] of Object.entries(callbackQueryParams)) {
|
|
113
|
+
callbackUrl.searchParams.set(key, value);
|
|
114
|
+
}
|
|
115
|
+
// Trigger the real local HTTP callback server asynchronously. The
|
|
116
|
+
// provider awaits the callback server port before opening the browser,
|
|
117
|
+
// so the server is already listening and no arbitrary delay is needed.
|
|
118
|
+
setImmediate(() => {
|
|
119
|
+
realFetch(callbackUrl.toString()).catch(() => { });
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
mockFetch.mockResolvedValueOnce(createMockResponse({
|
|
123
|
+
ok: true,
|
|
124
|
+
contentType: 'application/json',
|
|
125
|
+
text: JSON.stringify(mockTokenResponse),
|
|
126
|
+
json: mockTokenResponse,
|
|
127
|
+
}));
|
|
128
|
+
const authProvider = new MCPOAuthProvider(new MCPOAuthTokenStorage());
|
|
129
|
+
return authProvider.authenticate('notion', oauthAuthConfig, mcpServerUrl);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Simulates the OAuth authorization server metadata discovery and browser
|
|
133
|
+
* callback flow for an MCP server.
|
|
134
|
+
*/
|
|
135
|
+
async function runOAuthFlowWithMetadata(metadataOverrides, callbackQueryParams) {
|
|
136
|
+
const authServerMetadata = {
|
|
137
|
+
issuer: expectedIssuer,
|
|
138
|
+
authorization_endpoint: `${expectedIssuer}/authorize`,
|
|
139
|
+
token_endpoint: `${expectedIssuer}/token`,
|
|
140
|
+
registration_endpoint: `${expectedIssuer}/register`,
|
|
141
|
+
response_types_supported: ['code'],
|
|
142
|
+
grant_types_supported: ['authorization_code', 'refresh_token'],
|
|
143
|
+
code_challenge_methods_supported: ['S256'],
|
|
144
|
+
...metadataOverrides,
|
|
145
|
+
};
|
|
146
|
+
const discoveredConfig = OAuthUtils.metadataToOAuthConfig(authServerMetadata);
|
|
147
|
+
// Simulate mcp-client.ts constructing oauthAuthConfig from discoveredConfig
|
|
148
|
+
const oauthAuthConfig = {
|
|
149
|
+
enabled: true,
|
|
150
|
+
authorizationUrl: discoveredConfig.authorizationUrl,
|
|
151
|
+
issuer: discoveredConfig.issuer,
|
|
152
|
+
tokenUrl: discoveredConfig.tokenUrl,
|
|
153
|
+
scopes: discoveredConfig.scopes || [],
|
|
154
|
+
registrationUrl: discoveredConfig.registrationUrl,
|
|
155
|
+
authorizationResponseIssParameterSupported: discoveredConfig.authorizationResponseIssParameterSupported,
|
|
156
|
+
clientId: 'notion-dynamic-client-id',
|
|
157
|
+
};
|
|
158
|
+
return runOAuthFlow(oauthAuthConfig, callbackQueryParams);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Simulates a settings.json entry where the user configured the OAuth
|
|
162
|
+
* endpoints and issuer explicitly, so no metadata discovery takes place.
|
|
163
|
+
*/
|
|
164
|
+
async function runOAuthFlowWithExplicitConfig(configOverrides, callbackQueryParams) {
|
|
165
|
+
const oauthAuthConfig = {
|
|
166
|
+
enabled: true,
|
|
167
|
+
authorizationUrl: `${expectedIssuer}/authorize`,
|
|
168
|
+
tokenUrl: `${expectedIssuer}/token`,
|
|
169
|
+
issuer: expectedIssuer,
|
|
170
|
+
clientId: 'notion-static-client-id',
|
|
171
|
+
scopes: ['read'],
|
|
172
|
+
...configOverrides,
|
|
173
|
+
};
|
|
174
|
+
return runOAuthFlow(oauthAuthConfig, callbackQueryParams);
|
|
175
|
+
}
|
|
176
|
+
it('T1: allows callback without iss when authorization_response_iss_parameter_supported is omitted in metadata (MCP Spec Row 4)', async () => {
|
|
177
|
+
const token = await runOAuthFlowWithMetadata({
|
|
178
|
+
// Notion-style metadata: issuer is present, but authorization_response_iss_parameter_supported is omitted
|
|
179
|
+
}, {
|
|
180
|
+
// Notion callback: returns code and state, omits iss
|
|
181
|
+
});
|
|
182
|
+
expect(token.accessToken).toBe('notion_access_token_123');
|
|
183
|
+
});
|
|
184
|
+
it('T2: validates iss when authorization_response_iss_parameter_supported is true and iss is present (MCP Spec Row 1)', async () => {
|
|
185
|
+
// Matching iss succeeds
|
|
186
|
+
const token = await runOAuthFlowWithMetadata({
|
|
187
|
+
authorization_response_iss_parameter_supported: true,
|
|
188
|
+
}, {
|
|
189
|
+
iss: expectedIssuer,
|
|
190
|
+
});
|
|
191
|
+
expect(token.accessToken).toBe('notion_access_token_123');
|
|
192
|
+
// Mismatched iss is rejected
|
|
193
|
+
await expect(runOAuthFlowWithMetadata({
|
|
194
|
+
authorization_response_iss_parameter_supported: true,
|
|
195
|
+
}, {
|
|
196
|
+
iss: mismatchIssuer,
|
|
197
|
+
})).rejects.toThrow(/Issuer mismatch in authorization response/);
|
|
198
|
+
});
|
|
199
|
+
it('T3: rejects callback without iss when authorization_response_iss_parameter_supported is true (MCP Spec Row 2)', async () => {
|
|
200
|
+
await expect(runOAuthFlowWithMetadata({
|
|
201
|
+
authorization_response_iss_parameter_supported: true,
|
|
202
|
+
}, {
|
|
203
|
+
// Callback omits iss even though server declared support
|
|
204
|
+
})).rejects.toThrow('Missing "iss" parameter in authorization response per RFC 9207');
|
|
205
|
+
});
|
|
206
|
+
it('T4: validates iss when present even if authorization_response_iss_parameter_supported is omitted or false (MCP Spec Row 3)', async () => {
|
|
207
|
+
// Mismatched iss when authorization_response_iss_parameter_supported is omitted -> rejected
|
|
208
|
+
await expect(runOAuthFlowWithMetadata({}, {
|
|
209
|
+
iss: mismatchIssuer,
|
|
210
|
+
})).rejects.toThrow(/Issuer mismatch in authorization response/);
|
|
211
|
+
// Mismatched iss when authorization_response_iss_parameter_supported is false -> rejected
|
|
212
|
+
await expect(runOAuthFlowWithMetadata({
|
|
213
|
+
authorization_response_iss_parameter_supported: false,
|
|
214
|
+
}, {
|
|
215
|
+
iss: mismatchIssuer,
|
|
216
|
+
})).rejects.toThrow(/Issuer mismatch in authorization response/);
|
|
217
|
+
// Matching iss when authorization_response_iss_parameter_supported is omitted -> succeeds
|
|
218
|
+
const token = await runOAuthFlowWithMetadata({}, {
|
|
219
|
+
iss: expectedIssuer,
|
|
220
|
+
});
|
|
221
|
+
expect(token.accessToken).toBe('notion_access_token_123');
|
|
222
|
+
});
|
|
223
|
+
it('T5: accepts an iss-less callback at startCallbackServer level when expectedIssuer is passed with requireIssInResponse=false', async () => {
|
|
224
|
+
// When the discovered metadata does not advertise iss support, the provider
|
|
225
|
+
// passes requireIssInResponse=false. A callback omitting iss (like Notion
|
|
226
|
+
// MCP) must then resolve rather than reject.
|
|
227
|
+
const server = startCallbackServer('repro-state', undefined, expectedIssuer, false);
|
|
228
|
+
const port = await server.port;
|
|
229
|
+
const responsePromise = server.response;
|
|
230
|
+
const res = await realFetch(`http://localhost:${port}${REDIRECT_PATH}?code=notion-code-789&state=repro-state`);
|
|
231
|
+
expect(res.status).toBe(200);
|
|
232
|
+
const authResponse = await responsePromise;
|
|
233
|
+
expect(authResponse.code).toBe('notion-code-789');
|
|
234
|
+
expect(authResponse.state).toBe('repro-state');
|
|
235
|
+
expect(authResponse.iss).toBeUndefined();
|
|
236
|
+
});
|
|
237
|
+
it('T6: requires iss when issuer is configured explicitly without discovery metadata, unless authorizationResponseIssParameterSupported is false', async () => {
|
|
238
|
+
// Explicit issuer in settings.json, no discovery metadata, callback omits
|
|
239
|
+
// iss -> rejected (documented strict behavior is preserved).
|
|
240
|
+
await expect(runOAuthFlowWithExplicitConfig({}, {})).rejects.toThrow('Missing "iss" parameter in authorization response per RFC 9207');
|
|
241
|
+
// Explicit issuer with a matching iss in the callback -> succeeds.
|
|
242
|
+
const strictToken = await runOAuthFlowWithExplicitConfig({}, { iss: expectedIssuer });
|
|
243
|
+
expect(strictToken.accessToken).toBe('notion_access_token_123');
|
|
244
|
+
// Explicit issuer with the opt-out flag set to false and no iss -> succeeds.
|
|
245
|
+
const optOutToken = await runOAuthFlowWithExplicitConfig({ authorizationResponseIssParameterSupported: false }, {});
|
|
246
|
+
expect(optOutToken.accessToken).toBe('notion_access_token_123');
|
|
247
|
+
// The opt-out flag never disables the comparison when iss is present.
|
|
248
|
+
await expect(runOAuthFlowWithExplicitConfig({ authorizationResponseIssParameterSupported: false }, { iss: mismatchIssuer })).rejects.toThrow(/Issuer mismatch in authorization response/);
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
//# sourceMappingURL=oauth-callback-iss-handling.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-callback-iss-handling.test.js","sourceRoot":"","sources":["../../../src/mcp/oauth-callback-iss-handling.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,6 +201,8 @@ export class MCPOAuthProvider {
|
|
|
201
201
|
issuer: discoveredConfig.issuer,
|
|
202
202
|
tokenUrl: discoveredConfig.tokenUrl,
|
|
203
203
|
scopes: config.scopes || discoveredConfig.scopes || [],
|
|
204
|
+
authorizationResponseIssParameterSupported: config.authorizationResponseIssParameterSupported ??
|
|
205
|
+
discoveredConfig.authorizationResponseIssParameterSupported,
|
|
204
206
|
// Preserve existing client credentials
|
|
205
207
|
clientId: config.clientId,
|
|
206
208
|
clientSecret: config.clientSecret,
|
|
@@ -229,6 +231,8 @@ export class MCPOAuthProvider {
|
|
|
229
231
|
issuer: discoveredConfig.issuer,
|
|
230
232
|
scopes: config.scopes || discoveredConfig.scopes || [],
|
|
231
233
|
registrationUrl: discoveredConfig.registrationUrl,
|
|
234
|
+
authorizationResponseIssParameterSupported: config.authorizationResponseIssParameterSupported ??
|
|
235
|
+
discoveredConfig.authorizationResponseIssParameterSupported,
|
|
232
236
|
// Preserve existing client credentials
|
|
233
237
|
clientId: config.clientId,
|
|
234
238
|
clientSecret: config.clientSecret,
|
|
@@ -246,7 +250,12 @@ export class MCPOAuthProvider {
|
|
|
246
250
|
// Start callback server first to allocate port
|
|
247
251
|
// Pass config.issuer for RFC 9207 Authorization Server Issuer Identification / Mix-Up defense
|
|
248
252
|
debugLogger.debug(`Starting callback server for "${serverName}" (expected issuer: ${config.issuer || 'none'})...`);
|
|
249
|
-
|
|
253
|
+
// RFC 9207: discovered metadata (or an explicit user setting) provides an
|
|
254
|
+
// explicit boolean. When the issuer was configured explicitly without
|
|
255
|
+
// discovery metadata, the "iss" parameter remains required by default.
|
|
256
|
+
const requireIssInResponse = config.authorizationResponseIssParameterSupported ??
|
|
257
|
+
Boolean(config.issuer);
|
|
258
|
+
const callbackServer = startCallbackServer(pkceParams.state, preferredPort, config.issuer, requireIssInResponse);
|
|
250
259
|
// Wait for server to start and get the allocated port
|
|
251
260
|
// We need this port for client registration and auth URL building
|
|
252
261
|
const redirectPort = await callbackServer.port;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-provider.js","sourceRoot":"","sources":["../../../src/mcp/oauth-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oauth-provider.js","sourceRoot":"","sources":["../../../src/mcp/oauth-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -289,6 +289,118 @@ describe('MCPOAuthProvider', () => {
|
|
|
289
289
|
}),
|
|
290
290
|
}));
|
|
291
291
|
});
|
|
292
|
+
it('should require iss in callback only when discovered metadata sets authorization_response_iss_parameter_supported to true', async () => {
|
|
293
|
+
const configWithoutAuth = {
|
|
294
|
+
enabled: true,
|
|
295
|
+
clientId: 'test-client-id',
|
|
296
|
+
};
|
|
297
|
+
const mockResourceMetadata = {
|
|
298
|
+
resource: 'https://api.example.com/',
|
|
299
|
+
authorization_servers: ['https://discovered.auth.com'],
|
|
300
|
+
};
|
|
301
|
+
const mockAuthServerMetadataRequireIss = {
|
|
302
|
+
issuer: 'https://discovered.auth.com',
|
|
303
|
+
authorization_endpoint: 'https://discovered.auth.com/authorize',
|
|
304
|
+
token_endpoint: 'https://discovered.auth.com/token',
|
|
305
|
+
scopes_supported: ['read', 'write'],
|
|
306
|
+
authorization_response_iss_parameter_supported: true,
|
|
307
|
+
};
|
|
308
|
+
mockFetch
|
|
309
|
+
.mockResolvedValueOnce(createMockResponse({
|
|
310
|
+
ok: true,
|
|
311
|
+
status: 200,
|
|
312
|
+
}))
|
|
313
|
+
.mockResolvedValueOnce(createMockResponse({
|
|
314
|
+
ok: true,
|
|
315
|
+
contentType: 'application/json',
|
|
316
|
+
text: JSON.stringify(mockResourceMetadata),
|
|
317
|
+
json: mockResourceMetadata,
|
|
318
|
+
}))
|
|
319
|
+
.mockResolvedValueOnce(createMockResponse({
|
|
320
|
+
ok: true,
|
|
321
|
+
contentType: 'application/json',
|
|
322
|
+
text: JSON.stringify(mockAuthServerMetadataRequireIss),
|
|
323
|
+
json: mockAuthServerMetadataRequireIss,
|
|
324
|
+
}));
|
|
325
|
+
let callbackHandler;
|
|
326
|
+
vi.mocked(http.createServer).mockImplementation((handler) => {
|
|
327
|
+
callbackHandler = handler;
|
|
328
|
+
return mockHttpServer;
|
|
329
|
+
});
|
|
330
|
+
mockHttpServer.listen.mockImplementation((port, callback) => {
|
|
331
|
+
callback?.();
|
|
332
|
+
setTimeout(() => {
|
|
333
|
+
const mockReq = {
|
|
334
|
+
url: '/oauth/callback?code=auth_code_123&state=bW9ja19zdGF0ZV8xNl9ieXRlcw',
|
|
335
|
+
};
|
|
336
|
+
const mockRes = {
|
|
337
|
+
writeHead: vi.fn(),
|
|
338
|
+
end: vi.fn(),
|
|
339
|
+
};
|
|
340
|
+
callbackHandler(mockReq, mockRes);
|
|
341
|
+
}, 10);
|
|
342
|
+
});
|
|
343
|
+
const authProvider = new MCPOAuthProvider();
|
|
344
|
+
await expect(authProvider.authenticate('test-server', configWithoutAuth, 'https://api.example.com')).rejects.toThrow('Missing "iss" parameter in authorization response per RFC 9207');
|
|
345
|
+
});
|
|
346
|
+
it('should require iss in callback when issuer is configured explicitly without discovery metadata', async () => {
|
|
347
|
+
let callbackHandler;
|
|
348
|
+
vi.mocked(http.createServer).mockImplementation((handler) => {
|
|
349
|
+
callbackHandler = handler;
|
|
350
|
+
return mockHttpServer;
|
|
351
|
+
});
|
|
352
|
+
mockHttpServer.listen.mockImplementation((port, callback) => {
|
|
353
|
+
callback?.();
|
|
354
|
+
setTimeout(() => {
|
|
355
|
+
const mockReq = {
|
|
356
|
+
url: '/oauth/callback?code=auth_code_123&state=bW9ja19zdGF0ZV8xNl9ieXRlcw',
|
|
357
|
+
};
|
|
358
|
+
const mockRes = {
|
|
359
|
+
writeHead: vi.fn(),
|
|
360
|
+
end: vi.fn(),
|
|
361
|
+
};
|
|
362
|
+
callbackHandler(mockReq, mockRes);
|
|
363
|
+
}, 10);
|
|
364
|
+
});
|
|
365
|
+
const authProvider = new MCPOAuthProvider();
|
|
366
|
+
await expect(authProvider.authenticate('test-server', mockConfig)).rejects.toThrow('Missing "iss" parameter in authorization response per RFC 9207');
|
|
367
|
+
expect(mockFetch).not.toHaveBeenCalled();
|
|
368
|
+
});
|
|
369
|
+
it('should accept callback without iss when issuer is configured explicitly and authorizationResponseIssParameterSupported is false', async () => {
|
|
370
|
+
const configWithOptOut = {
|
|
371
|
+
...mockConfig,
|
|
372
|
+
authorizationResponseIssParameterSupported: false,
|
|
373
|
+
};
|
|
374
|
+
let callbackHandler;
|
|
375
|
+
vi.mocked(http.createServer).mockImplementation((handler) => {
|
|
376
|
+
callbackHandler = handler;
|
|
377
|
+
return mockHttpServer;
|
|
378
|
+
});
|
|
379
|
+
mockHttpServer.listen.mockImplementation((port, callback) => {
|
|
380
|
+
callback?.();
|
|
381
|
+
setTimeout(() => {
|
|
382
|
+
const mockReq = {
|
|
383
|
+
url: '/oauth/callback?code=auth_code_123&state=bW9ja19zdGF0ZV8xNl9ieXRlcw',
|
|
384
|
+
};
|
|
385
|
+
const mockRes = {
|
|
386
|
+
writeHead: vi.fn(),
|
|
387
|
+
end: vi.fn(),
|
|
388
|
+
};
|
|
389
|
+
callbackHandler(mockReq, mockRes);
|
|
390
|
+
}, 10);
|
|
391
|
+
});
|
|
392
|
+
// Mock token exchange
|
|
393
|
+
mockFetch.mockResolvedValueOnce(createMockResponse({
|
|
394
|
+
ok: true,
|
|
395
|
+
contentType: 'application/json',
|
|
396
|
+
text: JSON.stringify(mockTokenResponse),
|
|
397
|
+
json: mockTokenResponse,
|
|
398
|
+
}));
|
|
399
|
+
const authProvider = new MCPOAuthProvider();
|
|
400
|
+
const result = await authProvider.authenticate('test-server', configWithOptOut);
|
|
401
|
+
expect(result).toEqual(expect.objectContaining({ accessToken: 'access_token_123' }));
|
|
402
|
+
expect(mockFetch).toHaveBeenCalledWith('https://auth.example.com/token', expect.objectContaining({ method: 'POST' }));
|
|
403
|
+
});
|
|
292
404
|
it('should perform dynamic client registration when no client ID is provided but registration URL is provided', async () => {
|
|
293
405
|
const configWithoutClient = {
|
|
294
406
|
...mockConfig,
|