@seamless-auth/oidc-provider 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +80 -10
  3. package/dist/accessTokenClaims.d.ts +11 -0
  4. package/dist/accessTokenClaims.js +30 -0
  5. package/dist/accessTokenClaims.js.map +1 -1
  6. package/dist/accountClaims.d.ts +51 -0
  7. package/dist/accountClaims.js +102 -0
  8. package/dist/accountClaims.js.map +1 -0
  9. package/dist/adapter.js +16 -3
  10. package/dist/adapter.js.map +1 -1
  11. package/dist/apiClient.d.ts +3 -2
  12. package/dist/apiClient.js +3 -2
  13. package/dist/apiClient.js.map +1 -1
  14. package/dist/brandingContrast.d.ts +4 -0
  15. package/dist/brandingContrast.js +59 -0
  16. package/dist/brandingContrast.js.map +1 -0
  17. package/dist/claimsMismatch.d.ts +15 -0
  18. package/dist/claimsMismatch.js +90 -0
  19. package/dist/claimsMismatch.js.map +1 -0
  20. package/dist/createOidcEdge.d.ts +5 -0
  21. package/dist/createOidcEdge.js +43 -7
  22. package/dist/createOidcEdge.js.map +1 -1
  23. package/dist/deviceFlow.d.ts +2 -6
  24. package/dist/deviceFlow.js +2 -10
  25. package/dist/deviceFlow.js.map +1 -1
  26. package/dist/env.d.ts +1 -4
  27. package/dist/env.js +46 -4
  28. package/dist/env.js.map +1 -1
  29. package/dist/errorPage.d.ts +10 -0
  30. package/dist/errorPage.js +24 -0
  31. package/dist/errorPage.js.map +1 -0
  32. package/dist/hostedPages.d.ts +1 -0
  33. package/dist/hostedPages.js +24 -1
  34. package/dist/hostedPages.js.map +1 -1
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.js +1 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/interactions.js +83 -30
  39. package/dist/interactions.js.map +1 -1
  40. package/dist/jwtAccessTokens.d.ts +1 -1
  41. package/dist/jwtAccessTokens.js +2 -1
  42. package/dist/jwtAccessTokens.js.map +1 -1
  43. package/dist/logout.d.ts +4 -0
  44. package/dist/logout.js +8 -1
  45. package/dist/logout.js.map +1 -1
  46. package/dist/providerConfig.d.ts +3 -3
  47. package/dist/providerConfig.js +22 -8
  48. package/dist/providerConfig.js.map +1 -1
  49. package/dist/requestContext.d.ts +1 -2
  50. package/dist/requestContext.js.map +1 -1
  51. package/dist/requestObjectErrors.d.ts +12 -0
  52. package/dist/requestObjectErrors.js +47 -0
  53. package/dist/requestObjectErrors.js.map +1 -0
  54. package/dist/resumeCookie.js +3 -1
  55. package/dist/resumeCookie.js.map +1 -1
  56. package/dist/server.js +2 -2
  57. package/dist/server.js.map +1 -1
  58. package/dist/signingKey.d.ts +31 -3
  59. package/dist/signingKey.js +104 -4
  60. package/dist/signingKey.js.map +1 -1
  61. package/dist/ui/assets/index-BLikvo1E.js +18 -0
  62. package/dist/ui/assets/index-DKah8G4b.css +1 -0
  63. package/dist/ui/index.html +2 -2
  64. package/package.json +11 -8
  65. package/dist/ui/assets/index-CydLXRvo.js +0 -18
  66. package/dist/ui/assets/index-y3LME-Gv.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC;QAChC,MAAM,EAAE,GAAG,CAAC,gBAAgB;QAC5B,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,aAAa,EAAE,GAAG,CAAC,2BAA2B;QAC9C,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,UAAU,EAAE,GAAG,CAAC,gBAAgB;QAChC,mBAAmB,EAAE,GAAG,CAAC,sBAAsB;QAC/C,UAAU,EAAE,GAAG,CAAC,WAAW;KAC5B,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAChC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAErB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC;QAChC,MAAM,EAAE,GAAG,CAAC,gBAAgB;QAC5B,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,aAAa,EAAE,GAAG,CAAC,2BAA2B;QAC9C,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,UAAU,EAAE,GAAG,CAAC,gBAAgB;QAChC,mBAAmB,EAAE,GAAG,CAAC,sBAAsB;QAC/C,UAAU,EAAE,GAAG,CAAC,WAAW,KAAK,KAAK;KACtC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACxC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAChC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAErB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,7 +1,12 @@
1
- import { type KeyObject } from 'node:crypto';
1
+ import { type JsonWebKeyInput, type KeyObject } from 'node:crypto';
2
2
  import type { OidcJwksResponse, OidcPublicJwk, OidcSignKind } from '@seamless-auth/types';
3
3
  import { ExternalSigningKey } from 'oidc-provider';
4
4
  import type { OidcApiClient } from './apiClient.js';
5
+ type PublicJwk = JsonWebKeyInput['key'] & {
6
+ kid?: string;
7
+ use?: string;
8
+ alg?: string;
9
+ };
5
10
  export declare class UnsignableTokenError extends Error {
6
11
  constructor(reason: string);
7
12
  }
@@ -17,13 +22,36 @@ export declare function classifyToken(header: JsonObject, payload: JsonObject, s
17
22
  */
18
23
  export declare class ApiSigningKey extends ExternalSigningKey {
19
24
  #private;
20
- constructor(jwk: OidcPublicJwk, client: OidcApiClient, active: boolean);
25
+ constructor(jwk: OidcPublicJwk, client: OidcApiClient, active: boolean, onUnknownKey?: () => Promise<void>);
21
26
  get kid(): string;
22
27
  get alg(): string;
23
28
  get active(): boolean;
29
+ /** Public members only, whatever else the API's JWK carried. */
30
+ get publicJwk(): PublicJwk;
24
31
  keyObject(): KeyObject;
25
32
  sign(data: Uint8Array): Promise<Uint8Array>;
26
33
  }
27
34
  /** The active key comes first, which is the one the library selects to sign with. */
28
- export declare function signingKeysFrom(jwks: OidcJwksResponse, client: OidcApiClient): ApiSigningKey[];
35
+ export declare function signingKeysFrom(jwks: OidcJwksResponse, client: OidcApiClient, onUnknownKey?: () => Promise<void>): ApiSigningKey[];
36
+ /** Re-read the API's keys this often, so a rotation is picked up before anything is refused. */
37
+ export declare const SIGNING_KEY_REFRESH_MS: number;
38
+ /**
39
+ * The API's provider keys, reloaded on a timer and whenever the API refuses a key as unknown.
40
+ * The library reads its keystore once, at construction, so it is handed fixed slots that
41
+ * follow the current keys: the first is always the active key.
42
+ */
43
+ export declare class SigningKeyRing {
44
+ #private;
45
+ constructor(jwks: OidcJwksResponse, client: OidcApiClient);
46
+ /** Every key the API publishes, the active one first. */
47
+ get keys(): readonly ApiSigningKey[];
48
+ /** For the library's `jwks` configuration. */
49
+ get providerKeys(): ExternalSigningKey[];
50
+ /** The current keys, active first, for the edge's `/jwks`. */
51
+ get publicJwks(): PublicJwk[];
52
+ /** One reload at a time. A failed one keeps the keys already loaded. */
53
+ reload(): Promise<void>;
54
+ /** Reloads every `intervalMs` until the returned function is called. Never holds the process. */
55
+ startRefresh(intervalMs?: number): () => void;
56
+ }
29
57
  export {};
@@ -64,13 +64,15 @@ export class ApiSigningKey extends ExternalSigningKey {
64
64
  #keyObject;
65
65
  #client;
66
66
  #active;
67
- constructor(jwk, client, active) {
67
+ #onUnknownKey;
68
+ constructor(jwk, client, active, onUnknownKey) {
68
69
  super();
69
70
  this.#kid = jwk.kid;
70
71
  this.#alg = jwk.alg;
71
72
  this.#keyObject = createPublicKey({ key: jwk, format: 'jwk' });
72
73
  this.#client = client;
73
74
  this.#active = active;
75
+ this.#onUnknownKey = onUnknownKey;
74
76
  }
75
77
  get kid() {
76
78
  return this.#kid;
@@ -81,6 +83,11 @@ export class ApiSigningKey extends ExternalSigningKey {
81
83
  get active() {
82
84
  return this.#active;
83
85
  }
86
+ /** Public members only, whatever else the API's JWK carried. */
87
+ get publicJwk() {
88
+ const { kty, ...rest } = this.#keyObject.export({ format: 'jwk' });
89
+ return { kty, use: 'sig', kid: this.#kid, alg: this.#alg, ...rest };
90
+ }
84
91
  keyObject() {
85
92
  return this.#keyObject;
86
93
  }
@@ -97,6 +104,10 @@ export class ApiSigningKey extends ExternalSigningKey {
97
104
  if (header.alg !== this.#alg) {
98
105
  throw new UnsignableTokenError(`alg ${String(header.alg)} does not match key ${this.#kid}`);
99
106
  }
107
+ // The library reads the kid before it signs, and the keys can reload in between.
108
+ if (header.kid !== undefined && header.kid !== this.#kid) {
109
+ throw new UnsignableTokenError(`kid ${String(header.kid)} does not match key ${this.#kid}`);
110
+ }
100
111
  const sessionId = currentRequestContext()?.sessionId;
101
112
  const { kind, clientId } = classifyToken(header, decodePart(payloadPart), sessionId);
102
113
  const context = currentRequestContext();
@@ -122,21 +133,110 @@ export class ApiSigningKey extends ExternalSigningKey {
122
133
  if (error instanceof OidcSignRefusedError && error.code === 'session_revoked') {
123
134
  throw new errors.InvalidGrant('the session behind this grant has ended');
124
135
  }
136
+ // The API rotated its key. This request fails, and the next one signs with the new key.
137
+ if (error instanceof OidcSignRefusedError && error.code === 'unknown_key') {
138
+ await this.#onUnknownKey?.().catch(() => undefined);
139
+ }
125
140
  throw error;
126
141
  }
127
142
  }
128
143
  }
129
144
  /** The active key comes first, which is the one the library selects to sign with. */
130
- export function signingKeysFrom(jwks, client) {
145
+ export function signingKeysFrom(jwks, client, onUnknownKey) {
131
146
  const active = jwks.keys.find((key) => key.kid === jwks.activeKid);
132
147
  if (!active) {
133
148
  throw new Error(`The API's active provider key ${jwks.activeKid} is not in its JWKS`);
134
149
  }
135
150
  return [
136
- new ApiSigningKey(active, client, true),
151
+ new ApiSigningKey(active, client, true, onUnknownKey),
137
152
  ...jwks.keys
138
153
  .filter((key) => key.kid !== jwks.activeKid)
139
- .map((key) => new ApiSigningKey(key, client, false)),
154
+ .map((key) => new ApiSigningKey(key, client, false, onUnknownKey)),
140
155
  ];
141
156
  }
157
+ /** Re-read the API's keys this often, so a rotation is picked up before anything is refused. */
158
+ export const SIGNING_KEY_REFRESH_MS = 5 * 60_000;
159
+ /**
160
+ * The API's provider keys, reloaded on a timer and whenever the API refuses a key as unknown.
161
+ * The library reads its keystore once, at construction, so it is handed fixed slots that
162
+ * follow the current keys: the first is always the active key.
163
+ */
164
+ export class SigningKeyRing {
165
+ #client;
166
+ #alg;
167
+ #slots;
168
+ #keys;
169
+ #reloading;
170
+ constructor(jwks, client) {
171
+ this.#client = client;
172
+ this.#keys = signingKeysFrom(jwks, client, () => this.reload());
173
+ this.#alg = this.#keys[0].alg;
174
+ this.#slots = this.#keys.map((_, index) => new SigningKeySlot(this, index));
175
+ }
176
+ /** Every key the API publishes, the active one first. */
177
+ get keys() {
178
+ return this.#keys;
179
+ }
180
+ /** For the library's `jwks` configuration. */
181
+ get providerKeys() {
182
+ return this.#slots;
183
+ }
184
+ /** The current keys, active first, for the edge's `/jwks`. */
185
+ get publicJwks() {
186
+ return this.#keys.map((key) => key.publicJwk);
187
+ }
188
+ /** One reload at a time. A failed one keeps the keys already loaded. */
189
+ reload() {
190
+ this.#reloading ??= this.#load().finally(() => {
191
+ this.#reloading = undefined;
192
+ });
193
+ return this.#reloading;
194
+ }
195
+ async #load() {
196
+ const jwks = await this.#client.jwks();
197
+ const keys = signingKeysFrom(jwks, this.#client, () => this.reload());
198
+ // The library's signing algorithms are fixed when it starts.
199
+ if (keys[0].alg !== this.#alg) {
200
+ throw new Error(`The API's active provider key now uses ${keys[0].alg}, not ${this.#alg}; restart this service`);
201
+ }
202
+ this.#keys = keys;
203
+ }
204
+ /** Reloads every `intervalMs` until the returned function is called. Never holds the process. */
205
+ startRefresh(intervalMs = SIGNING_KEY_REFRESH_MS) {
206
+ const timer = setInterval(() => {
207
+ this.reload().catch((error) => {
208
+ console.error(`[oidc-provider] could not reload the signing keys: ${String(error)}`);
209
+ });
210
+ }, intervalMs);
211
+ timer.unref();
212
+ return () => clearInterval(timer);
213
+ }
214
+ }
215
+ /** One of the library's keys, standing for whichever of the ring's keys is in its place. */
216
+ class SigningKeySlot extends ExternalSigningKey {
217
+ #ring;
218
+ #index;
219
+ constructor(ring, index) {
220
+ super();
221
+ this.#ring = ring;
222
+ this.#index = index;
223
+ }
224
+ // A slot past the ring's current keys repeats the active key, which only ever signs first.
225
+ #key() {
226
+ const keys = this.#ring.keys;
227
+ return keys[this.#index] ?? keys[0];
228
+ }
229
+ get kid() {
230
+ return this.#key().kid;
231
+ }
232
+ get alg() {
233
+ return this.#key().alg;
234
+ }
235
+ keyObject() {
236
+ return this.#key().keyObject();
237
+ }
238
+ sign(data) {
239
+ return this.#key().sign(data);
240
+ }
241
+ }
142
242
  //# sourceMappingURL=signingKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signingKey.js","sourceRoot":"","sources":["../src/signingKey.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signingKey.js","sourceRoot":"","sources":["../src/signingKey.ts"],"names":[],"mappings":"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"}