@boopkit/cap-oauth-server 0.1.4 → 0.3.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.
Files changed (91) hide show
  1. package/capability.json +14 -2
  2. package/dist/authorization-code-service.d.ts +40 -11
  3. package/dist/authorization-code-service.d.ts.map +1 -1
  4. package/dist/authorization-code-service.js +93 -41
  5. package/dist/authorization-code-service.js.map +1 -1
  6. package/dist/bearer.d.ts +27 -4
  7. package/dist/bearer.d.ts.map +1 -1
  8. package/dist/bearer.js +4 -4
  9. package/dist/bearer.js.map +1 -1
  10. package/dist/client-prune.d.ts +102 -0
  11. package/dist/client-prune.d.ts.map +1 -0
  12. package/dist/client-prune.js +51 -0
  13. package/dist/client-prune.js.map +1 -0
  14. package/dist/client-registry-service.d.ts +85 -8
  15. package/dist/client-registry-service.d.ts.map +1 -1
  16. package/dist/client-registry-service.js +267 -64
  17. package/dist/client-registry-service.js.map +1 -1
  18. package/dist/config.d.ts +6 -0
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +1 -0
  21. package/dist/config.js.map +1 -1
  22. package/dist/connections-controller.js +1 -1
  23. package/dist/connections-controller.js.map +1 -1
  24. package/dist/consent-controller.d.ts +80 -6
  25. package/dist/consent-controller.d.ts.map +1 -1
  26. package/dist/consent-controller.js +134 -18
  27. package/dist/consent-controller.js.map +1 -1
  28. package/dist/discovery-controller.d.ts +2 -1
  29. package/dist/discovery-controller.d.ts.map +1 -1
  30. package/dist/discovery-controller.js +14 -4
  31. package/dist/discovery-controller.js.map +1 -1
  32. package/dist/discovery.d.ts +26 -0
  33. package/dist/discovery.d.ts.map +1 -1
  34. package/dist/discovery.js +55 -1
  35. package/dist/discovery.js.map +1 -1
  36. package/dist/errors.d.ts +38 -0
  37. package/dist/errors.d.ts.map +1 -1
  38. package/dist/errors.js +59 -0
  39. package/dist/errors.js.map +1 -1
  40. package/dist/grant-service.d.ts +11 -4
  41. package/dist/grant-service.d.ts.map +1 -1
  42. package/dist/grant-service.js +6 -3
  43. package/dist/grant-service.js.map +1 -1
  44. package/dist/index.d.ts +10 -5
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +18 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/metadata-document.d.ts +22 -0
  49. package/dist/metadata-document.d.ts.map +1 -1
  50. package/dist/metadata-document.js +44 -2
  51. package/dist/metadata-document.js.map +1 -1
  52. package/dist/outbound-target.d.ts +48 -0
  53. package/dist/outbound-target.d.ts.map +1 -0
  54. package/dist/outbound-target.js +211 -0
  55. package/dist/outbound-target.js.map +1 -0
  56. package/dist/rate-limit.d.ts +53 -11
  57. package/dist/rate-limit.d.ts.map +1 -1
  58. package/dist/rate-limit.js +27 -4
  59. package/dist/rate-limit.js.map +1 -1
  60. package/dist/redirect-uri.d.ts +17 -9
  61. package/dist/redirect-uri.d.ts.map +1 -1
  62. package/dist/redirect-uri.js +26 -10
  63. package/dist/redirect-uri.js.map +1 -1
  64. package/dist/registration-controller.d.ts +10 -0
  65. package/dist/registration-controller.d.ts.map +1 -1
  66. package/dist/registration-controller.js +10 -0
  67. package/dist/registration-controller.js.map +1 -1
  68. package/dist/request-client.d.ts +7 -1
  69. package/dist/request-client.d.ts.map +1 -1
  70. package/dist/request-client.js +31 -13
  71. package/dist/request-client.js.map +1 -1
  72. package/dist/revocation-controller.d.ts +5 -0
  73. package/dist/revocation-controller.d.ts.map +1 -1
  74. package/dist/revocation-controller.js +5 -1
  75. package/dist/revocation-controller.js.map +1 -1
  76. package/dist/same-site.d.ts +54 -0
  77. package/dist/same-site.d.ts.map +1 -0
  78. package/dist/same-site.js +124 -0
  79. package/dist/same-site.js.map +1 -0
  80. package/dist/token-controller.d.ts +26 -0
  81. package/dist/token-controller.d.ts.map +1 -1
  82. package/dist/token-controller.js +44 -19
  83. package/dist/token-controller.js.map +1 -1
  84. package/dist/types.d.ts +4 -0
  85. package/dist/types.d.ts.map +1 -1
  86. package/package.json +2 -2
  87. package/scaffold/reference/oauth-server.ref.md +359 -11
  88. package/scaffold/src/middleware/oauth-server.ts +33 -17
  89. package/scaffold/src/scripts/prune-oauth-clients.ts +86 -0
  90. package/scaffold/src/services/oauth-server.service.ts +24 -0
  91. package/scaffold/views/oauth-consent-error.hbs +10 -3
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_MAX_REGISTERED_CLIENTS = exports.DEFAULT_ABANDONED_CLIENT_TTL_MS = exports.DEFAULT_METADATA_MAX_AGE_MS = exports.DEFAULT_RESPONSE_TYPES = exports.DEFAULT_GRANT_TYPES = void 0;
3
+ exports.STRANGER_CREATED_MODES = exports.DEFAULT_MAX_REGISTERED_CLIENTS = exports.DEFAULT_ABANDONED_CLIENT_TTL_MS = exports.DEFAULT_METADATA_MAX_AGE_MS = exports.DEFAULT_RESPONSE_TYPES = exports.DEFAULT_GRANT_TYPES = void 0;
4
4
  exports.validateRedirectUris = validateRedirectUris;
5
5
  exports.createClientRegistryService = createClientRegistryService;
6
6
  const errors_js_1 = require("./errors.js");
@@ -33,6 +33,11 @@ const redirect_uri_js_1 = require("./redirect-uri.js");
33
33
  * `redirect_uris` required and validated at registration, a ceiling on total
34
34
  * rows, per-IP rate limiting at the transport, and a prune for rows that never
35
35
  * went anywhere.
36
+ *
37
+ * All four cover `metadata_document` as well as `dynamic`, because both modes
38
+ * are written on behalf of somebody nobody authenticated. Scoping them to
39
+ * `dynamic` is the shape of boop-jd4x: the CIMD path wrote an uncounted,
40
+ * unlimited, uncollected row per distinct URL a caller named.
36
41
  */
37
42
  /** Sensible RFC 7591 defaults for a client that asked for nothing specific. */
38
43
  exports.DEFAULT_GRANT_TYPES = ['authorization_code', 'refresh_token'];
@@ -43,9 +48,39 @@ exports.DEFAULT_METADATA_MAX_AGE_MS = 24 * 60 * 60 * 1000;
43
48
  exports.DEFAULT_ABANDONED_CLIENT_TTL_MS = 30 * 24 * 60 * 60 * 1000;
44
49
  /** How many rows open registration may create before it starts refusing. */
45
50
  exports.DEFAULT_MAX_REGISTERED_CLIENTS = 1000;
51
+ /**
52
+ * The modes the ceiling and the prune are about: every row a stranger caused.
53
+ *
54
+ * `dynamic` is the obvious one — `POST /oauth/register` is an unauthenticated
55
+ * write. `metadata_document` is the one that was missed, and it is the same
56
+ * thing wearing a different hat: an unauthenticated `GET /oauth/authorize`
57
+ * naming an https `client_id` nobody vetted writes a permanent row too. Scoping
58
+ * the abuse controls to `dynamic` left that path with no ceiling, no limiter and
59
+ * no collector, so a loop over `?client_id=https://attacker.example/c?n=<N>`
60
+ * filled the table one row at a time (boop-jd4x).
61
+ *
62
+ * `static` is deliberately absent. An operator wrote those rows, and letting
63
+ * them consume the ceiling would let an operator's own seed script lock open
64
+ * registration shut.
65
+ */
66
+ exports.STRANGER_CREATED_MODES = ['dynamic', 'metadata_document'];
46
67
  // ---------------------------------------------------------------------------
47
68
  // Validation
48
69
  // ---------------------------------------------------------------------------
70
+ /**
71
+ * The one metadata refusal that is a statement by the client rather than a
72
+ * fault in its document: it declares an authentication method this server does
73
+ * not perform, and does not offer `none`.
74
+ *
75
+ * It is told apart because a *refreshed* document that says this must not be
76
+ * answered from the cached row, which every other refresh failure is. To every
77
+ * caller outside this file it is an ordinary `invalid_client_metadata`.
78
+ */
79
+ class AuthMethodNotOffered extends errors_js_1.ClientRegistryError {
80
+ constructor(message) {
81
+ super('invalid_client_metadata', message);
82
+ }
83
+ }
49
84
  const invalidMetadata = (message) => new errors_js_1.ClientRegistryError('invalid_client_metadata', message);
50
85
  const invalidRedirect = (message) => new errors_js_1.ClientRegistryError('invalid_redirect_uri', message);
51
86
  /**
@@ -95,6 +130,39 @@ function optionalString(value, field, maxLength = 2048) {
95
130
  throw invalidMetadata(`${field} is longer than ${maxLength}`);
96
131
  return value;
97
132
  }
133
+ /**
134
+ * A display URI a stranger supplies, which this server will later put in a page.
135
+ *
136
+ * `https` or absent. The consent screen renders `logo_uri` in an `<img src>` and
137
+ * `client_uri`, `policy_uri` and `tos_uri` in an `<a href>`, and template
138
+ * escaping leaves a scheme alone — `javascript:` reaches the href intact. The
139
+ * page sanitises on the way out as well (`safeHttpsUri`), which is what protects
140
+ * rows written before this rule existed; refusing here is what tells the
141
+ * registrant, who would otherwise watch their privacy-policy link silently fail
142
+ * to appear.
143
+ *
144
+ * Not applied by `registerStaticClient`. That input comes from the people who
145
+ * run the site, through their own seed script rather than over the network, and
146
+ * it is the seam the consent screen's render-time defence is tested through.
147
+ */
148
+ function optionalHttpsUri(value, field) {
149
+ const text = optionalString(value, field);
150
+ if (text === null)
151
+ return null;
152
+ let url;
153
+ try {
154
+ url = new URL(text);
155
+ }
156
+ catch {
157
+ throw invalidMetadata(`${field} must be an https URL`);
158
+ }
159
+ if (url.protocol !== 'https:') {
160
+ throw invalidMetadata(`${field} must be an https URL; got ${url.protocol}`);
161
+ }
162
+ // The raw spelling, not the parsed URL's serialization — this is a value we
163
+ // display back to the person who registered it, not one we match against.
164
+ return text;
165
+ }
98
166
  function optionalStringArray(value, field) {
99
167
  if (value === undefined || value === null)
100
168
  return [];
@@ -106,30 +174,77 @@ function optionalStringArray(value, field) {
106
174
  return entry;
107
175
  });
108
176
  }
109
- /** RFC 6749 §3.3: `scope` on the wire is one space-delimited string. */
110
- function parseScope(value, fallback) {
177
+ /**
178
+ * RFC 6749 §3.3: `scope` on the wire is one space-delimited string.
179
+ *
180
+ * Narrowed to what the server advertises, the way `grant_types` is: RFC 7591
181
+ * §3.2.1 lets us register a client with a scope list that differs from the one
182
+ * it asked for, and the registration response carries what was stored, so the
183
+ * client is told. A list that narrows to nothing is refused rather than allowed
184
+ * to fall back — falling back would hand a registrant that asked only for
185
+ * scopes we do not advertise the full default set, which is the opposite of
186
+ * narrowing.
187
+ */
188
+ function parseScope(value, fallback, supported) {
189
+ const bound = (scopes) => supported.length > 0 ? scopes.filter((scope) => supported.includes(scope)) : scopes;
111
190
  if (value === undefined || value === null || value === '')
112
- return [...fallback];
191
+ return bound([...fallback]);
113
192
  if (typeof value !== 'string')
114
193
  throw invalidMetadata('scope must be a space-delimited string');
115
194
  const scopes = value.split(/\s+/).filter(Boolean);
116
- return scopes.length > 0 ? scopes : [...fallback];
195
+ if (scopes.length === 0)
196
+ return bound([...fallback]);
197
+ const narrowed = bound(scopes);
198
+ if (narrowed.length === 0) {
199
+ throw invalidMetadata(`scope names nothing this server advertises: ${scopes.join(' ')}`);
200
+ }
201
+ return narrowed;
117
202
  }
118
203
  /**
119
- * Only public clients, v1.
204
+ * The token endpoint's authentication method: store `none`, or refuse.
205
+ *
206
+ * This server authenticates no client at the token endpoint. A `client_id` that
207
+ * names an enabled row is the whole check (`request-client.ts`), and PKCE is
208
+ * what protects the code exchange. So `none` is the only value a row ever
209
+ * carries, and the question here is what to do with a client that declares
210
+ * something else.
211
+ *
212
+ * Refusing every such client reads as strictness and is a lockout, the same
213
+ * mistake `normaliseGrantTypes` records for `grant_types`. ChatGPT's metadata
214
+ * document declares `private_key_jwt` and, beside it, lists
215
+ * `token_endpoint_auth_methods_supported: ["none", "private_key_jwt"]`: it
216
+ * prefers a signed assertion and says it can do without one. The old rule threw
217
+ * that document out over the one field, and nobody could connect ChatGPT at all.
218
+ *
219
+ * So a client that declares another method **and lists `none` among the methods
220
+ * it supports** is registered as a public client. RFC 7591 §3.2.1 lets the
221
+ * server replace a requested metadata value, and the client is told what it
222
+ * got: the discovery document advertises only `none`, and a registration
223
+ * response echoes `token_endpoint_auth_method` back.
224
+ *
225
+ * Everything else is still refused, and the reason is not squeamishness. A
226
+ * client that declares `private_key_jwt` or `client_secret_basic` and does not
227
+ * say it supports `none` expects the token endpoint to check its credential.
228
+ * This one would not, so anyone who learned its `client_id` could present it;
229
+ * registering that client would be quietly giving it less than it asked for.
120
230
  *
121
- * Every client in the Claude ecosystem is public — a desktop app or a hosted
122
- * connector that cannot keep a secret — and accepting a value we do not
123
- * implement would advertise an authentication method the token endpoint will
124
- * later refuse.
231
+ * Both callers follow the one rule: a metadata document and `POST
232
+ * /oauth/register`, as with `normaliseGrantTypes`.
125
233
  */
126
- function parseAuthMethod(value) {
127
- if (value === undefined || value === null || value === '')
234
+ function parseAuthMethod(declared, supportedByClient) {
235
+ if (declared === undefined || declared === null || declared === '' || declared === 'none') {
128
236
  return 'none';
129
- if (value !== 'none') {
130
- throw invalidMetadata(`token_endpoint_auth_method must be "none"; this server issues only public clients`);
131
237
  }
132
- return 'none';
238
+ if (typeof declared !== 'string') {
239
+ throw invalidMetadata('token_endpoint_auth_method must be a string');
240
+ }
241
+ const supported = optionalStringArray(supportedByClient, 'token_endpoint_auth_methods_supported');
242
+ if (supported.includes('none'))
243
+ return 'none';
244
+ throw new AuthMethodNotOffered(`token_endpoint_auth_method is ${declared}, and this server does not authenticate clients ` +
245
+ `at the token endpoint; it registers such a client only when its ` +
246
+ `token_endpoint_auth_methods_supported lists "none"` +
247
+ (supported.length > 0 ? `, and this one lists ${supported.join(', ')}` : ''));
133
248
  }
134
249
  // ---------------------------------------------------------------------------
135
250
  // Row mapping
@@ -169,22 +284,33 @@ function toClient(row) {
169
284
  function createClientRegistryService(model, options = {}) {
170
285
  const now = options.now ?? (() => new Date());
171
286
  const defaultScopes = options.defaultScopes ?? [];
287
+ const scopesSupported = options.scopesSupported ?? defaultScopes;
172
288
  const maxRegisteredClients = options.maxRegisteredClients ?? exports.DEFAULT_MAX_REGISTERED_CLIENTS;
173
289
  const metadataMaxAgeMs = options.metadataMaxAgeMs ?? exports.DEFAULT_METADATA_MAX_AGE_MS;
174
290
  const fetchLimits = {
175
291
  timeoutMs: options.metadataTimeoutMs ?? metadata_document_js_1.DEFAULT_METADATA_TIMEOUT_MS,
176
292
  maxBytes: options.metadataMaxBytes ?? metadata_document_js_1.DEFAULT_METADATA_MAX_BYTES,
177
293
  maxRedirects: options.metadataMaxRedirects ?? metadata_document_js_1.DEFAULT_METADATA_MAX_REDIRECTS,
294
+ resolveHost: options.metadataResolveHost,
178
295
  };
296
+ /**
297
+ * The ceiling, asked by both paths that write a stranger's row.
298
+ *
299
+ * One function rather than a check at each call site, because the defect this
300
+ * closes was precisely two call sites where only one carried the check.
301
+ */
302
+ async function assertCapacity() {
303
+ if (!Number.isFinite(maxRegisteredClients))
304
+ return;
305
+ const registered = await model.count({ where: { mode: { in: [...exports.STRANGER_CREATED_MODES] } } });
306
+ if (registered >= maxRegisteredClients) {
307
+ throw new errors_js_1.ClientRegistryError('boop_registration_capacity', 'the client registry has reached its configured ceiling');
308
+ }
309
+ }
179
310
  const service = {
180
311
  async registerDynamic(input) {
181
312
  const redirectUris = validateRedirectUris(input.redirect_uris);
182
- if (Number.isFinite(maxRegisteredClients)) {
183
- const registered = await model.count({ where: { mode: 'dynamic' } });
184
- if (registered >= maxRegisteredClients) {
185
- throw new errors_js_1.ClientRegistryError('boop_registration_capacity', 'the client registry has reached its configured ceiling');
186
- }
187
- }
313
+ await assertCapacity();
188
314
  const publicId = (0, public_id_js_1.generateClientPublicId)();
189
315
  const row = await model.create({
190
316
  data: {
@@ -198,18 +324,18 @@ function createClientRegistryService(model, options = {}) {
198
324
  status: 'enabled',
199
325
  name: optionalString(input.client_name, 'client_name', 255),
200
326
  description: null,
201
- logoUri: optionalString(input.logo_uri, 'logo_uri'),
202
- clientUri: optionalString(input.client_uri, 'client_uri'),
327
+ logoUri: optionalHttpsUri(input.logo_uri, 'logo_uri'),
328
+ clientUri: optionalHttpsUri(input.client_uri, 'client_uri'),
203
329
  contacts: optionalStringArray(input.contacts, 'contacts'),
204
330
  softwareId: optionalString(input.software_id, 'software_id', 255),
205
331
  softwareVersion: optionalString(input.software_version, 'software_version', 255),
206
- policyUri: optionalString(input.policy_uri, 'policy_uri'),
207
- tosUri: optionalString(input.tos_uri, 'tos_uri'),
332
+ policyUri: optionalHttpsUri(input.policy_uri, 'policy_uri'),
333
+ tosUri: optionalHttpsUri(input.tos_uri, 'tos_uri'),
208
334
  redirectUris,
209
335
  grantTypes: normaliseGrantTypes(input.grant_types),
210
336
  responseTypes: normaliseResponseTypes(input.response_types),
211
- scopes: parseScope(input.scope, defaultScopes),
212
- tokenEndpointAuthMethod: parseAuthMethod(input.token_endpoint_auth_method),
337
+ scopes: parseScope(input.scope, defaultScopes, scopesSupported),
338
+ tokenEndpointAuthMethod: parseAuthMethod(input.token_endpoint_auth_method, input.token_endpoint_auth_methods_supported),
213
339
  },
214
340
  });
215
341
  return toClient(row);
@@ -227,21 +353,52 @@ function createClientRegistryService(model, options = {}) {
227
353
  // because there is nothing to fall back to and consent would otherwise
228
354
  // show a nameless client.
229
355
  if (!existing) {
356
+ // The ceiling, **before** the fetch rather than before the write. A
357
+ // caller past it must not still be able to make this server issue one
358
+ // outbound request per attempt — that half of the abuse is a
359
+ // request-amplification probe whether or not a row comes of it.
360
+ //
361
+ // Only this branch is gated. A client that already has a row is served
362
+ // past the ceiling, including its lazy re-fetch: bounding new rows must
363
+ // not break consent for every connection at once the moment the table
364
+ // fills up.
365
+ await assertCapacity();
230
366
  const doc = await (0, metadata_document_js_1.fetchMetadataDocument)(clientId, fetchImpl, fetchLimits);
231
- const fields = readMetadataDocument(doc, defaultScopes);
232
- const row = await model.create({
233
- data: {
234
- publicId: (0, public_id_js_1.generateClientPublicId)(),
235
- clientId,
236
- mode: 'metadata_document',
237
- status: 'enabled',
238
- metadataUri: clientId,
239
- metadataFetchedAt: now(),
240
- description: null,
241
- ...fields,
242
- },
243
- });
244
- return toClient(row);
367
+ const fields = readMetadataDocument(doc, defaultScopes, scopesSupported);
368
+ try {
369
+ const row = await model.create({
370
+ data: {
371
+ publicId: (0, public_id_js_1.generateClientPublicId)(),
372
+ clientId,
373
+ mode: 'metadata_document',
374
+ status: 'enabled',
375
+ metadataUri: clientId,
376
+ metadataFetchedAt: now(),
377
+ description: null,
378
+ ...fields,
379
+ },
380
+ });
381
+ return toClient(row);
382
+ }
383
+ catch (err) {
384
+ // The widest race in the registry: the fetch above is a network
385
+ // round-trip sitting between the lookup and this write, so two
386
+ // authorization requests naming the same new `client_id` overlap for
387
+ // as long as the client's server takes to answer. The loser used to
388
+ // surface a `P2002` as a 500 on `/oauth/authorize`.
389
+ //
390
+ // Both callers fetched the same document, so the winner's row is the
391
+ // answer to this caller's question too. Re-read rather than write:
392
+ // the row that won might be `static` or `dynamic` — somebody racing
393
+ // an operator's seed of the same URL — and overwriting one of those
394
+ // is exactly what the mode check below this refuses to do.
395
+ if (!(0, errors_js_1.isUniqueConstraintViolation)(err, 'clientId'))
396
+ throw err;
397
+ const won = await model.findUnique({ where: { clientId } });
398
+ if (!won)
399
+ throw err;
400
+ return toClient(won);
401
+ }
245
402
  }
246
403
  const cached = toClient(existing);
247
404
  if (cached.mode !== 'metadata_document') {
@@ -258,9 +415,18 @@ function createClientRegistryService(model, options = {}) {
258
415
  // re-fetch fails**. A client whose document is briefly unreachable should
259
416
  // not break consent for users who already trust it, and the cached copy
260
417
  // is metadata we validated ourselves the last time it was reachable.
418
+ //
419
+ // One failure is not a fallback. A document that was fetched and now
420
+ // declares an authentication method without offering `none` is the client
421
+ // withdrawing what the cached row was registered on: it expects the token
422
+ // endpoint to check its credential, and this one would not. Serving the
423
+ // cached public registration would give it the weaker protection a client
424
+ // arriving for the first time with the same document is refused over. So
425
+ // the caller gets that same refusal, the row is left as it was, and the
426
+ // next request asks the document again.
261
427
  try {
262
428
  const doc = await (0, metadata_document_js_1.fetchMetadataDocument)(cached.metadataUri ?? clientId, fetchImpl, fetchLimits);
263
- const fields = readMetadataDocument(doc, defaultScopes);
429
+ const fields = readMetadataDocument(doc, defaultScopes, scopesSupported);
264
430
  const row = await model.update({
265
431
  where: { clientId },
266
432
  data: { ...fields, metadataFetchedAt: now() },
@@ -268,6 +434,8 @@ function createClientRegistryService(model, options = {}) {
268
434
  return toClient(row);
269
435
  }
270
436
  catch (err) {
437
+ if (err instanceof AuthMethodNotOffered)
438
+ throw err;
271
439
  options.onMetadataRefreshFailed?.(clientId, err);
272
440
  return cached;
273
441
  }
@@ -305,10 +473,23 @@ function createClientRegistryService(model, options = {}) {
305
473
  const row = await model.update({ where: { clientId: input.clientId }, data });
306
474
  return toClient(row);
307
475
  }
308
- const row = await model.create({
309
- data: { publicId: (0, public_id_js_1.generateClientPublicId)(), clientId: input.clientId, ...data },
310
- });
311
- return toClient(row);
476
+ try {
477
+ const row = await model.create({
478
+ data: { publicId: (0, public_id_js_1.generateClientPublicId)(), clientId: input.clientId, ...data },
479
+ });
480
+ return toClient(row);
481
+ }
482
+ catch (err) {
483
+ // "Safe to run twice" has to mean twice *at once*: two app instances
484
+ // booting together run the same seed, and the lookup above is a whole
485
+ // `await` away from this write. The loser converges on the winner's row
486
+ // rather than crashing a boot — and `data` carries no `publicId`, so
487
+ // the winner's prefix is what survives, which is the point.
488
+ if (!(0, errors_js_1.isUniqueConstraintViolation)(err, 'clientId'))
489
+ throw err;
490
+ const row = await model.update({ where: { clientId: input.clientId }, data });
491
+ return toClient(row);
492
+ }
312
493
  },
313
494
  async findByClientId(clientId) {
314
495
  if (typeof clientId !== 'string' || clientId === '')
@@ -343,17 +524,17 @@ function createClientRegistryService(model, options = {}) {
343
524
  data.name = optionalString(input.client_name, 'client_name', 255);
344
525
  }
345
526
  if (input.client_uri !== undefined)
346
- data.clientUri = optionalString(input.client_uri, 'client_uri');
527
+ data.clientUri = optionalHttpsUri(input.client_uri, 'client_uri');
347
528
  if (input.logo_uri !== undefined)
348
- data.logoUri = optionalString(input.logo_uri, 'logo_uri');
529
+ data.logoUri = optionalHttpsUri(input.logo_uri, 'logo_uri');
349
530
  if (input.contacts !== undefined)
350
531
  data.contacts = optionalStringArray(input.contacts, 'contacts');
351
532
  if (input.policy_uri !== undefined)
352
- data.policyUri = optionalString(input.policy_uri, 'policy_uri');
533
+ data.policyUri = optionalHttpsUri(input.policy_uri, 'policy_uri');
353
534
  if (input.tos_uri !== undefined)
354
- data.tosUri = optionalString(input.tos_uri, 'tos_uri');
535
+ data.tosUri = optionalHttpsUri(input.tos_uri, 'tos_uri');
355
536
  if (input.scope !== undefined)
356
- data.scopes = parseScope(input.scope, defaultScopes);
537
+ data.scopes = parseScope(input.scope, defaultScopes, scopesSupported);
357
538
  const row = await model.update({ where: { clientId }, data });
358
539
  return toClient(row);
359
540
  },
@@ -363,13 +544,13 @@ function createClientRegistryService(model, options = {}) {
363
544
  await model.delete({ where: { clientId } });
364
545
  },
365
546
  async countRegistered() {
366
- return model.count({ where: { mode: 'dynamic' } });
547
+ return model.count({ where: { mode: { in: [...exports.STRANGER_CREATED_MODES] } } });
367
548
  },
368
549
  async pruneAbandonedClients(pruneOptions = {}) {
369
550
  const before = pruneOptions.before ?? new Date(now().getTime() - exports.DEFAULT_ABANDONED_CLIENT_TTL_MS);
370
551
  const isInUse = pruneOptions.isInUse ?? (async () => false);
371
552
  const rows = await model.findMany({
372
- where: { mode: 'dynamic', createdAt: { lt: before } },
553
+ where: { mode: { in: [...exports.STRANGER_CREATED_MODES] }, createdAt: { lt: before } },
373
554
  });
374
555
  const removed = [];
375
556
  for (const row of rows) {
@@ -394,10 +575,32 @@ async function requireClient(model, clientId) {
394
575
  * A `static` row belongs to the operator who wrote it.
395
576
  *
396
577
  * This is a check in the service rather than a convention anyone remembers,
397
- * because the thing it prevents — an unauthenticated registration surface
398
- * rewriting the redirect URIs of a client the operator vouched for — is exactly
399
- * the kind of hole a convention leaves open the first time someone adds a
400
- * route.
578
+ * because the thing it prevents — something rewriting the redirect URIs of a
579
+ * client the operator vouched for — is exactly the kind of hole a convention
580
+ * leaves open the first time someone adds a route.
581
+ *
582
+ * ## The route it is waiting for does not exist, and the guard is still the
583
+ * right place for this
584
+ *
585
+ * RFC 7592 client management (`PUT`/`DELETE /oauth/register/:client_id`) is not
586
+ * implemented here, and that is a decision rather than a slice that has not
587
+ * landed yet. Authenticating those endpoints takes a
588
+ * `registration_access_token`: a third credential kind, with its own hashing,
589
+ * rotation and revocation story, bought so that a client can amend a
590
+ * registration it can re-create with one unauthenticated `POST`. Nothing in the
591
+ * Claude ecosystem checklist asks for it. So the registration response omits
592
+ * the token, the discovery document advertises no management surface, and the
593
+ * endpoints are absent rather than unauthenticated — which is what makes them
594
+ * safe, since an unauthenticated mount would let any caller rewrite any dynamic
595
+ * client's redirect URIs.
596
+ *
597
+ * What is left in front of this guard, then, is the host application's own
598
+ * management code — `updateRegistration` and `deleteRegistration` called from
599
+ * an admin screen or a support script. That code has a caller and can be
600
+ * trusted to be an operator; what it must still not be able to do is quietly
601
+ * unpick a seeded client by going through the same door a dynamic one uses.
602
+ * And if the decision above is ever reversed, this guard is already standing
603
+ * where the new route would land.
401
604
  */
402
605
  function refuseStatic(client, verb) {
403
606
  if (client.mode === 'static') {
@@ -479,19 +682,19 @@ function intersectSupported(requested, supported) {
479
682
  * validation the registration endpoint applies runs here too — in particular
480
683
  * `redirect_uris`, which is the field an attacker would want to control.
481
684
  */
482
- function readMetadataDocument(doc, defaultScopes) {
685
+ function readMetadataDocument(doc, defaultScopes, scopesSupported) {
483
686
  return {
484
687
  name: optionalString(doc.client_name, 'client_name', 255),
485
- logoUri: optionalString(doc.logo_uri, 'logo_uri'),
486
- clientUri: optionalString(doc.client_uri, 'client_uri'),
688
+ logoUri: optionalHttpsUri(doc.logo_uri, 'logo_uri'),
689
+ clientUri: optionalHttpsUri(doc.client_uri, 'client_uri'),
487
690
  contacts: optionalStringArray(doc.contacts, 'contacts'),
488
- policyUri: optionalString(doc.policy_uri, 'policy_uri'),
489
- tosUri: optionalString(doc.tos_uri, 'tos_uri'),
691
+ policyUri: optionalHttpsUri(doc.policy_uri, 'policy_uri'),
692
+ tosUri: optionalHttpsUri(doc.tos_uri, 'tos_uri'),
490
693
  redirectUris: validateRedirectUris(doc.redirect_uris),
491
694
  grantTypes: normaliseGrantTypes(doc.grant_types),
492
695
  responseTypes: normaliseResponseTypes(doc.response_types),
493
- scopes: parseScope(doc.scope, defaultScopes),
494
- tokenEndpointAuthMethod: parseAuthMethod(doc.token_endpoint_auth_method),
696
+ scopes: parseScope(doc.scope, defaultScopes, scopesSupported),
697
+ tokenEndpointAuthMethod: parseAuthMethod(doc.token_endpoint_auth_method, doc.token_endpoint_auth_methods_supported),
495
698
  };
496
699
  }
497
700
  //# sourceMappingURL=client-registry-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-registry-service.js","sourceRoot":"","sources":["../src/client-registry-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-registry-service.js","sourceRoot":"","sources":["../src/client-registry-service.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -44,6 +44,12 @@ export interface ServerConfig extends DiscoveryConfig {
44
44
  maxRegisteredClients: number;
45
45
  registrationRateLimit: number;
46
46
  registrationRateWindowMs: number;
47
+ /**
48
+ * First-sight metadata-document resolutions per address per window. The same
49
+ * window as registration, because they are two faces of one unauthenticated
50
+ * write and an operator should not have to reason about two clocks.
51
+ */
52
+ metadataResolutionRateLimit: number;
47
53
  }
48
54
  export interface ReadConfigOptions {
49
55
  /** Where a clamp or a fallback is announced. Defaults to `console.warn`. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMhF;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,iCAAiC,UAAY,CAAC;AAE3D;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;CAAmC,CAAC;AACxE,eAAO,MAAM,wBAAwB;;;CAA2C,CAAC;AAEjF,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE9C,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC9B,MAAM,CAcR;AAuCD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,iBAAsB,GAAG,YAAY,CAgFxF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOhF;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,iCAAiC,UAAY,CAAC;AAE3D;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;CAAmC,CAAC;AACxE,eAAO,MAAM,wBAAwB;;;CAA2C,CAAC;AAEjF,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC;;;;OAIG;IACH,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE9C,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC9B,MAAM,CAcR;AAuCD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,iBAAsB,GAAG,YAAY,CAsFxF"}
package/dist/config.js CHANGED
@@ -152,6 +152,7 @@ function readServerConfig(env, options = {}) {
152
152
  maxRegisteredClients: positiveInteger(env.OAUTH_MAX_REGISTERED_CLIENTS, client_registry_service_js_1.DEFAULT_MAX_REGISTERED_CLIENTS, 'OAUTH_MAX_REGISTERED_CLIENTS', warn),
153
153
  registrationRateLimit: positiveInteger(env.OAUTH_REGISTRATION_RATE_LIMIT, rate_limit_js_1.DEFAULT_REGISTRATION_RATE_LIMIT, 'OAUTH_REGISTRATION_RATE_LIMIT', warn),
154
154
  registrationRateWindowMs: rate_limit_js_1.DEFAULT_REGISTRATION_RATE_WINDOW_MS,
155
+ metadataResolutionRateLimit: positiveInteger(env.OAUTH_METADATA_RESOLUTION_RATE_LIMIT, rate_limit_js_1.DEFAULT_METADATA_RESOLUTION_RATE_LIMIT, 'OAUTH_METADATA_RESOLUTION_RATE_LIMIT', warn),
155
156
  };
156
157
  }
157
158
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ function createConnectionsHandlers(deps) {
58
58
  const view = {
59
59
  grantId: grant.grant_id,
60
60
  name: client?.name ?? grant.client_id,
61
- logoUri: client ? (0, consent_controller_js_1.safeLogoUri)(client.logoUri) : undefined,
61
+ logoUri: client ? (0, consent_controller_js_1.safeHttpsUri)(client.logoUri) : undefined,
62
62
  monogram: client
63
63
  ? (0, consent_controller_js_1.monogramFor)(client)
64
64
  : (([...grant.client_id].find((ch) => /[\p{L}\p{N}]/u.test(ch)) ?? '?').toUpperCase()),