ssh-mcp-pro 1.4.2 → 1.5.0

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.
Files changed (66) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/mcp.d.ts +1 -1
  3. package/dist/mcp.js +1 -1
  4. package/dist/remote/agent-bounded-io.d.ts +20 -0
  5. package/dist/remote/agent-bounded-io.d.ts.map +1 -0
  6. package/dist/remote/agent-bounded-io.js +101 -0
  7. package/dist/remote/agent-bounded-io.js.map +1 -0
  8. package/dist/remote/agent-enrollment.d.ts +12 -0
  9. package/dist/remote/agent-enrollment.d.ts.map +1 -0
  10. package/dist/remote/agent-enrollment.js +87 -0
  11. package/dist/remote/agent-enrollment.js.map +1 -0
  12. package/dist/remote/agent-executor.d.ts.map +1 -1
  13. package/dist/remote/agent-executor.js +1 -100
  14. package/dist/remote/agent-executor.js.map +1 -1
  15. package/dist/remote/control-plane.d.ts +3 -2
  16. package/dist/remote/control-plane.d.ts.map +1 -1
  17. package/dist/remote/control-plane.js +22 -79
  18. package/dist/remote/control-plane.js.map +1 -1
  19. package/dist/remote/dashboard-enrollment-commands.d.ts +7 -0
  20. package/dist/remote/dashboard-enrollment-commands.d.ts.map +1 -0
  21. package/dist/remote/dashboard-enrollment-commands.js +15 -0
  22. package/dist/remote/dashboard-enrollment-commands.js.map +1 -0
  23. package/dist/remote/oauth-handler.d.ts +5 -0
  24. package/dist/remote/oauth-handler.d.ts.map +1 -1
  25. package/dist/remote/oauth-handler.js +110 -65
  26. package/dist/remote/oauth-handler.js.map +1 -1
  27. package/dist/remote/oauth-provider-exchange.d.ts +11 -0
  28. package/dist/remote/oauth-provider-exchange.d.ts.map +1 -0
  29. package/dist/remote/oauth-provider-exchange.js +73 -0
  30. package/dist/remote/oauth-provider-exchange.js.map +1 -0
  31. package/dist/remote/store-schema.d.ts +4 -0
  32. package/dist/remote/store-schema.d.ts.map +1 -0
  33. package/dist/remote/store-schema.js +147 -0
  34. package/dist/remote/store-schema.js.map +1 -0
  35. package/dist/remote/store.d.ts +7 -2
  36. package/dist/remote/store.d.ts.map +1 -1
  37. package/dist/remote/store.js +81 -130
  38. package/dist/remote/store.js.map +1 -1
  39. package/dist/remote/types.d.ts +13 -0
  40. package/dist/remote/types.d.ts.map +1 -1
  41. package/dist/remote/types.js.map +1 -1
  42. package/dist/remote/web-dashboard-oauth-users.d.ts.map +1 -1
  43. package/dist/remote/web-dashboard-oauth-users.js +4 -38
  44. package/dist/remote/web-dashboard-oauth-users.js.map +1 -1
  45. package/dist/remote/web-dashboard.d.ts +0 -2
  46. package/dist/remote/web-dashboard.d.ts.map +1 -1
  47. package/dist/remote/web-dashboard.js +3 -18
  48. package/dist/remote/web-dashboard.js.map +1 -1
  49. package/dist/session-auth-config.d.ts +8 -0
  50. package/dist/session-auth-config.d.ts.map +1 -0
  51. package/dist/session-auth-config.js +67 -0
  52. package/dist/session-auth-config.js.map +1 -0
  53. package/dist/session.d.ts +0 -12
  54. package/dist/session.d.ts.map +1 -1
  55. package/dist/session.js +3 -64
  56. package/dist/session.js.map +1 -1
  57. package/docs/api-overview.md +67 -0
  58. package/docs/development/release-process.md +5 -5
  59. package/docs/security/hosted-data-inventory.md +3 -1
  60. package/docs/theme/favicon.svg +12 -0
  61. package/docs/theme/ssh-docs.css +670 -0
  62. package/docs/theme/ssh-docs.js +58 -0
  63. package/mcp.json +1 -1
  64. package/package.json +11 -11
  65. package/registry/ssh-mcp-pro/mcp.json +1 -1
  66. package/server.json +3 -3
@@ -3,14 +3,15 @@ import { createMcpHandler, isLegacyRequest, McpServer } from "@modelcontextproto
3
3
  import { toMcpWebRequest, sendMcpWebResponse } from "../mcp-http-web.js";
4
4
  import { ensurePemKeyPair, hashSecret, id, keyId, loadJwtKeyPair, nowIso, randomToken, signEnvelope, verifyRemoteAccessToken, } from "./crypto.js";
5
5
  import { loadRemoteConfig } from "./config.js";
6
- import { isRecord, asString, negotiateMcpProtocolVersion, quotePosixArg, quotePowerShellArg, addNoStore, safeError, isValidEd25519PublicKey, readJson, sanitizeAgent, } from "./http-util.js";
6
+ import { isRecord, asString, negotiateMcpProtocolVersion, addNoStore, safeError, isValidEd25519PublicKey, readJson, sanitizeAgent, } from "./http-util.js";
7
7
  import { listRemoteToolDescriptors } from "./mcp-tools.js";
8
- import { createAgentPolicy, mergeCustomPolicy } from "./policy.js";
8
+ import { mergeCustomPolicy } from "./policy.js";
9
9
  import { parseAgentHostMetadata } from "./schemas.js";
10
10
  import { hasCapability } from "./scopes.js";
11
11
  import { RemoteStore } from "./store.js";
12
12
  import { OAuthHandler } from "./oauth-handler.js";
13
13
  import { WebDashboardHandler } from "./web-dashboard.js";
14
+ import { AgentEnrollmentService } from "./agent-enrollment.js";
14
15
  import { AgentWebSocketHandler, } from "./agent-handler.js";
15
16
  import { TOOL_CAPABILITY_MAP } from "./types.js";
16
17
  import { jsonResponse } from "./util.js";
@@ -28,12 +29,14 @@ export class RemoteControlPlane {
28
29
  oauth;
29
30
  agentHandler;
30
31
  dashboard;
32
+ enrollment;
31
33
  constructor(config = loadRemoteConfig()) {
32
34
  this.config = config;
33
35
  this.store = new RemoteStore(config.databaseUrl);
34
36
  this.controlPlaneKeyPair = ensurePemKeyPair(config.controlPlaneSigningKeyPath);
35
37
  this.oauth = new OAuthHandler(config, this.store, this.authorizeTransactions, () => this.requireJwtKeyPair(), (event) => this.audit(event));
36
38
  this.agentHandler = new AgentWebSocketHandler(config, this.store, this.agentConnections, this.agentHelloNonces, this.pendingActions, (event) => this.audit(event));
39
+ this.enrollment = new AgentEnrollmentService(this.config, this.store, (event) => this.audit(event));
37
40
  this.dashboard = new WebDashboardHandler({
38
41
  config: this.config,
39
42
  store: this.store,
@@ -41,7 +44,7 @@ export class RemoteControlPlane {
41
44
  agentHandler: this.agentHandler,
42
45
  getJwtKeyPair: () => this.requireJwtKeyPair(),
43
46
  audit: (event) => this.audit(event),
44
- createEnrollmentToken: (principal, args) => this.createEnrollmentToken(principal, args),
47
+ createEnrollmentToken: (principal, args) => this.enrollment.createEnrollmentToken(principal, args),
45
48
  updateAgentPolicy: (principal, agent, policy) => this.updateAgentPolicy(principal, agent, policy),
46
49
  revokeAgent: (principal, agent) => this.revokeAgent(principal, agent),
47
50
  resolveAgent: (userId, value) => this.resolveAgent(userId, value),
@@ -87,6 +90,18 @@ export class RemoteControlPlane {
87
90
  return;
88
91
  await this.oauth.handleGoogleCallback(req, res);
89
92
  }
93
+ /** Keep credential-exchange routes together without inflating OAuth dispatch complexity. */
94
+ async handleOAuthGrantRequest(req, res, pathname) {
95
+ if (pathname === "/oauth/token" && req.method === "POST") {
96
+ await this.oauth.handleToken(req, res);
97
+ return true;
98
+ }
99
+ if (pathname === "/oauth/revoke" && req.method === "POST") {
100
+ await this.oauth.handleRevoke(req, res);
101
+ return true;
102
+ }
103
+ return false;
104
+ }
90
105
  async handleOAuthRequest(req, res, pathname) {
91
106
  if (pathname === "/oauth/register" && req.method === "POST") {
92
107
  await this.oauth.handleRegister(req, res);
@@ -108,8 +123,7 @@ export class RemoteControlPlane {
108
123
  await this.handleGoogleOAuthCallback(req, res);
109
124
  return true;
110
125
  }
111
- if (pathname === "/oauth/token" && req.method === "POST") {
112
- await this.oauth.handleToken(req, res);
126
+ if (await this.handleOAuthGrantRequest(req, res, pathname)) {
113
127
  return true;
114
128
  }
115
129
  if (pathname === "/oauth/jwks.json" && req.method === "GET") {
@@ -315,7 +329,7 @@ export class RemoteControlPlane {
315
329
  const principal = await this.authenticate(req);
316
330
  if (pathname === "/api/agents/enrollment-tokens" && req.method === "POST") {
317
331
  const body = await readJson(req);
318
- const result = this.createEnrollmentToken(principal, body);
332
+ const result = this.enrollment.createEnrollmentToken(principal, body);
319
333
  jsonResponse(res, 201, result, addNoStore());
320
334
  return;
321
335
  }
@@ -456,11 +470,11 @@ export class RemoteControlPlane {
456
470
  return { agents: this.store.listAgents(principal.userId).map(sanitizeAgent) };
457
471
  }
458
472
  if (tool === "create_enrollment_token") {
459
- return this.createEnrollmentToken(principal, args);
473
+ return this.enrollment.createEnrollmentToken(principal, args);
460
474
  }
461
475
  if (tool === "get_agent_install_command") {
462
476
  const agent = this.requireAgent(principal.userId, args);
463
- return this.installCommand(agent, undefined);
477
+ return this.enrollment.installCommand(agent, undefined);
464
478
  }
465
479
  if (tool === "update_agent_policy") {
466
480
  const agent = this.requireAgent(principal.userId, args);
@@ -490,77 +504,6 @@ export class RemoteControlPlane {
490
504
  const actionResult = await this.dispatchAction(principal, agent, tool, capability, args);
491
505
  return { action: actionResult };
492
506
  }
493
- createEnrollmentToken(principal, args) {
494
- if (!hasCapability(principal.capabilities, "agents.admin")) {
495
- throw safeError("INVALID_SCOPE", "agents:admin scope is required", 403);
496
- }
497
- const alias = asString(args.alias)?.trim();
498
- if (!alias) {
499
- throw safeError("FORBIDDEN", "alias is required");
500
- }
501
- const profile = asString(args.requested_profile) ?? "read-only";
502
- const policy = createAgentPolicy(profile === "operations" || profile === "full-admin" ? profile : "read-only");
503
- const now = nowIso();
504
- const existing = this.store.getAgentByAlias(principal.userId, alias);
505
- if (existing && existing.status !== "revoked") {
506
- throw safeError("FORBIDDEN", "Agent alias already exists");
507
- }
508
- const agent = {
509
- id: id("agt"),
510
- userId: principal.userId,
511
- alias,
512
- status: "pending",
513
- profile: policy.profile,
514
- policy,
515
- policyVersion: policy.version,
516
- createdAt: now,
517
- updatedAt: now,
518
- };
519
- const token = randomToken(32);
520
- this.store.insertAgent(agent);
521
- this.store.insertEnrollmentToken({
522
- id: id("enr"),
523
- agentId: agent.id,
524
- userId: principal.userId,
525
- tokenHash: hashSecret(token),
526
- expiresAt: new Date(Date.now() + this.config.enrollmentTokenTtlSeconds * 1000).toISOString(),
527
- createdAt: now,
528
- });
529
- this.audit({
530
- userId: principal.userId,
531
- agentId: agent.id,
532
- eventType: "enrollment_token_created",
533
- severity: "info",
534
- metadata: { alias, profile: policy.profile },
535
- });
536
- return { ...this.installCommand(agent, token), enrollment_token: token };
537
- }
538
- installCommand(agent, token) {
539
- const tokenArgument = token ?? "<create-a-new-enrollment-token>";
540
- const posixBase = [
541
- "npx --yes --package ssh-mcp-pro@latest ssh-mcp-pro-agent enroll",
542
- `--server ${quotePosixArg(this.config.publicBaseUrl)}`,
543
- `--token ${quotePosixArg(tokenArgument)}`,
544
- `--alias ${quotePosixArg(agent.alias)}`,
545
- ].join(" ");
546
- const powershellBase = [
547
- "npx --yes --package ssh-mcp-pro@latest ssh-mcp-pro-agent enroll",
548
- `--server ${quotePowerShellArg(this.config.publicBaseUrl)}`,
549
- `--token ${quotePowerShellArg(tokenArgument)}`,
550
- `--alias ${quotePowerShellArg(agent.alias)}`,
551
- ].join(" ");
552
- return {
553
- agent_id: agent.id,
554
- alias: agent.alias,
555
- token_recoverable: Boolean(token),
556
- commands: {
557
- npm: posixBase,
558
- run: "npx --yes --package ssh-mcp-pro@latest ssh-mcp-pro-agent run",
559
- windows: powershellBase,
560
- },
561
- expires_in_seconds: token ? this.config.enrollmentTokenTtlSeconds : undefined,
562
- };
563
- }
564
507
  updateAgentPolicy(principal, agent, value) {
565
508
  if (!hasCapability(principal.capabilities, "agents.admin")) {
566
509
  throw safeError("INVALID_SCOPE", "agents:admin scope is required", 403);
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/remote/control-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/remote/control-plane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Build copyable enrollment commands without weakening shell-argument boundaries. */
2
+ export declare function buildDashboardEnrollmentCommands(serverUrl: string, token: string, alias: string): {
3
+ linux: string;
4
+ windows: string;
5
+ npm: string;
6
+ };
7
+ //# sourceMappingURL=dashboard-enrollment-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-enrollment-commands.d.ts","sourceRoot":"","sources":["../../src/remote/dashboard-enrollment-commands.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;EAY/F"}
@@ -0,0 +1,15 @@
1
+ /** Build copyable enrollment commands without weakening shell-argument boundaries. */
2
+ export function buildDashboardEnrollmentCommands(serverUrl, token, alias) {
3
+ const quotePosix = (value) => "'" + value.replaceAll("'", String.raw `'\''`) + "'";
4
+ const quotePowerShell = (value) => "'" + value.replaceAll("'", "''") + "'";
5
+ const installerSh = `${serverUrl}/install-agent.sh`;
6
+ const installerPs = `${serverUrl}/install-agent.ps1`;
7
+ // Keep pipefail so an unsuccessful curl download never looks like a valid install.
8
+ const curlScript = 'curl -fsSL "$1" | bash -s -- --server "$2" --token "$3" --alias "$4"';
9
+ return {
10
+ linux: `bash -o pipefail -c ${quotePosix(curlScript)} _ ${quotePosix(installerSh)} ${quotePosix(serverUrl)} ${quotePosix(token)} ${quotePosix(alias)}`,
11
+ windows: `& ([scriptblock]::Create((Invoke-RestMethod -Uri ${quotePowerShell(installerPs)}))) -Server ${quotePowerShell(serverUrl)} -Token ${quotePowerShell(token)} -Alias ${quotePowerShell(alias)}`,
12
+ npm: `npx --yes --package ssh-mcp-pro@latest ssh-mcp-pro-agent enroll --server ${quotePosix(serverUrl)} --token ${quotePosix(token)} --alias ${quotePosix(alias)} && npx --yes --package ssh-mcp-pro@latest ssh-mcp-pro-agent run`,
13
+ };
14
+ }
15
+ //# sourceMappingURL=dashboard-enrollment-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-enrollment-commands.js","sourceRoot":"","sources":["../../src/remote/dashboard-enrollment-commands.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,UAAU,gCAAgC,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAa;IAC9F,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAA,MAAM,CAAC,GAAG,GAAG,CAAC;IAClG,MAAM,eAAe,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;IAC3F,MAAM,WAAW,GAAG,GAAG,SAAS,mBAAmB,CAAC;IACpD,MAAM,WAAW,GAAG,GAAG,SAAS,oBAAoB,CAAC;IACrD,mFAAmF;IACnF,MAAM,UAAU,GAAG,sEAAsE,CAAC;IAC1F,OAAO;QACL,KAAK,EAAE,uBAAuB,UAAU,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;QACtJ,OAAO,EAAE,oDAAoD,eAAe,CAAC,WAAW,CAAC,eAAe,eAAe,CAAC,SAAS,CAAC,WAAW,eAAe,CAAC,KAAK,CAAC,WAAW,eAAe,CAAC,KAAK,CAAC,EAAE;QACtM,GAAG,EAAE,4EAA4E,UAAU,CAAC,SAAS,CAAC,YAAY,UAAU,CAAC,KAAK,CAAC,YAAY,UAAU,CAAC,KAAK,CAAC,kEAAkE;KACnO,CAAC;AACJ,CAAC"}
@@ -21,6 +21,7 @@ export declare class OAuthHandler {
21
21
  private readonly getJwtKeyPair;
22
22
  private readonly audit;
23
23
  private readonly registrationAttempts;
24
+ private readonly refreshTokenResponseField;
24
25
  private transactionCookie;
25
26
  private matchingBrowser;
26
27
  constructor(config: RemoteConfig, store: RemoteStore, authorizeTransactions: Map<string, PendingAuthorize>, getJwtKeyPair: () => JwtKeyPair, audit: (event: Omit<AuditEvent, "id" | "createdAt">) => void);
@@ -71,8 +72,12 @@ export declare class OAuthHandler {
71
72
  };
72
73
  private isGitHubUserAllowed;
73
74
  private issueAuthorizationCode;
75
+ /** Explicit OAuth revocation; RFC 7009 never reveals token validity. */
76
+ handleRevoke(req: IncomingMessage, res: ServerResponse): Promise<void>;
74
77
  /** POST /oauth/token */
75
78
  handleToken(req: IncomingMessage, res: ServerResponse): Promise<void>;
79
+ /** Rotate a bearer refresh token exactly once; all descendants die on replay. */
80
+ private refreshAccessToken;
76
81
  private userFromId;
77
82
  /** Remove expired pending authorization transactions. */
78
83
  cleanupExpired(now?: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-handler.d.ts","sourceRoot":"","sources":["../../src/remote/oauth-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-handler.d.ts","sourceRoot":"","sources":["../../src/remote/oauth-handler.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { escape as escapeHtml } from "html-escaper";
2
2
  import { URL } from "node:url";
3
3
  import { hashSecret, id, issueAccessToken, nowIso, publicJwkFromPem, randomToken, } from "./crypto.js";
4
4
  import { asString, asStringArray, addNoStore, isSafeRedirectUri, pkceChallenge, readJson, readJsonOrForm, redirect, safeError, scopeList, } from "./http-util.js";
5
+ import { exchangeGitHubIdentity, exchangeGoogleIdentity } from "./oauth-provider-exchange.js";
5
6
  import { REMOTE_SCOPES } from "./types.js";
6
7
  import { jsonResponse } from "./util.js";
7
8
  /** Handles OAuth 2.0 authorization code flow with PKCE and GitHub identity. */
@@ -12,6 +13,7 @@ export class OAuthHandler {
12
13
  getJwtKeyPair;
13
14
  audit;
14
15
  registrationAttempts = new Map();
16
+ refreshTokenResponseField = "refresh_token";
15
17
  transactionCookie(value) {
16
18
  const secure = this.config.publicBaseUrl.startsWith("https://") ? "; Secure" : "";
17
19
  return `ssh_mcp_oauth_tx=${value}; Path=/oauth; HttpOnly; SameSite=Lax; Max-Age=300${secure}`;
@@ -45,10 +47,11 @@ export class OAuthHandler {
45
47
  authorization_response_iss_parameter_supported: true,
46
48
  authorization_endpoint: `${this.config.publicBaseUrl}/oauth/authorize`,
47
49
  token_endpoint: `${this.config.publicBaseUrl}/oauth/token`,
50
+ revocation_endpoint: `${this.config.publicBaseUrl}/oauth/revoke`,
48
51
  registration_endpoint: `${this.config.publicBaseUrl}/oauth/register`,
49
52
  jwks_uri: `${this.config.publicBaseUrl}/oauth/jwks.json`,
50
53
  response_types_supported: ["code"],
51
- grant_types_supported: ["authorization_code"],
54
+ grant_types_supported: ["authorization_code", "refresh_token"],
52
55
  code_challenge_methods_supported: ["S256"],
53
56
  token_endpoint_auth_methods_supported: ["none"],
54
57
  scopes_supported: REMOTE_SCOPES,
@@ -74,13 +77,22 @@ export class OAuthHandler {
74
77
  if (this.store.countOAuthClients() >= this.config.maxOAuthClients) {
75
78
  throw safeError("FORBIDDEN", "OAuth client registration limit reached", 429);
76
79
  }
80
+ const grantTypes = body.grant_types === undefined
81
+ ? ["authorization_code", "refresh_token"]
82
+ : asStringArray(body.grant_types);
83
+ if ((!Array.isArray(body.grant_types) && body.grant_types !== undefined) ||
84
+ !grantTypes.includes("authorization_code") ||
85
+ grantTypes.some((grant) => !["authorization_code", "refresh_token"].includes(grant)) ||
86
+ new Set(grantTypes).size !== grantTypes.length) {
87
+ throw safeError("INVALID_CLIENT", "Unsupported OAuth grant_types");
88
+ }
77
89
  const now = nowIso();
78
90
  const client = {
79
91
  id: id("clirow"),
80
92
  clientId: id("cli"),
81
93
  clientName: asString(body.client_name) ?? "ChatGPT Connector",
82
94
  redirectUris,
83
- grantTypes: ["authorization_code"],
95
+ grantTypes,
84
96
  responseTypes: ["code"],
85
97
  tokenEndpointAuthMethod: "none",
86
98
  createdAt: now,
@@ -315,7 +327,7 @@ export class OAuthHandler {
315
327
  clientId,
316
328
  clientName: "Restored ChatGPT Connector",
317
329
  redirectUris: [redirectUri],
318
- grantTypes: ["authorization_code"],
330
+ grantTypes: ["authorization_code", "refresh_token"],
319
331
  responseTypes: ["code"],
320
332
  tokenEndpointAuthMethod: "none",
321
333
  createdAt: nowIso(),
@@ -390,40 +402,9 @@ export class OAuthHandler {
390
402
  }
391
403
  async fetchGoogleUser(code) {
392
404
  const testUser = this.testGoogleUser();
393
- if (testUser) {
405
+ if (testUser)
394
406
  return testUser;
395
- }
396
- if (!this.config.googleClientId || !this.config.googleClientSecret) {
397
- throw safeError("FORBIDDEN", "Google OAuth is not configured", 503);
398
- }
399
- const tokenResponse = await fetch("https://oauth2.googleapis.com/token", {
400
- method: "POST",
401
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
402
- body: new URLSearchParams({
403
- code,
404
- client_id: this.config.googleClientId,
405
- client_secret: this.config.googleClientSecret,
406
- redirect_uri: this.config.googleCallbackUrl,
407
- grant_type: "authorization_code",
408
- }).toString(),
409
- });
410
- const tokenPayload = (await tokenResponse.json());
411
- const accessToken = asString(tokenPayload.access_token);
412
- if (!accessToken) {
413
- throw safeError("INVALID_TOKEN", "Google OAuth token exchange failed", 502);
414
- }
415
- const userResponse = await fetch("https://openidconnect.googleapis.com/v1/userinfo", {
416
- headers: { Authorization: `Bearer ${accessToken}` },
417
- });
418
- const userPayload = (await userResponse.json());
419
- const googleSub = asString(userPayload.sub);
420
- const email = asString(userPayload.email);
421
- const name = asString(userPayload.name) ?? email ?? "Google User";
422
- const picture = asString(userPayload.picture);
423
- if (!googleSub || !email) {
424
- throw safeError("INVALID_TOKEN", "Google OAuth user response missing valid identity", 502);
425
- }
426
- return { id: googleSub, email, name, picture };
407
+ return exchangeGoogleIdentity(this.config, code);
427
408
  }
428
409
  /** Fixture identities must never bypass provider login on public-facing hosts. */
429
410
  allowFixtureIdentity() {
@@ -472,35 +453,7 @@ export class OAuthHandler {
472
453
  this.config.allowedGoogleEmails.includes(user.email));
473
454
  }
474
455
  async fetchGitHubUser(code) {
475
- const tokenResponse = await fetch("https://github.com/login/oauth/access_token", {
476
- method: "POST",
477
- headers: { Accept: "application/json", "Content-Type": "application/json" },
478
- body: JSON.stringify({
479
- client_id: this.config.githubClientId,
480
- client_secret: this.config.githubClientSecret,
481
- code,
482
- redirect_uri: this.config.githubCallbackUrl,
483
- }),
484
- });
485
- const tokenPayload = (await tokenResponse.json());
486
- const accessToken = asString(tokenPayload.access_token);
487
- if (!accessToken) {
488
- throw safeError("INVALID_TOKEN", "GitHub OAuth token exchange failed", 502);
489
- }
490
- const userResponse = await fetch("https://api.github.com/user", {
491
- headers: { Authorization: `Bearer ${accessToken}`, Accept: "application/vnd.github+json" },
492
- });
493
- const userPayload = (await userResponse.json());
494
- const githubId = userPayload.id;
495
- const githubLogin = userPayload.login;
496
- if (typeof githubId !== "number" ||
497
- !Number.isSafeInteger(githubId) ||
498
- githubId <= 0 ||
499
- typeof githubLogin !== "string" ||
500
- !githubLogin) {
501
- throw safeError("INVALID_TOKEN", "GitHub OAuth user response missing valid identity", 502);
502
- }
503
- return { id: String(githubId), login: githubLogin };
456
+ return exchangeGitHubIdentity(this.config, code);
504
457
  }
505
458
  testGitHubUser() {
506
459
  if (!this.allowFixtureIdentity())
@@ -548,9 +501,24 @@ export class OAuthHandler {
548
501
  this.store.insertAuthorizationCode(record);
549
502
  return code;
550
503
  }
504
+ /** Explicit OAuth revocation; RFC 7009 never reveals token validity. */
505
+ async handleRevoke(req, res) {
506
+ const body = await readJsonOrForm(req);
507
+ const token = body.token ?? "";
508
+ const clientId = body.client_id ?? "";
509
+ if (/^[a-zA-Z0-9_-]{32,128}$/u.test(token) && clientId) {
510
+ this.store.revokeRefreshFamily(hashSecret(token), clientId, nowIso());
511
+ }
512
+ res.writeHead(200, { "Cache-Control": "no-store", Pragma: "no-cache" });
513
+ res.end();
514
+ }
551
515
  /** POST /oauth/token */
552
516
  async handleToken(req, res) {
553
517
  const body = await readJsonOrForm(req);
518
+ if (body.grant_type === "refresh_token") {
519
+ await this.refreshAccessToken(res, body);
520
+ return;
521
+ }
554
522
  if (body.grant_type !== "authorization_code") {
555
523
  throw safeError("INVALID_CLIENT", "grant_type must be authorization_code");
556
524
  }
@@ -582,8 +550,85 @@ export class OAuthHandler {
582
550
  throw safeError("INVALID_TOKEN", "Authorization code is expired or already used");
583
551
  }
584
552
  const token = await issueAccessToken(this.config, jwtKeyPair, user, scopes);
553
+ const refreshToken = client.grantTypes.includes("refresh_token") ? randomToken(32) : undefined;
554
+ if (refreshToken) {
555
+ this.store.createRefreshToken({
556
+ tokenHash: hashSecret(refreshToken),
557
+ familyId: id("refreshfam"),
558
+ clientId,
559
+ userId: codeRecord.userId,
560
+ resource: codeRecord.resource,
561
+ scope: scopes.join(" "),
562
+ expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),
563
+ createdAt: nowIso(),
564
+ });
565
+ }
566
+ jsonResponse(res, 200, {
567
+ access_token: token.token,
568
+ ...(refreshToken ? { refresh_token: refreshToken } : {}),
569
+ token_type: "Bearer",
570
+ expires_in: this.config.accessTokenTtlSeconds,
571
+ scope: scopes.join(" "),
572
+ }, addNoStore());
573
+ }
574
+ /** Rotate a bearer refresh token exactly once; all descendants die on replay. */
575
+ async refreshAccessToken(res, body) {
576
+ const clientId = body.client_id ?? "";
577
+ const raw = body.refresh_token ?? "";
578
+ const client = this.store.getClient(clientId);
579
+ const invalidGrant = () => jsonResponse(res, 400, { error: "invalid_grant" }, addNoStore());
580
+ if (!client ||
581
+ !client.grantTypes.includes("refresh_token") ||
582
+ !/^[a-zA-Z0-9_-]{32,128}$/u.test(raw)) {
583
+ invalidGrant();
584
+ return;
585
+ }
586
+ const old = this.store.getRefreshTokenByHash(hashSecret(raw));
587
+ if (!old) {
588
+ invalidGrant();
589
+ return;
590
+ }
591
+ if (old.clientId !== clientId || old.resource !== this.config.mcpResourceUrl) {
592
+ invalidGrant();
593
+ return;
594
+ }
595
+ const now = nowIso();
596
+ if (old.expiresAt <= now || old.revokedAt) {
597
+ invalidGrant();
598
+ return;
599
+ }
600
+ const user = this.userFromId(old.userId);
601
+ if ((user.githubId &&
602
+ !this.isGitHubUserAllowed({ id: user.githubId, login: user.githubLogin ?? "" })) ||
603
+ (user.googleId &&
604
+ !this.isGoogleUserAllowed({
605
+ id: user.googleId,
606
+ email: user.email ?? "",
607
+ name: user.displayName ?? "",
608
+ }))) {
609
+ invalidGrant();
610
+ return;
611
+ }
612
+ const scopes = scopeList(old.scope);
613
+ const token = await issueAccessToken(this.config, this.getJwtKeyPair(), user, scopes);
614
+ const newRaw = randomToken(32);
615
+ const successor = {
616
+ tokenHash: hashSecret(newRaw),
617
+ familyId: old.familyId,
618
+ clientId: old.clientId,
619
+ userId: old.userId,
620
+ resource: old.resource,
621
+ scope: old.scope,
622
+ expiresAt: old.expiresAt,
623
+ createdAt: now,
624
+ };
625
+ if (!this.store.rotateRefreshToken(old.tokenHash, clientId, successor, now)) {
626
+ invalidGrant();
627
+ return;
628
+ }
585
629
  jsonResponse(res, 200, {
586
630
  access_token: token.token,
631
+ [this.refreshTokenResponseField]: newRaw,
587
632
  token_type: "Bearer",
588
633
  expires_in: this.config.accessTokenTtlSeconds,
589
634
  scope: scopes.join(" "),