@thoughtspot/mcp-auth 2.0.1 → 2.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAU5B,OAAO,KAAK,EACX,aAAa,EACb,SAAS,EAET,SAAS,EACT,UAAU,EACV,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE;QAAE,cAAc,EAAE,YAAY,CAAC;QAAC,MAAM,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,MAAM,CAC1E,MAAM,EACN,OAAO,CACP,CAAC;CACF;AAED,MAAM,WAAW,oBAAoB;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CAC9C;AAyBD,wBAAgB,aAAa,CAC5B,OAAO,EAAE,oBAAoB,GAC3B,IAAI,CAAC,UAAU,CAAC,CAgVlB"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAa5B,OAAO,KAAK,EACX,aAAa,EACb,SAAS,EAET,SAAS,EACT,UAAU,EACV,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE;QAAE,cAAc,EAAE,YAAY,CAAC;QAAC,MAAM,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,MAAM,CAC1E,MAAM,EACN,OAAO,CACP,CAAC;CACF;AAED,MAAM,WAAW,oBAAoB;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CAC9C;AAyBD,wBAAgB,aAAa,CAC5B,OAAO,EAAE,oBAAoB,GAC3B,IAAI,CAAC,UAAU,CAAC,CA8clB"}
package/dist/handlers.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Hono } from "hono";
2
2
  import { decodeBase64Url, encodeBase64Url } from "hono/utils/encode";
3
3
  import { McpServerError } from "./errors";
4
- import { buildSamlRedirectUrl, parseRedirectApproval, renderApprovalDialog, } from "./oauth-utils";
4
+ import { buildSamlRedirectUrl, isValidRedirectUri, MAX_CLIENT_REDIRECT_URIS, parseRedirectApproval, renderApprovalDialog, verifyClientSecret, } from "./oauth-utils";
5
5
  import { renderTokenCallback } from "./token-utils";
6
6
  import { PUBLIC_ROUTES } from "./routes";
7
7
  function recordAuthMetric(hooks, name, status, c) {
@@ -139,6 +139,69 @@ export function createAuthApp(options) {
139
139
  });
140
140
  return { redirectTo };
141
141
  },
142
+ async updateClientRedirectUris(request, clientId, oauthProvider) {
143
+ // biome-ignore lint/suspicious/noExplicitAny: free-form JSON body
144
+ let body;
145
+ try {
146
+ body = await request.json();
147
+ }
148
+ catch (error) {
149
+ throw new McpServerError({ message: "Invalid JSON format", details: error }, 400);
150
+ }
151
+ const clientSecret = body?.client_secret;
152
+ if (!clientId ||
153
+ typeof clientSecret !== "string" ||
154
+ clientSecret.length === 0) {
155
+ throw new McpServerError({ message: "Invalid client credentials" }, 401);
156
+ }
157
+ const redirectUrisToAdd = body?.redirect_uris;
158
+ const redirectUrisToRemove = body?.redirect_uris_remove;
159
+ const isValidAddList = redirectUrisToAdd === undefined ||
160
+ (Array.isArray(redirectUrisToAdd) &&
161
+ redirectUrisToAdd.length > 0 &&
162
+ redirectUrisToAdd.every((uri) => typeof uri === "string" && isValidRedirectUri(uri)));
163
+ const isValidRemoveList = redirectUrisToRemove === undefined ||
164
+ (Array.isArray(redirectUrisToRemove) &&
165
+ redirectUrisToRemove.length > 0 &&
166
+ redirectUrisToRemove.every((uri) => typeof uri === "string" && uri.length > 0));
167
+ const addList = Array.isArray(redirectUrisToAdd)
168
+ ? redirectUrisToAdd
169
+ : [];
170
+ const removeList = Array.isArray(redirectUrisToRemove)
171
+ ? redirectUrisToRemove
172
+ : [];
173
+ if (!isValidAddList ||
174
+ !isValidRemoveList ||
175
+ (addList.length === 0 && removeList.length === 0)) {
176
+ throw new McpServerError({ message: "Invalid redirect URIs" }, 400);
177
+ }
178
+ const client = await oauthProvider.lookupClient(clientId);
179
+ // Always run the constant-time compare (verifyClientSecret falls back to
180
+ // a dummy hash when the client is missing) so that an unknown client and
181
+ // a wrong secret are indistinguishable — same status, same body, same time.
182
+ const isSecretValid = await verifyClientSecret(clientSecret, client?.clientSecret);
183
+ if (!client || !client.clientSecret || !isSecretValid) {
184
+ throw new McpServerError({ message: "Invalid client credentials" }, 401);
185
+ }
186
+ const removeSet = new Set(removeList);
187
+ const afterRemoval = client.redirectUris.filter((uri) => !removeSet.has(uri));
188
+ const merged = Array.from(new Set([...afterRemoval, ...addList]));
189
+ if (merged.length === 0) {
190
+ throw new McpServerError({ message: "A client must retain at least one redirect URI" }, 400);
191
+ }
192
+ if (merged.length > MAX_CLIENT_REDIRECT_URIS) {
193
+ throw new McpServerError({
194
+ message: `Too many redirect URIs: a client may have at most ${MAX_CLIENT_REDIRECT_URIS}`,
195
+ }, 400);
196
+ }
197
+ const updated = await oauthProvider.updateClient(clientId, {
198
+ redirectUris: merged,
199
+ });
200
+ return {
201
+ client_id: clientId,
202
+ redirect_uris: updated?.redirectUris ?? merged,
203
+ };
204
+ },
142
205
  };
143
206
  app.get(PUBLIC_ROUTES.authorize, async (c) => {
144
207
  try {
@@ -239,6 +302,24 @@ export function createAuthApp(options) {
239
302
  return response;
240
303
  }
241
304
  });
305
+ app.post("/register/:clientId/redirect-uris", async (c) => {
306
+ try {
307
+ const result = await wrap(hooks, "update-client-redirect-uris", () => handler.updateClientRedirectUris(c.req.raw, c.req.param("clientId"), c.env.OAUTH_PROVIDER));
308
+ return new Response(JSON.stringify(result), {
309
+ status: 200,
310
+ headers: { "Content-Type": "application/json" },
311
+ });
312
+ }
313
+ catch (error) {
314
+ if (error instanceof McpServerError) {
315
+ return new Response(JSON.stringify({ error: error.message }), {
316
+ status: error.statusCode,
317
+ headers: { "Content-Type": "application/json" },
318
+ });
319
+ }
320
+ return c.text(`Internal Server Error ${error}`, 500);
321
+ }
322
+ });
242
323
  if (extraRoutes) {
243
324
  extraRoutes(app);
244
325
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { PUBLIC_ROUTES, PUBLIC_ROUTE_PREFIXES, type PublicRoutes, type PublicRoutePrefixes, } from "./routes";
2
2
  export { McpServerError } from "./errors";
3
3
  export type { BaseProps, ServerInfo, AuthHooks, AuthMetricName, BearerAuthRouteGroup, AssetsFetcher, } from "./types";
4
- export { renderApprovalDialog, parseRedirectApproval, buildSamlRedirectUrl, validateAndSanitizeUrl, type ApprovalDialogOptions, type ParsedApprovalResult, } from "./oauth-utils";
4
+ export { renderApprovalDialog, parseRedirectApproval, buildSamlRedirectUrl, validateAndSanitizeUrl, isValidRedirectUri, MAX_CLIENT_REDIRECT_URIS, type ApprovalDialogOptions, type ParsedApprovalResult, } from "./oauth-utils";
5
5
  export { renderTokenCallback } from "./token-utils";
6
6
  export { createAuthApp, type CreateAuthAppOptions, type AuthAppEnv, } from "./handlers";
7
7
  export { withBearerHandler, type WithBearerHandlerOptions, type BearerMCPServer, } from "./bearer";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACN,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,UAAU,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,GACtB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACN,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,UAAU,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,GACtB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { PUBLIC_ROUTES, PUBLIC_ROUTE_PREFIXES, } from "./routes";
2
2
  export { McpServerError } from "./errors";
3
- export { renderApprovalDialog, parseRedirectApproval, buildSamlRedirectUrl, validateAndSanitizeUrl, } from "./oauth-utils";
3
+ export { renderApprovalDialog, parseRedirectApproval, buildSamlRedirectUrl, validateAndSanitizeUrl, isValidRedirectUri, MAX_CLIENT_REDIRECT_URIS, } from "./oauth-utils";
4
4
  export { renderTokenCallback } from "./token-utils";
5
5
  export { createAuthApp, } from "./handlers";
6
6
  export { withBearerHandler, } from "./bearer";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,qBAAqB,GAGrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS1C,OAAO,EACN,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,GAGtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACN,aAAa,GAGb,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,iBAAiB,GAGjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,kBAAkB,GAGlB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,qBAAqB,GAGrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS1C,OAAO,EACN,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,GAGxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACN,aAAa,GAGb,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,iBAAiB,GAGjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,kBAAkB,GAGlB,MAAM,kBAAkB,CAAC"}
@@ -1,5 +1,10 @@
1
1
  import type { AuthRequest, ClientInfo } from "@cloudflare/workers-oauth-provider";
2
2
  import type { ServerInfo } from "./types";
3
+ /**
4
+ * Maximum number of redirect URIs a single client may accumulate. Bounds the
5
+ * growth of an individual client's `redirectUris` list.
6
+ */
7
+ export declare const MAX_CLIENT_REDIRECT_URIS = 10;
3
8
  export interface ApprovalDialogOptions {
4
9
  client: ClientInfo | null;
5
10
  serverInfo: ServerInfo;
@@ -13,6 +18,23 @@ export interface ParsedApprovalResult {
13
18
  instanceUrl: string;
14
19
  }
15
20
  export declare function validateAndSanitizeUrl(url: string): string;
21
+ /**
22
+ * Validates a redirect URI submitted for in-place client update.
23
+ *
24
+ * Accepts absolute `https://` URLs, and `http://` only for loopback hosts
25
+ * (`localhost`, `127.0.0.1`) per the RFC 8252 native-app allowance. Any other
26
+ * `http://` host (plaintext, interceptable in transit) and any non-http(s)
27
+ * scheme are rejected.
28
+ */
29
+ export declare function isValidRedirectUri(uri: string): boolean;
30
+ /**
31
+ * Constant-time verification of a candidate client secret against the stored
32
+ * SHA-256 hex hash. Always performs the comparison — falling back to a fixed
33
+ * dummy hash when no stored hash is available — so an unknown client and a
34
+ * wrong secret take the same time and are indistinguishable to a caller.
35
+ */
36
+ declare function verifyClientSecret(candidate: string, storedHash: string | null | undefined): Promise<boolean>;
37
+ export { verifyClientSecret };
16
38
  export declare function parseRedirectApproval(request: Request): Promise<ParsedApprovalResult>;
17
39
  export declare function buildSamlRedirectUrl(instanceUrl: string, oauthReqInfo: unknown, callbackOrigin: string): string;
18
40
  //# sourceMappingURL=oauth-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-utils.d.ts","sourceRoot":"","sources":["../src/oauth-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,UAAU,EACV,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAW1C,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,qBAAqB,GAC5B,QAAQ,CA+MV;AAYD,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE;QAAE,YAAY,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAuB1D;AAED,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,oBAAoB,CAAC,CAqC/B;AAWD,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,MAAM,GACpB,MAAM,CAUR"}
1
+ {"version":3,"file":"oauth-utils.d.ts","sourceRoot":"","sources":["../src/oauth-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,WAAW,EACX,UAAU,EACV,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAmB3C,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,qBAAqB,GAC5B,QAAQ,CAqNV;AAYD,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE;QAAE,YAAY,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAuB1D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAiBvD;AAeD;;;;;GAKG;AACH,iBAAe,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,oBAAoB,CAAC,CAqC/B;AAWD,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,MAAM,GACpB,MAAM,CAWR"}
@@ -1,9 +1,21 @@
1
+ import { timingSafeEqual } from "node:crypto";
1
2
  import { encodeBase64Url } from "hono/utils/encode";
3
+ /**
4
+ * Maximum number of redirect URIs a single client may accumulate. Bounds the
5
+ * growth of an individual client's `redirectUris` list.
6
+ */
7
+ export const MAX_CLIENT_REDIRECT_URIS = 10;
8
+ /**
9
+ * A fixed, non-matching SHA-256 hex hash used as a stand-in when a client
10
+ * lookup misses. Comparing against this (instead of short-circuiting) keeps the
11
+ * "unknown client" and "wrong secret" paths constant-time and indistinguishable.
12
+ */
13
+ const DUMMY_CLIENT_SECRET_HASH = "0".repeat(64);
2
14
  const DEFAULT_MCP_LOGO_URL = "https://raw.githubusercontent.com/thoughtspot/mcp-server/refs/heads/main/static/MCP%20Server%20Logo.svg";
3
15
  const DEFAULT_INSTANCE_LOGO_URL = "https://avatars.githubusercontent.com/u/8906680?s=200&v=4";
4
16
  const DEFAULT_TERMS_URL = "https://www.thoughtspot.com/legal/thoughtspot-for-apps";
5
17
  const DEFAULT_PRIVACY_URL = "https://www.thoughtspot.com/privacy-statement";
6
- const DEFAULT_SIGNUP_URL = "https://www.thoughtspot.com/trial";
18
+ const DEFAULT_SIGNUP_URL = "https://www.thoughtspot.com/trial?utm_source=mcp&utm_medium=consent&tsref=MCP";
7
19
  export function renderApprovalDialog(request, options) {
8
20
  const { serverInfo, state, client } = options;
9
21
  const encodedState = btoa(JSON.stringify(state));
@@ -82,7 +94,7 @@ export function renderApprovalDialog(request, options) {
82
94
  line-height: 1.3;
83
95
  }
84
96
  .approval-form { width: 100%; display: flex; flex-direction: column; align-items: stretch; }
85
- .form-group { margin-bottom: 28px; }
97
+ .form-group { margin-bottom: 32px; }
86
98
  .form-group label { display: block; margin-bottom: 8px; font-weight: 400; font-size: 0.94rem; color: #111827; transition: color 0.2s; }
87
99
  .form-group label.label-blue { color: #2563eb; }
88
100
  .form-group label.label-red { color: #dc2626; }
@@ -90,9 +102,9 @@ export function renderApprovalDialog(request, options) {
90
102
  .form-group input.input-blue { border-color: #2563eb; }
91
103
  .form-group input.input-red { border-color: #dc2626; }
92
104
  .approval-subtitle { font-weight: 600; font-size: 0.94rem; margin-bottom: 8px; margin-top: 0; }
93
- .approval-permissions { margin: 0 0 32px 0; padding: 0 0 0 18px; list-style: disc; color: #111827; font-size: 0.94rem; }
105
+ .approval-permissions { margin: 0 0 24px 0; padding: 0 0 0 18px; list-style: disc; color: #111827; font-size: 0.94rem; }
94
106
  .approval-permissions li { margin-bottom: 8px; line-height: 1.6; }
95
- .approval-actions { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
107
+ .approval-actions { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 8px; }
96
108
  .terms-checkbox { margin-bottom: 24px; display: flex; align-items: flex-start; gap: 8px; }
97
109
  .terms-checkbox input[type="checkbox"] { margin-top: 3px; }
98
110
  .terms-checkbox label { font-size: 0.94rem; line-height: 1.4; color: #111827; }
@@ -104,9 +116,12 @@ export function renderApprovalDialog(request, options) {
104
116
  .button-allow { background: #2563eb; color: #fff; border: none; }
105
117
  .button-allow:hover { background: #1a56db; }
106
118
  .button-allow:disabled { background: #93c5fd; cursor: not-allowed; }
107
- .approval-footer { text-align: center; font-size: 0.88rem; color: #111827; margin-top: 8px; }
108
- .approval-footer a { color: #2563eb; text-decoration: none; margin-left: 0.25em; font-weight: 500; }
109
- .approval-footer a:hover { text-decoration: underline; }
119
+ .button-allow.is-loading { display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
120
+ .button-spinner { width: 12px; height: 12px; border: 2px solid rgba(255,255,255,0.5); border-top-color: #fff; border-radius: 50%; animation: button-spin 0.7s linear infinite; }
121
+ @keyframes button-spin { to { transform: rotate(360deg); } }
122
+ .free-trial-footer { text-align: center; font-size: 0.88rem; color: #111827; margin-top: 8px; }
123
+ .free-trial-footer a { color: #2563eb; text-decoration: none; margin-left: 0.25em; font-weight: 500; }
124
+ .free-trial-footer a:hover { text-decoration: underline; }
110
125
  @media (max-width: 600px) {
111
126
  .approval-card { padding: 18px 4vw 18px 4vw; max-width: 98vw; }
112
127
  .approval-logos { gap: 18px; margin-bottom: 18px; }
@@ -136,6 +151,10 @@ export function renderApprovalDialog(request, options) {
136
151
  <label for="instanceUrl" id="instanceUrlLabel">ThoughtSpot instance URL</label>
137
152
  <input type="text" id="instanceUrl" name="instanceUrl" value="${tsInstanceUrl}" placeholder="https://your-instance.thoughtspot.cloud" autocomplete="off">
138
153
  <input type="hidden" name="state" value="${encodedState}">
154
+ <div class="free-trial-footer">
155
+ Don't have a ThoughtSpot instance yet?
156
+ <a href="${signupUrl}" target="_blank" rel="noopener noreferrer">Start a free 14-day trial</a>
157
+ </div>
139
158
  </div>
140
159
  <div class="approval-subtitle">${serverName} will be able to:</div>
141
160
  <ul class="approval-permissions">
@@ -155,10 +174,6 @@ export function renderApprovalDialog(request, options) {
155
174
  <button type="submit" class="button button-allow" id="allowButton" disabled>Allow</button>
156
175
  </div>
157
176
  </form>
158
- <div class="approval-footer">
159
- Don't have an account?
160
- <a href="${signupUrl}" target="_blank" rel="noopener noreferrer">Sign up</a>
161
- </div>
162
177
  </div>
163
178
  <script>
164
179
  const input = document.getElementById('instanceUrl');
@@ -198,6 +213,9 @@ export function renderApprovalDialog(request, options) {
198
213
  e.preventDefault(); termsCheckbox.focus();
199
214
  } else {
200
215
  setBlue();
216
+ allowButton.disabled = true;
217
+ allowButton.classList.add('is-loading');
218
+ allowButton.innerHTML = '<span class="button-spinner"></span>Authorizing...';
201
219
  }
202
220
  });
203
221
  </script>
@@ -237,6 +255,66 @@ export function validateAndSanitizeUrl(url) {
237
255
  throw new Error("Invalid URL format");
238
256
  }
239
257
  }
258
+ /**
259
+ * Validates a redirect URI submitted for in-place client update.
260
+ *
261
+ * Accepts absolute `https://` URLs, and `http://` only for loopback hosts
262
+ * (`localhost`, `127.0.0.1`) per the RFC 8252 native-app allowance. Any other
263
+ * `http://` host (plaintext, interceptable in transit) and any non-http(s)
264
+ * scheme are rejected.
265
+ */
266
+ export function isValidRedirectUri(uri) {
267
+ let parsed;
268
+ try {
269
+ parsed = new URL(uri);
270
+ }
271
+ catch {
272
+ return false;
273
+ }
274
+ if (parsed.protocol === "https:") {
275
+ return true;
276
+ }
277
+ if (parsed.protocol === "http:") {
278
+ return parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1";
279
+ }
280
+ return false;
281
+ }
282
+ /**
283
+ * SHA-256 hex digest of a secret. Matches how `@cloudflare/workers-oauth-provider`
284
+ * hashes `ClientInfo.clientSecret` internally (SHA-256, lowercase hex), so a hash
285
+ * computed here can be compared against the stored client secret hash.
286
+ */
287
+ async function hashClientSecret(secret) {
288
+ const data = new TextEncoder().encode(secret);
289
+ const hashBuffer = await crypto.subtle.digest("SHA-256", data);
290
+ return Array.from(new Uint8Array(hashBuffer))
291
+ .map((b) => b.toString(16).padStart(2, "0"))
292
+ .join("");
293
+ }
294
+ /**
295
+ * Constant-time verification of a candidate client secret against the stored
296
+ * SHA-256 hex hash. Always performs the comparison — falling back to a fixed
297
+ * dummy hash when no stored hash is available — so an unknown client and a
298
+ * wrong secret take the same time and are indistinguishable to a caller.
299
+ */
300
+ async function verifyClientSecret(candidate, storedHash) {
301
+ const expected = typeof storedHash === "string" && storedHash.length > 0
302
+ ? storedHash
303
+ : DUMMY_CLIENT_SECRET_HASH;
304
+ const candidateHash = await hashClientSecret(candidate);
305
+ const candidateBytes = new TextEncoder().encode(candidateHash);
306
+ const expectedBytes = new TextEncoder().encode(expected);
307
+ // timingSafeEqual throws on mismatched buffer lengths, so guard first. This
308
+ // doesn't reintroduce a timing side-channel: both sides are SHA-256 hex
309
+ // digests (always 64 bytes), never the raw secret, so length here can only
310
+ // diverge from "always equal" if a stored hash is malformed — it carries no
311
+ // signal about the candidate secret's length or content.
312
+ if (candidateBytes.length !== expectedBytes.length) {
313
+ return false;
314
+ }
315
+ return timingSafeEqual(candidateBytes, expectedBytes);
316
+ }
317
+ export { verifyClientSecret };
240
318
  export async function parseRedirectApproval(request) {
241
319
  if (request.method !== "POST") {
242
320
  throw new Error("Invalid request method. Expected POST.");
@@ -279,7 +357,8 @@ export function buildSamlRedirectUrl(instanceUrl, oauthReqInfo, callbackOrigin)
279
357
  const redirectUrl = new URL("callosum/v1/saml/login", instanceUrl);
280
358
  const targetURLPath = new URL("/callback", callbackOrigin);
281
359
  targetURLPath.searchParams.append("instanceUrl", instanceUrl);
282
- const encodedState = encodeBase64Url(new TextEncoder().encode(JSON.stringify(oauthReqInfo)).buffer);
360
+ const encodedState = encodeBase64Url(new TextEncoder().encode(JSON.stringify(oauthReqInfo))
361
+ .buffer);
283
362
  targetURLPath.searchParams.append("oauthReqInfo", encodedState);
284
363
  redirectUrl.searchParams.append("targetURLPath", targetURLPath.href);
285
364
  return redirectUrl.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-utils.js","sourceRoot":"","sources":["../src/oauth-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,oBAAoB,GACzB,yGAAyG,CAAC;AAC3G,MAAM,yBAAyB,GAC9B,2DAA2D,CAAC;AAC7D,MAAM,iBAAiB,GACtB,wDAAwD,CAAC;AAC1D,MAAM,mBAAmB,GAAG,+CAA+C,CAAC;AAC5E,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAQ/D,MAAM,UAAU,oBAAoB,CACnC,OAAgB,EAChB,OAA8B;IAE9B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,oBAAoB,CAAC;IACjE,MAAM,eAAe,GACpB,UAAU,CAAC,eAAe,IAAI,yBAAyB,CAAC;IACzD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,iBAAiB,CAAC;IAC1D,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAChE,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC7D,MAAM,aAAa,GAClB,UAAU,CAAC,aAAa;QACxB,GAAG,UAAU,+CAA+C,CAAC;IAE9D,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;IACpC,MAAM,kBAAkB,GAAG,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7E,MAAM,WAAW,GAAG;;;;;;mBAMF,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA6FH,UAAU;;;;;;;;;;;0BAWV,eAAe;;0CAEC,aAAa;gEACS,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ;;;gFAGb,aAAa;2DAClC,YAAY;;+CAExB,UAAU;;;;;;;;;6BAS5B,QAAQ;iCACJ,UAAU;;;;;;;;;;yBAUlB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8C7B,CAAC;IACL,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE;QAChC,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE;KACvD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAI,YAAoB;IAC3C,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;IACjC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACzC,CAAC;AACF,CAAC;AAOD,MAAM,UAAU,sBAAsB,CAAC,GAAW;IACjD,IAAI,CAAC;QACJ,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,eAAe,GACpB,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;YACpE,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,WAAW,UAAU,EAAE,CAAC;QAE5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;QAE3C,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACd,0CAA0C,SAAS,CAAC,QAAQ,EAAE,CAC9D,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACvC,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,OAAgB;IAEhB,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,KAA+D,CAAC;IACpE,IAAI,QAA4B,CAAC;IACjC,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAW,CAAC;QAE7D,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,GAAG,WAAW,CAAiC,YAAY,CAAC,CAAC;QAClE,QAAQ,GAAG,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC;QAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACzC,CAAC;QAED,WAAW,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,KAAK,CACd,kCAAkC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC9E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IACnC,OAAO,MAAM;SACX,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CACnC,WAAmB,EACnB,YAAqB,EACrB,cAAsB;IAEtB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC3D,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,eAAe,CACnC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,MAAqB,CAC5E,CAAC;IACF,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAChE,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"oauth-utils.js","sourceRoot":"","sources":["../src/oauth-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,58 +1,47 @@
1
1
  {
2
- "name": "@thoughtspot/mcp-auth",
3
- "version": "2.0.1",
4
- "description": "Reusable ThoughtSpot OAuth + bearer auth layer for Cloudflare Workers MCP servers",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
12
- },
13
- "./assets/*": "./assets/*"
14
- },
15
- "files": [
16
- "dist",
17
- "assets",
18
- "README.md",
19
- "LICENSE"
20
- ],
21
- "scripts": {
22
- "build": "tsc",
23
- "clean": "rm -rf dist",
24
- "test": "vitest run",
25
- "format": "biome format --write",
26
- "lint": "biome lint",
27
- "prepare": "npm run build"
28
- },
29
- "keywords": [
30
- "thoughtspot",
31
- "mcp",
32
- "oauth",
33
- "cloudflare",
34
- "workers"
35
- ],
36
- "author": "ThoughtSpot",
37
- "license": "ThoughtSpot End user license agreement",
38
- "repository": {
39
- "type": "git",
40
- "url": "git+https://github.com/thoughtspot/ts-mcp-auth.git"
41
- },
42
- "publishConfig": {
43
- "access": "public"
44
- },
45
- "peerDependencies": {
46
- "@cloudflare/workers-oauth-provider": "^0.0.5",
47
- "hono": "^4.12.21"
48
- },
49
- "devDependencies": {
50
- "@biomejs/biome": "^1.9.4",
51
- "@cloudflare/workers-oauth-provider": "^0.0.5",
52
- "@cloudflare/workers-types": "^4.20250612.0",
53
- "@types/node": "^22.15.3",
54
- "hono": "^4.12.21",
55
- "typescript": "^5.8.3",
56
- "vitest": "^3.1.2"
57
- }
2
+ "name": "@thoughtspot/mcp-auth",
3
+ "version": "2.1.1",
4
+ "description": "Reusable ThoughtSpot OAuth + bearer auth layer for Cloudflare Workers MCP servers",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./assets/*": "./assets/*"
14
+ },
15
+ "files": ["dist", "assets", "README.md", "LICENSE"],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "clean": "rm -rf dist",
19
+ "test": "vitest run",
20
+ "format": "biome format --write",
21
+ "lint": "biome lint",
22
+ "prepare": "npm run build"
23
+ },
24
+ "keywords": ["thoughtspot", "mcp", "oauth", "cloudflare", "workers"],
25
+ "author": "ThoughtSpot",
26
+ "license": "ThoughtSpot End user license agreement",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/thoughtspot/ts-mcp-auth.git"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "peerDependencies": {
35
+ "@cloudflare/workers-oauth-provider": "^0.0.5",
36
+ "hono": "^4.12.21"
37
+ },
38
+ "devDependencies": {
39
+ "@biomejs/biome": "^1.9.4",
40
+ "@cloudflare/workers-oauth-provider": "^0.0.5",
41
+ "@cloudflare/workers-types": "^4.20250612.0",
42
+ "@types/node": "^22.15.3",
43
+ "hono": "^4.12.21",
44
+ "typescript": "^5.8.3",
45
+ "vitest": "^3.1.2"
46
+ }
58
47
  }