@spine-event-engine/auth 2.0.0-snapshot.21 → 2.0.0-snapshot.22

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.
@@ -11,6 +11,7 @@
11
11
  * or implied. See the License for the specific language governing permissions and limitations under
12
12
  * the License.
13
13
  */
14
+ import { Time } from "@spine-event-engine/core/time";
14
15
  import { importJWK, jwtVerify } from "jose";
15
16
  const DEFAULT_LIMIT = 1_048_576;
16
17
  const DEFAULT_TIMEOUT = 30_000;
@@ -49,65 +50,102 @@ export async function discoverOidcProvider(options) {
49
50
  * @returns The configured OIDC provider.
50
51
  */
51
52
  export function createOidcProvider(options) {
52
- const issuer = ProviderValues.https(options.issuer);
53
- const authorizationEndpoint = ProviderValues.https(options.authorizationEndpoint);
54
- const tokenEndpoint = ProviderValues.https(options.tokenEndpoint);
55
- const jwksEndpoint = ProviderValues.https(options.jwksEndpoint);
56
- const clientId = ProviderValues.bounded(options.clientId, "clientId");
57
- const clientAuthentication = options.clientAuthentication ?? "none";
58
- if (!["client_secret_basic", "client_secret_post", "none"].includes(clientAuthentication))
59
- throw new TypeError("clientAuthentication");
60
- const clientSecret = options.clientSecret === undefined
61
- ? undefined
62
- : ProviderValues.bounded(options.clientSecret, "clientSecret");
63
- if (clientAuthentication !== "none" && clientSecret === undefined)
64
- throw new TypeError("clientSecret");
65
- const limit = ProviderValues.positive(options.maxResponseBytes ?? DEFAULT_LIMIT, "maxResponseBytes");
66
- const timeout = ProviderValues.positive(options.timeoutMilliseconds ?? DEFAULT_TIMEOUT, "timeoutMilliseconds");
67
- const http = options.fetch ?? fetch;
68
- const clock = options.clock ?? Date.now;
69
- let cachedKeys;
70
- let pendingKeys;
71
- const loadKeys = async (refresh, signal) => {
72
- const now = ProviderValues.safeNow(clock);
73
- if (!refresh && cachedKeys && cachedKeys.expiresAt > now)
74
- return cachedKeys.keys;
75
- let pending = pendingKeys;
76
- if (!pending) {
77
- const controller = new AbortController();
78
- const request = ProviderValues.boundedOperation(timeout, controller.signal, async (requestSignal) => {
79
- const jwks = await ProviderValues.jsonDocument(jwksEndpoint, http, { maxResponseBytes: limit }, requestSignal);
80
- const keys = ProviderValues.plain(jwks.value) &&
81
- Array.isArray(jwks.value.keys) &&
82
- jwks.value.keys.length <= MAX_JWKS
83
- ? jwks.value.keys.filter(ProviderValues.plain)
84
- : undefined;
85
- if (!keys)
86
- return undefined;
87
- cachedKeys = Object.freeze({
88
- keys,
89
- expiresAt: now + jwks.cacheMilliseconds,
90
- });
91
- return keys;
92
- });
93
- pending = {
94
- promise: request,
95
- controller,
96
- waiters: 0,
97
- settled: false,
98
- };
99
- pendingKeys = pending;
100
- const owned = pending;
101
- void request.then(() => {
102
- owned.settled = true;
103
- if (pendingKeys === owned)
104
- pendingKeys = undefined;
105
- }, () => {
106
- owned.settled = true;
107
- if (pendingKeys === owned)
108
- pendingKeys = undefined;
109
- });
53
+ const settings = ProviderValues.oidcSettings(options);
54
+ const provider = new OidcVerifier(settings).provider();
55
+ return Object.freeze({
56
+ authorizationEndpoint: settings.authorizationEndpoint,
57
+ recommendedScopes: Object.freeze(["openid"]),
58
+ provider,
59
+ });
60
+ }
61
+ /**
62
+ * Verifies authorization codes while sharing one bounded JWKS cache per provider.
63
+ */
64
+ class OidcVerifier {
65
+ settings;
66
+ #cachedKeys;
67
+ #pendingKeys;
68
+ /**
69
+ * Captures the validated provider metadata and injected runtime functions.
70
+ * @param settings Validated endpoints, client credentials, limits, and clock.
71
+ */
72
+ constructor(settings) {
73
+ this.settings = settings;
74
+ }
75
+ /**
76
+ * Exposes the verified-identity contract without exposing cache state.
77
+ * @returns A frozen OIDC identity adapter.
78
+ */
79
+ provider() {
80
+ return Object.freeze({
81
+ issuer: this.settings.issuer,
82
+ exchangeAuthorizationCode: (input) => this.exchange(input),
83
+ });
84
+ }
85
+ /**
86
+ * Processes one valid authorization code under the provider deadline.
87
+ * @param input The code, verifier, nonce, and cancellation signal.
88
+ * @returns The verified identity, or undefined on rejection.
89
+ */
90
+ async exchange(input) {
91
+ try {
92
+ if (input.clientId !== this.settings.clientId || !ProviderValues.validExchange(input))
93
+ return undefined;
94
+ return await ProviderValues.boundedOperation(this.settings.timeout, input.signal, (signal) => this.exchangeBounded(input, signal));
95
+ }
96
+ catch {
97
+ return undefined;
110
98
  }
99
+ }
100
+ /**
101
+ * Verifies the ID token returned by a bounded token request.
102
+ * @param input The accepted authorization-code exchange.
103
+ * @param signal The operation cancellation signal.
104
+ * @returns The verified identity, or undefined for an invalid token.
105
+ */
106
+ async exchangeBounded(input, signal) {
107
+ const token = await ProviderValues.json(this.settings.tokenEndpoint, this.settings.http, { maxResponseBytes: this.settings.limit }, signal, this.tokenRequest(input, signal));
108
+ const idToken = ProviderValues.plain(token) ? ProviderValues.string(token.id_token) : undefined;
109
+ if (idToken === undefined)
110
+ return undefined;
111
+ return ProviderValues.verifyToken(idToken, this.settings.issuer, this.settings.clientId, input.expectedNonce, this.settings.clock, (refresh) => this.loadKeys(refresh, signal));
112
+ }
113
+ /**
114
+ * Builds the authorization-code form and selected client-authentication header.
115
+ * @param input The accepted exchange request.
116
+ * @param signal The operation cancellation signal.
117
+ * @returns The token endpoint request parameters.
118
+ */
119
+ tokenRequest(input, signal) {
120
+ const { clientId, clientAuthentication, clientSecret } = this.settings;
121
+ const body = new URLSearchParams({
122
+ grant_type: "authorization_code",
123
+ code: input.code,
124
+ redirect_uri: input.callbackUri,
125
+ client_id: clientId,
126
+ code_verifier: input.providerCodeVerifier,
127
+ });
128
+ const headers = new Headers({
129
+ accept: "application/json",
130
+ "content-type": "application/x-www-form-urlencoded",
131
+ });
132
+ if (clientAuthentication === "client_secret_post")
133
+ body.set("client_secret", clientSecret ?? "");
134
+ if (clientAuthentication === "client_secret_basic")
135
+ headers.set("authorization", `Basic ${Buffer.from(`${clientId}:${clientSecret ?? ""}`).toString("base64")}`);
136
+ return { method: "POST", redirect: "error", signal, headers, body };
137
+ }
138
+ /**
139
+ * Loads signing keys from a valid cache or shared in-flight JWKS fetch.
140
+ * @param refresh Whether to bypass the cached key set.
141
+ * @param signal The caller cancellation signal.
142
+ * @returns Verified candidate signing keys, or undefined for invalid JWKS.
143
+ */
144
+ async loadKeys(refresh, signal) {
145
+ const now = ProviderValues.safeNow(this.settings.clock);
146
+ if (!refresh && this.#cachedKeys && this.#cachedKeys.expiresAt > now)
147
+ return this.#cachedKeys.keys;
148
+ const pending = this.#pendingKeys ?? this.startKeyRequest(now);
111
149
  pending.waiters++;
112
150
  try {
113
151
  return await ProviderValues.waitForSignal(pending.promise, signal);
@@ -117,56 +155,46 @@ export function createOidcProvider(options) {
117
155
  if (pending.waiters === 0 && !pending.settled)
118
156
  pending.controller.abort();
119
157
  }
120
- };
121
- const provider = Object.freeze({
122
- issuer,
123
- async exchangeAuthorizationCode(input) {
124
- try {
125
- if (input.clientId !== clientId || !ProviderValues.validExchange(input))
126
- return undefined;
127
- const secret = clientSecret ?? "";
128
- return await ProviderValues.boundedOperation(timeout, input.signal, async (signal) => {
129
- const body = new URLSearchParams({
130
- grant_type: "authorization_code",
131
- code: input.code,
132
- redirect_uri: input.callbackUri,
133
- client_id: clientId,
134
- code_verifier: input.providerCodeVerifier,
135
- });
136
- const headers = new Headers({
137
- accept: "application/json",
138
- "content-type": "application/x-www-form-urlencoded",
139
- });
140
- if (clientAuthentication === "client_secret_post")
141
- body.set("client_secret", secret);
142
- if (clientAuthentication === "client_secret_basic")
143
- headers.set("authorization", `Basic ${Buffer.from(`${clientId}:${secret}`).toString("base64")}`);
144
- const token = await ProviderValues.json(tokenEndpoint, http, { maxResponseBytes: limit }, signal, {
145
- method: "POST",
146
- redirect: "error",
147
- signal,
148
- headers,
149
- body,
150
- });
151
- const idToken = ProviderValues.plain(token)
152
- ? ProviderValues.string(token.id_token)
153
- : undefined;
154
- if (idToken === undefined)
155
- return undefined;
156
- const verified = await ProviderValues.verifyToken(idToken, issuer, clientId, input.expectedNonce, clock, (refresh) => loadKeys(refresh, signal));
157
- return verified;
158
- });
159
- }
160
- catch {
161
- return undefined;
162
- }
163
- },
164
- });
165
- return Object.freeze({
166
- authorizationEndpoint,
167
- recommendedScopes: Object.freeze(["openid"]),
168
- provider,
169
- });
158
+ }
159
+ /**
160
+ * Starts one bounded JWKS request and clears it when settled.
161
+ * @param now The clock reading used for cache expiry.
162
+ * @returns The shared in-flight request state.
163
+ */
164
+ startKeyRequest(now) {
165
+ const controller = new AbortController();
166
+ const request = ProviderValues.boundedOperation(this.settings.timeout, controller.signal, (signal) => this.fetchKeys(now, signal));
167
+ const pending = { promise: request, controller, waiters: 0, settled: false };
168
+ this.#pendingKeys = pending;
169
+ void request.then(() => {
170
+ pending.settled = true;
171
+ if (this.#pendingKeys === pending)
172
+ this.#pendingKeys = undefined;
173
+ }, () => {
174
+ pending.settled = true;
175
+ if (this.#pendingKeys === pending)
176
+ this.#pendingKeys = undefined;
177
+ });
178
+ return pending;
179
+ }
180
+ /**
181
+ * Fetches a bounded JWKS document and caches accepted asymmetric candidates.
182
+ * @param now The clock reading used for cache expiry.
183
+ * @param signal The request cancellation signal.
184
+ * @returns Filtered signing keys, or undefined for invalid JWKS.
185
+ */
186
+ async fetchKeys(now, signal) {
187
+ const jwks = await ProviderValues.jsonDocument(this.settings.jwksEndpoint, this.settings.http, { maxResponseBytes: this.settings.limit }, signal);
188
+ const keys = ProviderValues.plain(jwks.value) &&
189
+ Array.isArray(jwks.value.keys) &&
190
+ jwks.value.keys.length <= MAX_JWKS
191
+ ? jwks.value.keys.filter(ProviderValues.plain)
192
+ : undefined;
193
+ if (!keys)
194
+ return undefined;
195
+ this.#cachedKeys = Object.freeze({ keys, expiresAt: now + jwks.cacheMilliseconds });
196
+ return keys;
197
+ }
170
198
  }
171
199
  /**
172
200
  * Fetches Google's fixed official OpenID Connect configuration.
@@ -315,6 +343,62 @@ export function createGitHubProvider(options) {
315
343
  * Parses provider responses, bounds I/O, and verifies OIDC details.
316
344
  */
317
345
  const ProviderValues = Object.freeze({
346
+ /**
347
+ * Validates trusted OIDC metadata and client authentication settings.
348
+ * @param options The configured provider endpoints and bounds.
349
+ * @returns Copied provider settings for a verifier.
350
+ */
351
+ oidcSettings(options) {
352
+ const issuer = ProviderValues.https(options.issuer);
353
+ const authorizationEndpoint = ProviderValues.https(options.authorizationEndpoint);
354
+ const tokenEndpoint = ProviderValues.https(options.tokenEndpoint);
355
+ const jwksEndpoint = ProviderValues.https(options.jwksEndpoint);
356
+ const clientId = ProviderValues.bounded(options.clientId, "clientId");
357
+ const { clientAuthentication, clientSecret } = ProviderValues.oidcCredentials(options);
358
+ const limit = ProviderValues.positive(options.maxResponseBytes ?? DEFAULT_LIMIT, "maxResponseBytes");
359
+ const timeout = ProviderValues.positive(options.timeoutMilliseconds ?? DEFAULT_TIMEOUT, "timeoutMilliseconds");
360
+ const http = options.fetch ?? fetch;
361
+ const clock = options.clock ?? (() => Time.currentTimeMillis());
362
+ return {
363
+ issuer,
364
+ authorizationEndpoint,
365
+ tokenEndpoint,
366
+ jwksEndpoint,
367
+ clientId,
368
+ clientAuthentication,
369
+ clientSecret,
370
+ limit,
371
+ timeout,
372
+ http,
373
+ clock,
374
+ };
375
+ },
376
+ /**
377
+ * Validates the selected OIDC client-secret authentication mode.
378
+ * @param options The configured authentication mode and optional secret.
379
+ * @returns A valid mode and copied secret.
380
+ */
381
+ oidcCredentials(options) {
382
+ const clientAuthentication = options.clientAuthentication ?? "none";
383
+ if (!["client_secret_basic", "client_secret_post", "none"].includes(clientAuthentication))
384
+ throw new TypeError("clientAuthentication");
385
+ const clientSecret = options.clientSecret === undefined
386
+ ? undefined
387
+ : ProviderValues.bounded(options.clientSecret, "clientSecret");
388
+ if (clientAuthentication !== "none" && clientSecret === undefined)
389
+ throw new TypeError("clientSecret");
390
+ return { clientAuthentication, clientSecret };
391
+ },
392
+ /**
393
+ * Verifies an ID token with bounded JWKS candidates and expected claims.
394
+ * @param token The provider ID token to verify.
395
+ * @param issuer The trusted issuer.
396
+ * @param clientId The configured OAuth client identifier.
397
+ * @param nonce The expected nonce from the flow.
398
+ * @param clock The provider millisecond clock.
399
+ * @param keys The shared JWKS loader.
400
+ * @returns The verified external identity, or undefined for an invalid token.
401
+ */
318
402
  async verifyToken(token, issuer, clientId, nonce, clock, keys) {
319
403
  const [encodedHeader] = token.split(".", 1);
320
404
  const header = encodedHeader ? ProviderValues.parse64(encodedHeader) : undefined;
@@ -368,9 +452,27 @@ const ProviderValues = Object.freeze({
368
452
  });
369
453
  return Object.freeze({ issuer, subject: claims.sub, claims: Object.freeze(kept) });
370
454
  },
455
+ /**
456
+ * Reads a bounded JSON response body.
457
+ * @param url The provider HTTPS endpoint.
458
+ * @param http The injected HTTP client.
459
+ * @param limits The accepted response-size limit.
460
+ * @param signal The request cancellation signal.
461
+ * @param init Additional HTTP request fields.
462
+ * @returns The parsed JSON value.
463
+ */
371
464
  async json(url, http, limits, signal, init) {
372
465
  return (await ProviderValues.jsonDocument(url, http, limits, signal, init)).value;
373
466
  },
467
+ /**
468
+ * Reads a JSON document with response cache metadata and abort support.
469
+ * @param url The provider HTTPS endpoint.
470
+ * @param http The injected HTTP client.
471
+ * @param limits The accepted response-size limit.
472
+ * @param signal The request cancellation signal.
473
+ * @param init Additional HTTP request fields.
474
+ * @returns The parsed JSON value and remaining cache lifetime.
475
+ */
374
476
  async jsonDocument(url, http, limits, signal, init) {
375
477
  const request = {
376
478
  redirect: "error",
@@ -430,9 +532,19 @@ const ProviderValues = Object.freeze({
430
532
  cacheMilliseconds: ProviderValues.cacheMilliseconds(response.headers),
431
533
  });
432
534
  },
535
+ /**
536
+ * Checks authorization-code exchange fields before contacting a provider.
537
+ * @param input The authorization-code exchange input.
538
+ * @returns Whether the exchange fields are valid.
539
+ */
433
540
  validExchange(input) {
434
541
  return [input.code, input.callbackUri, input.providerCodeVerifier, input.expectedNonce].every((value) => typeof value === "string" && value.length > 0 && value.length <= 4096);
435
542
  },
543
+ /**
544
+ * Parses a URL-safe base64 JSON value.
545
+ * @param value The URL-safe base64 JSON string to decode.
546
+ * @returns The parsed value, or undefined for invalid JSON.
547
+ */
436
548
  parse64(value) {
437
549
  try {
438
550
  return JSON.parse(Buffer.from(value, "base64url").toString("utf8"));
@@ -441,39 +553,81 @@ const ProviderValues = Object.freeze({
441
553
  return undefined;
442
554
  }
443
555
  },
556
+ /**
557
+ * Checks whether a value is a plain record.
558
+ * @param value The unknown value to test for plain-record shape.
559
+ * @returns Whether the value is a plain record.
560
+ */
444
561
  plain(value) {
445
562
  return (typeof value === "object" &&
446
563
  value !== null &&
447
564
  Object.getPrototypeOf(value) === Object.prototype);
448
565
  },
566
+ /**
567
+ * Returns a bounded non-empty string when valid.
568
+ * @param value The string to check for the configured length bound.
569
+ * @returns The bounded string, or undefined when invalid.
570
+ */
449
571
  string(value) {
450
572
  return typeof value === "string" && value.length > 0 && value.length <= 4096
451
573
  ? value
452
574
  : undefined;
453
575
  },
576
+ /**
577
+ * Validates a bounded named string.
578
+ * @param value The named string option to validate.
579
+ * @param name The named option in validation errors.
580
+ * @returns The validated string.
581
+ */
454
582
  bounded(value, name) {
455
583
  const result = ProviderValues.string(value);
456
584
  if (!result)
457
585
  throw new TypeError(name);
458
586
  return result;
459
587
  },
588
+ /**
589
+ * Checks a bounded email address shape.
590
+ * @param value The email address to check.
591
+ * @returns Whether the address meets the accepted shape.
592
+ */
460
593
  validEmail(value) {
461
594
  return (typeof value === "string" && value.length <= 320 && /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(value));
462
595
  },
596
+ /**
597
+ * Checks a verified primary email record.
598
+ * @param value The email record to check for primary verification.
599
+ * @returns Whether the record contains a verified primary address.
600
+ */
463
601
  validPrimaryEmail(value) {
464
602
  return (ProviderValues.plain(value) &&
465
603
  value.primary === true &&
466
604
  value.verified === true &&
467
605
  ProviderValues.validEmail(value.email));
468
606
  },
607
+ /**
608
+ * Checks a bounded whitespace-free OAuth scope.
609
+ * @param value The OAuth scope string to validate.
610
+ * @returns Whether the scope is valid.
611
+ */
469
612
  validScope(value) {
470
613
  return (typeof value === "string" && value.length > 0 && value.length <= 128 && !/\s/u.test(value));
471
614
  },
615
+ /**
616
+ * Validates a positive safe integer option.
617
+ * @param value The integer option to validate.
618
+ * @param name The named option in validation errors.
619
+ * @returns The validated positive integer.
620
+ */
472
621
  positive(value, name) {
473
622
  if (!Number.isSafeInteger(value) || value <= 0)
474
623
  throw new TypeError(name);
475
624
  return value;
476
625
  },
626
+ /**
627
+ * Validates an HTTPS URL without credentials or fragment.
628
+ * @param value The HTTPS URL to validate.
629
+ * @returns The validated HTTPS URL.
630
+ */
477
631
  https(value) {
478
632
  const text = ProviderValues.bounded(value, "URL");
479
633
  const url = new URL(text);
@@ -481,6 +635,11 @@ const ProviderValues = Object.freeze({
481
635
  throw new TypeError("HTTPS URL required");
482
636
  return text;
483
637
  },
638
+ /**
639
+ * Validates an HTTPS base URL without a query.
640
+ * @param value The HTTPS base URL to validate.
641
+ * @returns The HTTPS base URL without trailing slashes.
642
+ */
484
643
  httpsBase(value) {
485
644
  ProviderValues.https(value);
486
645
  const url = new URL(value);
@@ -488,6 +647,14 @@ const ProviderValues = Object.freeze({
488
647
  throw new TypeError("HTTPS base URL must not contain a query.");
489
648
  return value.replace(/\/+$/u, "");
490
649
  },
650
+ /**
651
+ * Executes a provider operation under a combined abort signal and deadline.
652
+ * @typeParam T The result type returned by the provider operation.
653
+ * @param timeoutMilliseconds The maximum operation duration.
654
+ * @param externalSignal The caller cancellation signal.
655
+ * @param operation The asynchronous operation to await.
656
+ * @returns The operation result before timeout or abort.
657
+ */
491
658
  async boundedOperation(timeoutMilliseconds, externalSignal, operation) {
492
659
  const controller = new AbortController();
493
660
  const signal = externalSignal === undefined
@@ -512,6 +679,13 @@ const ProviderValues = Object.freeze({
512
679
  signal.removeEventListener("abort", onAbort);
513
680
  }
514
681
  },
682
+ /**
683
+ * Waits for one shared provider operation or caller cancellation.
684
+ * @typeParam T The result type returned by the provider operation.
685
+ * @param operation The asynchronous operation to await.
686
+ * @param signal The request cancellation signal.
687
+ * @returns The shared operation result before caller cancellation.
688
+ */
515
689
  async waitForSignal(operation, signal) {
516
690
  if (signal.aborted)
517
691
  throw new Error("Provider operation aborted.");
@@ -528,6 +702,12 @@ const ProviderValues = Object.freeze({
528
702
  signal.removeEventListener("abort", onAbort);
529
703
  }
530
704
  },
705
+ /**
706
+ * Reads one response-stream chunk with cancellation.
707
+ * @param reader The response body stream reader.
708
+ * @param signal The request cancellation signal.
709
+ * @returns The next stream chunk or completion marker.
710
+ */
531
711
  async abortableRead(reader, signal) {
532
712
  if (signal === undefined)
533
713
  return reader.read();
@@ -547,12 +727,22 @@ const ProviderValues = Object.freeze({
547
727
  });
548
728
  });
549
729
  },
730
+ /**
731
+ * Reads a non-negative safe millisecond clock value.
732
+ * @param clock The provider millisecond clock.
733
+ * @returns The validated current epoch milliseconds.
734
+ */
550
735
  safeNow(clock) {
551
736
  const value = clock();
552
737
  if (!Number.isSafeInteger(value) || value < 0)
553
738
  throw new TypeError("clock");
554
739
  return value;
555
740
  },
741
+ /**
742
+ * Calculates remaining JWKS cache time from HTTP headers.
743
+ * @param headers The HTTP response headers.
744
+ * @returns Remaining cache time in milliseconds.
745
+ */
556
746
  cacheMilliseconds(headers) {
557
747
  const directives = (headers.get("cache-control") ?? "")
558
748
  .split(",")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}