@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 +1 @@
1
- {"version":3,"file":"connections-controller.js","sourceRoot":"","sources":["../src/connections-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connections-controller.js","sourceRoot":"","sources":["../src/connections-controller.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { Router, type Request, type RequestHandler, type Response } from 'expres
2
2
  import type { BaseUserInfo, User } from '@boopkit/cap-users';
3
3
  import type { AuthorizationCodeService } from './authorization-code-service.js';
4
4
  import type { ClientRegistryService } from './client-registry-service.js';
5
+ import { type RateLimiterOptions } from './rate-limit.js';
5
6
  import './express.js';
6
7
  import type { OauthClient } from './types.js';
7
8
  /** Which of the three faces the page is wearing. */
@@ -138,6 +139,71 @@ export interface ConsentHandlerDeps {
138
139
  layout?: string;
139
140
  /** Where the form posts. Must be the mounted path of the POST handler. */
140
141
  actionPath?: string;
142
+ /**
143
+ * Per-address limit on **first-sight** Client ID Metadata Document
144
+ * resolution, or `false` to mount none.
145
+ *
146
+ * `GET /oauth/authorize` is where a CIMD client registers itself: an https
147
+ * `client_id` with no row yet is fetched and written, unauthenticated, with
148
+ * nothing else between a caller and the table. Every other abuse control the
149
+ * capability documents used to sit on `POST /oauth/register`, which this path
150
+ * does not touch — so a loop over distinct URLs wrote a row apiece and made an
151
+ * outbound request apiece, at whatever rate the attacker liked (boop-jd4x).
152
+ *
153
+ * A request is charged only when it is about to resolve a client that has no
154
+ * row. A visitor arriving for a client this server already knows never
155
+ * consumes any of it, which is why this can be mounted on the consent screen
156
+ * at all: limiting `GET /oauth/authorize` wholesale would ration the page
157
+ * itself, and the page is the product.
158
+ *
159
+ * `false` is for an application that limits this somewhere else. It is not a
160
+ * convenience.
161
+ */
162
+ metadataRateLimit?: RateLimiterOptions | false;
163
+ /**
164
+ * Origins this application serves its own consent page from, beyond the one
165
+ * the request's `Host` already names.
166
+ *
167
+ * `POST /oauth/authorize` refuses a submission that came from another site —
168
+ * see `same-site.ts` for the attack, which is the whole reason the route has
169
+ * a check at all. The host the request arrived on is worked out from the
170
+ * request, so an ordinary deployment names nothing here. This list is for the
171
+ * one arrangement that cannot be worked out: a proxy that rewrites `Host`
172
+ * without setting `X-Forwarded-Host`, or a page deliberately served from a
173
+ * sibling origin. Every entry widens what counts as this application, so it
174
+ * is the application's decision and not a default.
175
+ */
176
+ allowedOrigins?: string[];
177
+ /**
178
+ * Force `Secure` on the session cookie the inline login sets.
179
+ *
180
+ * Default: on when `NODE_ENV === 'production'`, which is the same rule
181
+ * cap-oauth-client's sign-in flow uses. Off in development, or a boop
182
+ * application served over http at `localhost` could never sign anybody in.
183
+ */
184
+ secureCookie?: boolean;
185
+ /**
186
+ * `SameSite` on that cookie. Default `lax`, and that default is load-bearing.
187
+ *
188
+ * `strict` is what an authorization endpoint's own POST would want, and it is
189
+ * the wrong answer for this cookie: the consent screen is *reached* by a
190
+ * cross-site top-level navigation — an OAuth client sends the browser here —
191
+ * and `strict` withholds the cookie on exactly that hop, so every
192
+ * authorization would meet a login form for somebody who is already signed
193
+ * in. `lax` refuses the cross-site POST, which is the request a forgery
194
+ * needs, and permits the arrival, which is the request the flow needs.
195
+ */
196
+ cookieSameSite?: 'lax' | 'strict' | 'none';
197
+ /**
198
+ * Where this page's operator-facing lines go. Defaults to `console.warn`.
199
+ *
200
+ * Two things are said through it, and neither is ever said to the visitor:
201
+ * the boot warning naming scopes the application has not described, and the
202
+ * reason a Client ID Metadata Document could not be resolved. The second is
203
+ * why this sits on the handlers and not only on the router factory — see
204
+ * `resolveTarget`.
205
+ */
206
+ warn?(message: string): void;
141
207
  }
142
208
  /**
143
209
  * The application's scope vocabulary, as published on `app.locals`.
@@ -186,14 +252,24 @@ export declare function warnUndescribedScopes(scopesSupported: readonly string[]
186
252
  /** What the page says about where this client's claims came from. */
187
253
  export declare function provenanceFor(client: OauthClient): string;
188
254
  /**
189
- * An icon URL we are willing to put in an `<img src>`, or nothing.
255
+ * A stranger's URL we are willing to put in the page — an `<img src>` or an
256
+ * `<a href>` — or nothing.
190
257
  *
191
258
  * `https` only. `http` would break the page's padlock, and `data:` and
192
259
  * `javascript:` are a stranger's payload rendered inside our own origin's page.
193
- * The box's size is fixed in CSS regardless, so this decides only whether there
194
- * is an image at all — never how much room it gets.
260
+ * Template escaping is no help here: Handlebars escapes `<`, `>`, `&`, `"` and
261
+ * `'` and leaves `:` alone, so a scheme survives it intact and has to be judged
262
+ * rather than escaped.
263
+ *
264
+ * All four of the client's display URIs go through this — `logo_uri`,
265
+ * `client_uri`, `policy_uri` and `tos_uri`. Registration refuses a non-https
266
+ * value on the three paths a stranger writes through, which is where a
267
+ * registrant gets told; this runs anyway, because a row written before that
268
+ * rule existed is still rendered on the page. For the logo specifically, the
269
+ * box's size is fixed in CSS regardless, so this decides only whether there is
270
+ * an image at all — never how much room it gets.
195
271
  */
196
- export declare function safeLogoUri(value: string | null | undefined): string | undefined;
272
+ export declare function safeHttpsUri(value: string | null | undefined): string | undefined;
197
273
  /** The letter in the icon box when there is no usable image. */
198
274
  export declare function monogramFor(client: OauthClient): string;
199
275
  export interface ConsentHandlers {
@@ -202,8 +278,6 @@ export interface ConsentHandlers {
202
278
  }
203
279
  export declare function createConsentHandlers(deps: ConsentHandlerDeps): ConsentHandlers;
204
280
  export interface ConsentRouterOptions extends ConsentHandlerDeps {
205
- /** Where the undescribed-scope warning goes. Defaults to `console.warn`. */
206
- warn?(message: string): void;
207
281
  bodyLimit?: string;
208
282
  }
209
283
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"consent-controller.d.ts","sourceRoot":"","sources":["../src/consent-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consent-controller.d.ts","sourceRoot":"","sources":["../src/consent-controller.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,16 @@ exports.toScopeViews = toScopeViews;
5
5
  exports.scopeDescriptionsFrom = scopeDescriptionsFrom;
6
6
  exports.warnUndescribedScopes = warnUndescribedScopes;
7
7
  exports.provenanceFor = provenanceFor;
8
- exports.safeLogoUri = safeLogoUri;
8
+ exports.safeHttpsUri = safeHttpsUri;
9
9
  exports.monogramFor = monogramFor;
10
10
  exports.createConsentHandlers = createConsentHandlers;
11
11
  exports.createConsentRouter = createConsentRouter;
12
12
  const express_1 = require("express");
13
+ const errors_js_1 = require("./errors.js");
13
14
  const pkce_js_1 = require("./pkce.js");
15
+ const rate_limit_js_1 = require("./rate-limit.js");
14
16
  const redirect_uri_js_1 = require("./redirect-uri.js");
17
+ const same_site_js_1 = require("./same-site.js");
15
18
  require("./express.js");
16
19
  /**
17
20
  * `GET` and `POST /oauth/authorize` — the consent screen.
@@ -65,6 +68,16 @@ require("./express.js");
65
68
  * somebody to approve a string they cannot evaluate is asking a question they
66
69
  * are not prepared to answer.
67
70
  *
71
+ * ## The form defends itself
72
+ *
73
+ * `POST /oauth/authorize` is a state-changing form post whose only credential
74
+ * is a cookie the browser attaches unprompted, so it is a cross-site request
75
+ * forgery target — and neither PKCE nor `state` covers it, because on that
76
+ * attack the attacker is the client. The handler refuses any submission whose
77
+ * `Origin` or `Sec-Fetch-Site` says it came from elsewhere, and the session
78
+ * cookie this page writes is labelled `SameSite` and `Secure` rather than
79
+ * leaning on a browser default. `same-site.ts` has the reasoning.
80
+ *
68
81
  * ## And the coverage statement
69
82
  *
70
83
  * The settled data model keys the grant on the *user*, so a client reaches
@@ -160,14 +173,24 @@ function provenanceFor(client) {
160
173
  return 'This application registered itself. Nothing about it has been verified.';
161
174
  }
162
175
  /**
163
- * An icon URL we are willing to put in an `<img src>`, or nothing.
176
+ * A stranger's URL we are willing to put in the page — an `<img src>` or an
177
+ * `<a href>` — or nothing.
164
178
  *
165
179
  * `https` only. `http` would break the page's padlock, and `data:` and
166
180
  * `javascript:` are a stranger's payload rendered inside our own origin's page.
167
- * The box's size is fixed in CSS regardless, so this decides only whether there
168
- * is an image at all — never how much room it gets.
181
+ * Template escaping is no help here: Handlebars escapes `<`, `>`, `&`, `"` and
182
+ * `'` and leaves `:` alone, so a scheme survives it intact and has to be judged
183
+ * rather than escaped.
184
+ *
185
+ * All four of the client's display URIs go through this — `logo_uri`,
186
+ * `client_uri`, `policy_uri` and `tos_uri`. Registration refuses a non-https
187
+ * value on the three paths a stranger writes through, which is where a
188
+ * registrant gets told; this runs anyway, because a row written before that
189
+ * rule existed is still rendered on the page. For the logo specifically, the
190
+ * box's size is fixed in CSS regardless, so this decides only whether there is
191
+ * an image at all — never how much room it gets.
169
192
  */
170
- function safeLogoUri(value) {
193
+ function safeHttpsUri(value) {
171
194
  if (typeof value !== 'string' || value.trim() === '')
172
195
  return undefined;
173
196
  try {
@@ -195,10 +218,11 @@ function monogramFor(client) {
195
218
  }
196
219
  /** Errors that must be shown on our own page, because we cannot redirect yet. */
197
220
  class ConsentRequestError extends Error {
198
- constructor(message, status = 400) {
221
+ constructor(message, status = 400, retryAfterSeconds) {
199
222
  super(message);
200
223
  this.name = 'ConsentRequestError';
201
224
  this.status = status;
225
+ this.retryAfterSeconds = retryAfterSeconds;
202
226
  }
203
227
  }
204
228
  /** Errors that RFC 6749 §4.1.2.1 says go back to the client as a redirect. */
@@ -218,6 +242,18 @@ function first(value) {
218
242
  // `redirect_uri` is not a request we should try to interpret.
219
243
  return undefined;
220
244
  }
245
+ /**
246
+ * One line, whatever the caller put in the `client_id`.
247
+ *
248
+ * The `client_id` is a query parameter and reaches the log twice — once from
249
+ * here and once inside the registry's own message — so a caller who sends
250
+ * `%0A` writes a second line into the operator's log and can shape it. A log
251
+ * an attacker can write sentences in is worth less than no log, and this
252
+ * refusal line exists precisely to be read (boop-nvbd).
253
+ */
254
+ function oneLine(text) {
255
+ return text.replace(/[\r\n\u2028\u2029]+/g, ' ');
256
+ }
221
257
  function parseScopeList(raw) {
222
258
  if (!raw)
223
259
  return [];
@@ -226,9 +262,21 @@ function parseScopeList(raw) {
226
262
  function createConsentHandlers(deps) {
227
263
  const { clientRegistry, authorizationCodeService, signIn, register, scopesSupported } = deps;
228
264
  const isSignedIn = deps.isSignedIn ?? exports.defaultIsSignedIn;
265
+ const metadataLimiter = deps.metadataRateLimit === false
266
+ ? null
267
+ : (0, rate_limit_js_1.createFixedWindowRateLimiter)({
268
+ limit: rate_limit_js_1.DEFAULT_METADATA_RESOLUTION_RATE_LIMIT,
269
+ ...deps.metadataRateLimit,
270
+ });
229
271
  const viewName = deps.viewName ?? 'oauth-consent';
230
272
  const layout = deps.layout ?? 'main';
231
273
  const actionPath = deps.actionPath ?? '/oauth/authorize';
274
+ const allowedOrigins = deps.allowedOrigins ?? [];
275
+ const cookieSameSite = deps.cookieSameSite ?? 'lax';
276
+ // Read per request rather than captured, so a test or a boot sequence that
277
+ // sets NODE_ENV after this router is built still gets the right answer.
278
+ const secureCookie = () => deps.secureCookie ?? process.env.NODE_ENV === 'production';
279
+ const warn = deps.warn ?? ((message) => console.warn(`[cap-oauth-server] ${message}`));
232
280
  /**
233
281
  * Resolve the client and the redirect URI *before* anything else is judged.
234
282
  *
@@ -238,7 +286,7 @@ function createConsentHandlers(deps) {
238
286
  * failure goes back to the client as a redirect, because a client left with
239
287
  * no answer hangs until its own timeout while the user believes they are done.
240
288
  */
241
- async function resolveTarget(source) {
289
+ async function resolveTarget(req, source) {
242
290
  const clientId = first(source.client_id);
243
291
  if (!clientId)
244
292
  throw new ConsentRequestError('client_id is required');
@@ -247,15 +295,48 @@ function createConsentHandlers(deps) {
247
295
  // A Client ID Metadata Document client is allowed to arrive unseen: the
248
296
  // document at its own URL is its registration. A fetch failure here is a
249
297
  // refusal rather than a 500, because the URL was supplied by the caller.
298
+ //
299
+ // This branch is the whole unauthenticated write, so the limit is charged
300
+ // here rather than on the route: only a request that reaches this line is
301
+ // about to create a row and make an outbound request.
302
+ if (metadataLimiter) {
303
+ const verdict = metadataLimiter.check((0, rate_limit_js_1.rateLimitAddress)(req));
304
+ if (!verdict.allowed) {
305
+ throw new ConsentRequestError('too many unrecognised client_id lookups from this address; please try again later', 429, verdict.retryAfterSeconds);
306
+ }
307
+ }
250
308
  try {
251
309
  client = await clientRegistry.resolveMetadataDocument(clientId);
252
310
  }
253
- catch {
254
- client = null;
311
+ catch (err) {
312
+ // A registry refusal is the caller's problem and is answered on our own
313
+ // page; anything else — a store that is not there, a bug in here — is
314
+ // ours, and saying "unknown client_id" about it sends an operator to
315
+ // read a request when the answer is in the database.
316
+ if (!(0, errors_js_1.isClientRegistryError)(err))
317
+ throw err;
318
+ // The reason, in the registry's own words, once. Five different
319
+ // problems used to reach the operator as one sentence naming a
320
+ // condition that was not true: the `client_id` had been fetched and
321
+ // validated moments earlier, and the only thing the log said about it
322
+ // was that it was unknown (boop-nvbd).
323
+ warn(oneLine(`consent refused: could not resolve the Client ID Metadata Document at ` +
324
+ `${clientId} — ${err.code}: ${err.message}`));
325
+ // The page gets one sentence, and a different one — the log and the
326
+ // page do not have to carry the same words. It is not an enumeration
327
+ // oracle either: this branch is reached only for an https `client_id`
328
+ // with no row, so the caller learns nothing about the registry that
329
+ // their own URL did not already tell them.
330
+ throw new ConsentRequestError('the metadata document for this client_id could not be used');
255
331
  }
256
332
  }
257
333
  if (!client)
258
334
  throw new ConsentRequestError('unknown client_id');
335
+ // Suspension is named rather than folded into `unknown client_id`, and 403
336
+ // rather than 400: the row is there and in order, and we are declining it.
337
+ // The view's own comment carries why that is not the enumeration oracle it
338
+ // resembles (boop-wwxg); the back channel says the same sentence for the
339
+ // same reason, in `resolveRequestClient`.
259
340
  if (client.status !== 'enabled')
260
341
  throw new ConsentRequestError('this client is suspended', 403);
261
342
  const redirectUri = first(source.redirect_uri);
@@ -294,11 +375,21 @@ function createConsentHandlers(deps) {
294
375
  if (disallowed.length > 0) {
295
376
  throw new RedirectableError('invalid_scope', `this client is not registered for: ${disallowed.join(' ')}`);
296
377
  }
378
+ // The fallback is the one path neither check above covers: both read the
379
+ // *requested* list, so on a request that omits `scope` both pass vacuously
380
+ // and the client's own registered list is what gets granted. That list was
381
+ // written by whoever registered the client, so it is bounded here too —
382
+ // otherwise the server issues a scope its discovery document does not
383
+ // advertise, and the user is asked to approve a word nothing describes.
384
+ const granted = scopes.length > 0 ? scopes : clientScopes.filter((scope) => scopesSupported.includes(scope));
385
+ if (clientScopes.length > 0 && granted.length === 0) {
386
+ throw new RedirectableError('invalid_scope', 'this client is not registered for any scope this server advertises');
387
+ }
297
388
  return {
298
389
  responseType,
299
390
  clientId: client.clientId,
300
391
  redirectUri: first(source.redirect_uri),
301
- scopes: scopes.length > 0 ? scopes : [...clientScopes],
392
+ scopes: granted,
302
393
  state: first(source.state),
303
394
  codeChallenge,
304
395
  codeChallengeMethod,
@@ -344,10 +435,10 @@ function createConsentHandlers(deps) {
344
435
  client: {
345
436
  name: client.name ?? client.clientId,
346
437
  description: client.description ?? undefined,
347
- clientUri: client.clientUri ?? undefined,
348
- policyUri: client.policyUri ?? undefined,
349
- tosUri: client.tosUri ?? undefined,
350
- logoUri: safeLogoUri(client.logoUri),
438
+ clientUri: safeHttpsUri(client.clientUri),
439
+ policyUri: safeHttpsUri(client.policyUri),
440
+ tosUri: safeHttpsUri(client.tosUri),
441
+ logoUri: safeHttpsUri(client.logoUri),
351
442
  monogram: monogramFor(client),
352
443
  provenance: provenanceFor(client),
353
444
  mode: client.mode,
@@ -364,6 +455,9 @@ function createConsentHandlers(deps) {
364
455
  function reportConsentError(res, err) {
365
456
  // Our own page, because there is nowhere safe to send the caller. Rendered
366
457
  // rather than JSON: whoever is looking at this is a person in a browser.
458
+ if (err.retryAfterSeconds !== undefined) {
459
+ res.setHeader('Retry-After', String(err.retryAfterSeconds));
460
+ }
367
461
  res.status(err.status).render('oauth-consent-error', {
368
462
  layout,
369
463
  errorMessage: err.message,
@@ -372,7 +466,7 @@ function createConsentHandlers(deps) {
372
466
  const showConsent = async (req, res, next) => {
373
467
  let target;
374
468
  try {
375
- target = await resolveTarget(req.query);
469
+ target = await resolveTarget(req, req.query);
376
470
  }
377
471
  catch (err) {
378
472
  if (err instanceof ConsentRequestError)
@@ -395,10 +489,24 @@ function createConsentHandlers(deps) {
395
489
  }
396
490
  };
397
491
  const submitConsent = async (req, res, next) => {
492
+ // Before anything is parsed, and before the client is even looked up: a
493
+ // submission that did not come from a page this server served is not a
494
+ // decision anybody made. Every action on this route changes state — approve
495
+ // mints a code, login mints a session and sets a cookie — so the check is
496
+ // on the route rather than on the approve branch.
497
+ //
498
+ // Refused on our own page and never as a redirect. There is no registered
499
+ // redirect URI yet, and once there is, redirecting to it would hand the
500
+ // attacker who registered it a signal that the victim's browser reached
501
+ // here. See `same-site.ts` for what is being defended against and why
502
+ // neither PKCE nor `state` covers it.
503
+ if (!(0, same_site_js_1.isSameSiteRequest)(req, allowedOrigins)) {
504
+ return reportConsentError(res, new ConsentRequestError('this form was submitted from another site, so it was not acted on', 403));
505
+ }
398
506
  const body = (req.body ?? {});
399
507
  let target;
400
508
  try {
401
- target = await resolveTarget(body);
509
+ target = await resolveTarget(req, body);
402
510
  }
403
511
  catch (err) {
404
512
  if (err instanceof ConsentRequestError)
@@ -460,7 +568,12 @@ function createConsentHandlers(deps) {
460
568
  : 'We could not create that account',
461
569
  });
462
570
  }
463
- res.cookie(SESSION_COOKIE, sessionToken, { httpOnly: true, maxAge: ONE_YEAR_MS });
571
+ res.cookie(SESSION_COOKIE, sessionToken, {
572
+ httpOnly: true,
573
+ sameSite: cookieSameSite,
574
+ secure: secureCookie(),
575
+ maxAge: ONE_YEAR_MS,
576
+ });
464
577
  req.user = user;
465
578
  // Signing in is not consenting. Re-render the card and require a
466
579
  // second, explicit Approve — see the header.
@@ -493,7 +606,10 @@ function createConsentHandlers(deps) {
493
606
  resource: request.resource ?? null,
494
607
  });
495
608
  // `state` is echoed exactly as it arrived and is never interpreted. It is
496
- // the client's CSRF token, not ours.
609
+ // the client's CSRF token, not ours — this form's own defence is the
610
+ // same-site check at the top of this handler and the `SameSite` attribute
611
+ // on the cookie, because on a forgery of *this* form the attacker is the
612
+ // client and chose the `state` themselves.
497
613
  return redirectTo(res, request.redirectUri, { code, state: request.state });
498
614
  }
499
615
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"consent-controller.js","sourceRoot":"","sources":["../src/consent-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consent-controller.js","sourceRoot":"","sources":["../src/consent-controller.ts"],"names":[],"mappings":";;;AAoUA,oCASC;AAUD,sDAQC;AAmBD,sDAgBC;AAGD,sCAeC;AAoBD,oCAQC;AAGD,kCAWC;AA0DD,sDAwaC;AAgCD,kDAyBC;AAz9BD,qCAA+F;AAK/F,2CAAoD;AACpD,uCAAwE;AACxE,mDAKyB;AACzB,uDAA0D;AAC1D,iDAAmD;AACnD,wBAAsB;AAGtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AAEH,+EAA+E;AAC/E,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,WAAW,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AA8F9C;;;;;;;;;GASG;AACI,MAAM,iBAAiB,GAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC7D,MAAM,IAAI,GAAI,GAAG,CAAC,MAAM,EAAE,IAA2C,EAAE,SAAS,CAAC;IACjF,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;AAChF,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B;AAoHW,QAAA,wBAAwB,GAAG,wBAAwB,CAAC;AAEjE;;;;;;;GAOG;AACH,SAAgB,YAAY,CAC1B,MAAyB,EACzB,YAA2C;IAE3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QAC/E,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CACnC,GAAY,EACZ,QAA4B;IAE5B,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,gCAAwB,CAAkC,CAAC;IAC/F,IAAI,CAAC,SAAS;QAAE,OAAO,QAAQ,CAAC;IAChC,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;AACvC,CAAC;AAUD;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CACnC,eAAkC,EAClC,YAA2C,EAC3C,OAAkC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC;IAE5F,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CACxC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAC1F,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CACF,qCAAqC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;YACzF,uFAAuF;YACvF,kBAAkB,gCAAwB,GAAG,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,qEAAqE;AACrE,SAAgB,aAAa,CAAC,MAAmB;IAC/C,MAAM,IAAI,GAAe,MAAM,CAAC,IAAI,CAAC;IACrC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,kEAAkE,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACjC,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;QACD,OAAO,iCAAiC,MAAM,GAAG,CAAC;IACpD,CAAC;IACD,OAAO,yEAAyE,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,YAAY,CAAC,KAAgC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,SAAgB,WAAW,CAAC,MAAmB;IAC7C,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,oDAAoD;IACpD,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QACzC,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAOD,iFAAiF;AACjF,MAAM,mBAAoB,SAAQ,KAAK;IAIrC,YAAY,OAAe,EAAE,MAAM,GAAG,GAAG,EAAE,iBAA0B;QACnE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;CACF;AAED,8EAA8E;AAC9E,MAAM,iBAAkB,SAAQ,KAAK;IAEnC,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,SAAS,KAAK,CAAC,KAAc;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,CAAC;IACD,mEAAmE;IACnE,8DAA8D;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,cAAc,CAAC,GAAuB;IAC7C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAwB;IAC5D,MAAM,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAC7F,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,yBAAiB,CAAC;IACxD,MAAM,eAAe,GACnB,IAAI,CAAC,iBAAiB,KAAK,KAAK;QAC9B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAA,4CAA4B,EAAC;YAC3B,KAAK,EAAE,sDAAsC;YAC7C,GAAG,IAAI,CAAC,iBAAiB;SAC1B,CAAC,CAAC;IACT,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC;IACzD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;IACpD,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,YAAY,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC,CAAC;IAE/F;;;;;;;;OAQG;IACH,KAAK,UAAU,aAAa,CAC1B,GAAY,EACZ,MAA+B;QAE/B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QAEtE,IAAI,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,wEAAwE;YACxE,yEAAyE;YACzE,yEAAyE;YACzE,EAAE;YACF,0EAA0E;YAC1E,0EAA0E;YAC1E,sDAAsD;YACtD,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,IAAA,gCAAgB,EAAC,GAAG,CAAC,CAAC,CAAC;gBAC7D,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrB,MAAM,IAAI,mBAAmB,CAC3B,mFAAmF,EACnF,GAAG,EACH,OAAO,CAAC,iBAAiB,CAC1B,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,cAAc,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,wEAAwE;gBACxE,sEAAsE;gBACtE,qEAAqE;gBACrE,qDAAqD;gBACrD,IAAI,CAAC,IAAA,iCAAqB,EAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAC;gBAC3C,gEAAgE;gBAChE,+DAA+D;gBAC/D,oEAAoE;gBACpE,sEAAsE;gBACtE,uCAAuC;gBACvC,IAAI,CACF,OAAO,CACL,wEAAwE;oBACtE,GAAG,QAAQ,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAC9C,CACF,CAAC;gBACF,oEAAoE;gBACpE,qEAAqE;gBACrE,sEAAsE;gBACtE,oEAAoE;gBACpE,2CAA2C;gBAC3C,MAAM,IAAI,mBAAmB,CAAC,4DAA4D,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QAChE,2EAA2E;QAC3E,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,0CAA0C;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;QAEhG,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAA,uCAAqB,EAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;YAC7D,6DAA6D;YAC7D,2CAA2C;YAC3C,MAAM,IAAI,mBAAmB,CAAC,gDAAgD,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,6EAA6E;IAC7E,SAAS,YAAY,CAAC,MAA+B,EAAE,MAAmB;QACxE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,iBAAiB,CACzB,2BAA2B,EAC3B,sEAAsE,CACvE,CAAC;QACJ,CAAC;QAED,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,+BAAqB,CAAC;QACzF,IAAI,mBAAmB,KAAK,+BAAqB,EAAE,CAAC;YAClD,MAAM,IAAI,iBAAiB,CACzB,iBAAiB,EACjB,iCAAiC,+BAAqB,EAAE,CACzD,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,IAAA,8BAAoB,EAAC,aAAa,CAAC,EAAE,CAAC;YACzC,yEAAyE;YACzE,oDAAoD;YACpD,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,yCAAyC,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,uBAAuB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,MAAM,UAAU,GACd,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,iBAAiB,CACzB,eAAe,EACf,sCAAsC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC7D,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,2EAA2E;QAC3E,2EAA2E;QAC3E,wEAAwE;QACxE,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,OAAO,GACX,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,iBAAiB,CACzB,eAAe,EACf,oEAAoE,CACrE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY;YACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAW;YACjD,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1B,aAAa;YACb,mBAAmB;YACnB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;SACjC,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,SAAS,UAAU,CACjB,GAAa,EACb,WAAmB,EACnB,MAA0C;QAE1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,UAAU,CAAC,MAAgB,EAAE,GAAY;QAChD,OAAO,YAAY,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,mEAAmE;IACnE,SAAS,YAAY,CAAC,OAA6B;QACjD,MAAM,MAAM,GAAwC;YAClD,CAAC,eAAe,EAAE,OAAO,CAAC,YAAY,CAAC;YACvC,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC;YAC/B,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC;YACrC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;YACxB,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC;YACzC,CAAC,uBAAuB,EAAE,OAAO,CAAC,mBAAmB,CAAC;YACtD,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;SAC/B,CAAC;QACF,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACvF,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,MAAM,CACb,GAAY,EACZ,GAAa,EACb,MAAmB,EACnB,OAA6B,EAC7B,OAAuB,EACvB,QAAiC,EAAE;QAEnC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;YACnB,MAAM;YACN,MAAM,EAAE,UAAU;YAClB,OAAO;YACP,eAAe,EAAE,OAAO,KAAK,eAAe;YAC5C,OAAO,EAAE,OAAO,KAAK,OAAO;YAC5B,QAAQ,EAAE,OAAO,KAAK,QAAQ;YAC9B,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ;gBACpC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;gBAC5C,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;gBACzC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;gBACzC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;gBACrC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;gBAC7B,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;gBACjC,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;YACD,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;YACvC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC;YACnC,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,SAAS,UAAU,CAAC,GAAY,EAAE,GAAa;QAC7C,OAAO,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,CAAC;IAED,SAAS,kBAAkB,CAAC,GAAa,EAAE,GAAwB;QACjE,2EAA2E;QAC3E,yEAAyE;QACzE,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACxC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE;YACnD,MAAM;YACN,YAAY,EAAE,GAAG,CAAC,OAAO;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3D,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,KAAgC,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,mBAAmB;gBAAE,OAAO,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,KAAgC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAClF,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;gBACrC,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE;oBACzC,KAAK,EAAE,GAAG,CAAC,IAAI;oBACf,iBAAiB,EAAE,GAAG,CAAC,OAAO;oBAC9B,KAAK,EAAE,KAAK,CAAE,GAAG,CAAC,KAAiC,CAAC,KAAK,CAAC;iBAC3D,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC7D,wEAAwE;QACxE,uEAAuE;QACvE,4EAA4E;QAC5E,0EAA0E;QAC1E,kDAAkD;QAClD,EAAE;QACF,0EAA0E;QAC1E,wEAAwE;QACxE,wEAAwE;QACxE,sEAAsE;QACtE,sCAAsC;QACtC,IAAI,CAAC,IAAA,gCAAiB,EAAC,GAAG,EAAE,cAAc,CAAC,EAAE,CAAC;YAC5C,OAAO,kBAAkB,CACvB,GAAG,EACH,IAAI,mBAAmB,CACrB,mEAAmE,EACnE,GAAG,CACJ,CACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QAEzD,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,mBAAmB;gBAAE,OAAO,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,OAA6B,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;gBACrC,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE;oBACzC,KAAK,EAAE,GAAG,CAAC,IAAI;oBACf,iBAAiB,EAAE,GAAG,CAAC,OAAO;oBAC9B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;iBACzB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;QAE/C,IAAI,CAAC;YACH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,qEAAqE;gBACrE,qEAAqE;gBACrE,sEAAsE;gBACtE,kEAAkE;gBAClE,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE;oBAC1C,KAAK,EAAE,eAAe;oBACtB,iBAAiB,EAAE,gCAAgC;oBACnD,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9C,IAAI,IAAwB,CAAC;gBAC7B,IAAI,YAAoB,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,MAAM,GACV,MAAM,KAAK,OAAO;wBAChB,CAAC,CAAC,MAAM,MAAM,CAAC;4BACX,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;4BAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;4BACrC,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,cAAc,CAAuB;yBAClE,CAAC;wBACJ,CAAC,CAAC,MAAM,QAAQ,CAAC;4BACb,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;4BAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;4BACrC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC;yBAC9D,CAAC,CAAC;oBACT,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACnB,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBACrC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;wBACtD,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;wBAC9D,YAAY,EACV,MAAM,KAAK,OAAO;4BAChB,CAAC,CAAC,2BAA2B;4BAC7B,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO;gCACnC,CAAC,CAAC,GAAG,CAAC,OAAO;gCACb,CAAC,CAAC,kCAAkC;qBAC3C,CAAC,CAAC;gBACL,CAAC;gBAED,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE;oBACvC,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,YAAY,EAAE;oBACtB,MAAM,EAAE,WAAW;iBACpB,CAAC,CAAC;gBACH,GAAG,CAAC,IAAI,GAAG,IAA+B,CAAC;gBAC3C,iEAAiE;gBACjE,6CAA6C;gBAC7C,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE;oBAC/D,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBACtD,OAAO,MAAM,CACX,GAAG,EACH,GAAG,EACH,MAAM,CAAC,MAAM,EACb,OAAO,EACP,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAC7C,CAAC;YACJ,CAAC;YAED,qEAAqE;YACrE,sEAAsE;YACtE,yDAAyD;YACzD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAiD,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnC,sEAAsE;gBACtE,8DAA8D;gBAC9D,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;oBACvD,YAAY,EAAE,6BAA6B;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC;gBACpD,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;gBAChC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;gBACtC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;gBAChD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;aACnC,CAAC,CAAC;YAEH,0EAA0E;YAC1E,qEAAqE;YACrE,0EAA0E;YAC1E,yEAAyE;YACzE,2CAA2C;YAC3C,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AACxC,CAAC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IAExB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,CAAC;YACd,qBAAqB,CACnB,OAAO,CAAC,eAAe,EACvB,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACrD,OAAO,CAAC,IAAI,CACb,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,IAAA,oBAAU,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,CAAC,EACnE,QAAQ,CAAC,aAAa,CACvB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -10,7 +10,8 @@ export declare function createDiscoveryHandlers(config: DiscoveryConfig): Discov
10
10
  *
11
11
  * Mounted at the application root — `app.use(oauthDiscoveryRoutes)` — because
12
12
  * RFC 8414 and RFC 9728 fix these paths at the origin, and a client will not
13
- * look for them anywhere else.
13
+ * look for them anywhere else. Mounting the router anywhere else moves the
14
+ * documents somewhere no client reads.
14
15
  */
15
16
  export declare function createDiscoveryRouter(config: DiscoveryConfig): Router;
16
17
  //# sourceMappingURL=discovery-controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-controller.d.ts","sourceRoot":"","sources":["../src/discovery-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,EAAiB,MAAM,SAAS,CAAC;AAErE,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAwBxB,MAAM,WAAW,iBAAiB;IAChC,2BAA2B,EAAE,cAAc,CAAC;IAC5C,yBAAyB,EAAE,cAAc,CAAC;CAC3C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,CAWlF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAQrE"}
1
+ {"version":3,"file":"discovery-controller.d.ts","sourceRoot":"","sources":["../src/discovery-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,EAAiB,MAAM,SAAS,CAAC;AAErE,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AA0BxB,MAAM,WAAW,iBAAiB;IAChC,2BAA2B,EAAE,cAAc,CAAC;IAC5C,yBAAyB,EAAE,cAAc,CAAC;CAC3C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,CAWlF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAerE"}
@@ -11,8 +11,10 @@ const discovery_js_1 = require("./discovery.js");
11
11
  * they are what a client reads *before* it has any credential at all, and a 401
12
12
  * here is a connect failure the client cannot recover from.
13
13
  *
14
- * There is no `:resource` parameter and no filesystem read. Two fixed paths,
15
- * two computed bodies. See the header of `discovery.ts` for why.
14
+ * There is no `:resource` parameter and no filesystem read — every path below
15
+ * is a fixed string, and the one that varies is fixed at boot from
16
+ * configuration rather than from anything a caller sends. See the header of
17
+ * `discovery.ts` for why.
16
18
  */
17
19
  /** One place the two handlers agree on headers, so they cannot drift. */
18
20
  function sendDocument(res, body) {
@@ -40,13 +42,21 @@ function createDiscoveryHandlers(config) {
40
42
  *
41
43
  * Mounted at the application root — `app.use(oauthDiscoveryRoutes)` — because
42
44
  * RFC 8414 and RFC 9728 fix these paths at the origin, and a client will not
43
- * look for them anywhere else.
45
+ * look for them anywhere else. Mounting the router anywhere else moves the
46
+ * documents somewhere no client reads.
44
47
  */
45
48
  function createDiscoveryRouter(config) {
46
49
  const handlers = createDiscoveryHandlers(config);
47
50
  const router = (0, express_1.Router)();
48
51
  router.get('/.well-known/oauth-authorization-server', handlers.authorizationServerMetadata);
49
- router.get('/.well-known/oauth-protected-resource', handlers.protectedResourceMetadata);
52
+ // Both locations RFC 9728 and the field between them ask for: the path
53
+ // suffixed with the resource's own path, which is where the specification
54
+ // puts the document, and the bare path, which is where a client that took a
55
+ // 404 from the first one looks next. `protectedResourceMetadataPaths`
56
+ // explains why both, and collapses to one when the resource is at the root.
57
+ for (const path of (0, discovery_js_1.protectedResourceMetadataPaths)(config.resource)) {
58
+ router.get(path, handlers.protectedResourceMetadata);
59
+ }
50
60
  return router;
51
61
  }
52
62
  //# sourceMappingURL=discovery-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-controller.js","sourceRoot":"","sources":["../src/discovery-controller.ts"],"names":[],"mappings":";;AAoCA,0DAWC;AASD,sDAQC;AAhED,qCAAqE;AAErE,iDAKwB;AAExB;;;;;;;;;GASG;AAEH,yEAAyE;AACzE,SAAS,YAAY,CAAC,GAAa,EAAE,IAAa;IAChD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;IACjE,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,oBAAoB;IACpB,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,mBAAmB,wCAAyB,EAAE,CAAC,CAAC;IAC/E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAOD,SAAgB,uBAAuB,CAAC,MAAuB;IAC7D,2EAA2E;IAC3E,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,mBAAmB,GAAG,IAAA,+CAAgC,EAAC,MAAM,CAAC,CAAC;IACrE,MAAM,iBAAiB,GAAG,IAAA,6CAA8B,EAAC,MAAM,CAAC,CAAC;IAEjE,OAAO;QACL,2BAA2B,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,CAAC;QAClF,yBAAyB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,MAAuB;IAC3D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,yCAAyC,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAC5F,MAAM,CAAC,GAAG,CAAC,uCAAuC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAExF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"discovery-controller.js","sourceRoot":"","sources":["../src/discovery-controller.ts"],"names":[],"mappings":";;AAuCA,0DAWC;AAUD,sDAeC;AA3ED,qCAAqE;AAErE,iDAMwB;AAExB;;;;;;;;;;;GAWG;AAEH,yEAAyE;AACzE,SAAS,YAAY,CAAC,GAAa,EAAE,IAAa;IAChD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;IACjE,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,oBAAoB;IACpB,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,mBAAmB,wCAAyB,EAAE,CAAC,CAAC;IAC/E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAOD,SAAgB,uBAAuB,CAAC,MAAuB;IAC7D,2EAA2E;IAC3E,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,mBAAmB,GAAG,IAAA,+CAAgC,EAAC,MAAM,CAAC,CAAC;IACrE,MAAM,iBAAiB,GAAG,IAAA,6CAA8B,EAAC,MAAM,CAAC,CAAC;IAEjE,OAAO;QACL,2BAA2B,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,CAAC;QAClF,yBAAyB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,MAAuB;IAC3D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,yCAAyC,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAC5F,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,sEAAsE;IACtE,4EAA4E;IAC5E,KAAK,MAAM,IAAI,IAAI,IAAA,6CAA8B,EAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -90,6 +90,32 @@ export interface ProtectedResourceMetadata {
90
90
  bearer_methods_supported: string[];
91
91
  resource_documentation?: string;
92
92
  }
93
+ /** Where RFC 9728 puts the document for a resource mounted at the root. */
94
+ export declare const PROTECTED_RESOURCE_METADATA_PATH = "/.well-known/oauth-protected-resource";
95
+ /**
96
+ * Every path the protected-resource document should answer at, bare path first.
97
+ *
98
+ * RFC 9728 3.1 locates the document by inserting the well-known segment
99
+ * between the resource URL's host and its path, so a resource at
100
+ * `https://host/api/mcp` publishes at
101
+ * `https://host/.well-known/oauth-protected-resource/api/mcp`. A resource at
102
+ * the root has nothing to insert before, and gets the bare path alone.
103
+ *
104
+ * The bare path is kept for a resource that is *not* at the root, because that
105
+ * is where clients in the field look after the specified location answers 404
106
+ * — observed 2026-09-06 with the Claude desktop app, which asks for the
107
+ * suffixed form first and falls back. Serving both costs one more literal
108
+ * route carrying the same body.
109
+ *
110
+ * The suffix comes from configuration read at boot and never from request
111
+ * input, so the routes below are fixed strings: there is no parameter to
112
+ * traverse with, for the same reason the documents themselves are computed
113
+ * rather than read off disk. Two inputs yield the bare path alone rather than
114
+ * a route built out of something that is not one: a `resource` that will not
115
+ * parse as a URL, and a path Express would read as a pattern — see
116
+ * `LITERAL_PATH` below.
117
+ */
118
+ export declare function protectedResourceMetadataPaths(resource: string): string[];
93
119
  /** RFC 9728. */
94
120
  export declare function buildProtectedResourceMetadata(config: DiscoveryConfig): ProtectedResourceMetadata;
95
121
  //# sourceMappingURL=discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,yEAAyE;AACzE,eAAO,MAAM,gCAAgC,mBAAoB,CAAC;AAElE,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,iDAAiD,CAAC;AAErF,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,UAAyC,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAO9C,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gCAAgC,EAAE,MAAM,EAAE,CAAC;IAC3C,qCAAqC,EAAE,MAAM,EAAE,CAAC;IAChD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,qCAAqC,EAAE,OAAO,CAAC;IAC/C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,gEAAgE;AAChE,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,eAAe,GACtB,2BAA2B,CAiC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,eAAe,GACtB,yBAAyB,CAe3B"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,yEAAyE;AACzE,eAAO,MAAM,gCAAgC,mBAAoB,CAAC;AAElE,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,iDAAiD,CAAC;AAErF,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,UAAyC,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAO9C,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gCAAgC,EAAE,MAAM,EAAE,CAAC;IAC3C,qCAAqC,EAAE,MAAM,EAAE,CAAC;IAChD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,qCAAqC,EAAE,OAAO,CAAC;IAC/C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,gEAAgE;AAChE,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,eAAe,GACtB,2BAA2B,CAiC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,2EAA2E;AAC3E,eAAO,MAAM,gCAAgC,0CAA0C,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAYzE;AAkBD,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,eAAe,GACtB,yBAAyB,CAe3B"}