@spinajs/authn-keys 3.0.3 → 3.0.5

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 (178) hide show
  1. package/README.md +11 -3
  2. package/lib/cjs/cli/AddKey.d.ts +2 -2
  3. package/lib/cjs/cli/AddKey.d.ts.map +1 -1
  4. package/lib/cjs/cli/AddKey.js +2 -1
  5. package/lib/cjs/cli/AddKey.js.map +1 -1
  6. package/lib/cjs/cli/KeyCliCommand.d.ts +10 -0
  7. package/lib/cjs/cli/KeyCliCommand.d.ts.map +1 -0
  8. package/lib/cjs/{models/AuthnNonce.js → cli/KeyCliCommand.js} +14 -18
  9. package/lib/cjs/cli/KeyCliCommand.js.map +1 -0
  10. package/lib/cjs/cli/ListKeys.d.ts +2 -2
  11. package/lib/cjs/cli/ListKeys.d.ts.map +1 -1
  12. package/lib/cjs/cli/ListKeys.js +2 -1
  13. package/lib/cjs/cli/ListKeys.js.map +1 -1
  14. package/lib/cjs/cli/RevokeKey.d.ts +2 -2
  15. package/lib/cjs/cli/RevokeKey.d.ts.map +1 -1
  16. package/lib/cjs/cli/RevokeKey.js +2 -1
  17. package/lib/cjs/cli/RevokeKey.js.map +1 -1
  18. package/lib/cjs/cli/index.d.ts +1 -0
  19. package/lib/cjs/cli/index.d.ts.map +1 -1
  20. package/lib/cjs/cli/index.js +1 -0
  21. package/lib/cjs/cli/index.js.map +1 -1
  22. package/lib/cjs/index.d.ts +0 -1
  23. package/lib/cjs/index.d.ts.map +1 -1
  24. package/lib/cjs/index.js +0 -1
  25. package/lib/cjs/index.js.map +1 -1
  26. package/lib/cjs/jws/index.d.ts +1 -0
  27. package/lib/cjs/jws/index.d.ts.map +1 -1
  28. package/lib/cjs/jws/index.js +1 -0
  29. package/lib/cjs/jws/index.js.map +1 -1
  30. package/lib/cjs/jws/register.d.ts +18 -0
  31. package/lib/cjs/jws/register.d.ts.map +1 -0
  32. package/lib/cjs/jws/register.js +66 -0
  33. package/lib/cjs/jws/register.js.map +1 -0
  34. package/lib/cjs/models/index.d.ts +0 -1
  35. package/lib/cjs/models/index.d.ts.map +1 -1
  36. package/lib/cjs/models/index.js +0 -1
  37. package/lib/cjs/models/index.js.map +1 -1
  38. package/lib/cjs/options/options.d.ts +10 -0
  39. package/lib/cjs/options/options.d.ts.map +1 -1
  40. package/lib/cjs/options/options.js +9 -0
  41. package/lib/cjs/options/options.js.map +1 -1
  42. package/lib/cjs/registry/cache.d.ts +26 -0
  43. package/lib/cjs/registry/cache.d.ts.map +1 -0
  44. package/lib/cjs/registry/cache.js +73 -0
  45. package/lib/cjs/registry/cache.js.map +1 -0
  46. package/lib/cjs/registry/index.d.ts +1 -0
  47. package/lib/cjs/registry/index.d.ts.map +1 -1
  48. package/lib/cjs/registry/index.js +1 -0
  49. package/lib/cjs/registry/index.js.map +1 -1
  50. package/lib/cjs/registry/registry.d.ts +15 -2
  51. package/lib/cjs/registry/registry.d.ts.map +1 -1
  52. package/lib/cjs/registry/registry.js +35 -2
  53. package/lib/cjs/registry/registry.js.map +1 -1
  54. package/lib/cjs/schema.d.ts +40 -0
  55. package/lib/cjs/schema.d.ts.map +1 -1
  56. package/lib/cjs/schema.js +19 -0
  57. package/lib/cjs/schema.js.map +1 -1
  58. package/lib/cjs/strategies/assertion.d.ts +4 -5
  59. package/lib/cjs/strategies/assertion.d.ts.map +1 -1
  60. package/lib/cjs/strategies/assertion.js +6 -5
  61. package/lib/cjs/strategies/assertion.js.map +1 -1
  62. package/lib/cjs/strategies/httpsig.d.ts +5 -4
  63. package/lib/cjs/strategies/httpsig.d.ts.map +1 -1
  64. package/lib/cjs/strategies/httpsig.js +9 -5
  65. package/lib/cjs/strategies/httpsig.js.map +1 -1
  66. package/lib/cjs/strategies/index.d.ts +1 -0
  67. package/lib/cjs/strategies/index.d.ts.map +1 -1
  68. package/lib/cjs/strategies/index.js +1 -0
  69. package/lib/cjs/strategies/index.js.map +1 -1
  70. package/lib/cjs/strategies/keys.d.ts +3 -1
  71. package/lib/cjs/strategies/keys.d.ts.map +1 -1
  72. package/lib/cjs/strategies/keys.js +9 -0
  73. package/lib/cjs/strategies/keys.js.map +1 -1
  74. package/lib/cjs/strategies/nonce-key.d.ts +3 -0
  75. package/lib/cjs/strategies/nonce-key.d.ts.map +1 -0
  76. package/lib/cjs/strategies/nonce-key.js +8 -0
  77. package/lib/cjs/strategies/nonce-key.js.map +1 -0
  78. package/lib/mjs/cli/AddKey.d.ts +2 -2
  79. package/lib/mjs/cli/AddKey.d.ts.map +1 -1
  80. package/lib/mjs/cli/AddKey.js +3 -2
  81. package/lib/mjs/cli/AddKey.js.map +1 -1
  82. package/lib/mjs/cli/KeyCliCommand.d.ts +10 -0
  83. package/lib/mjs/cli/KeyCliCommand.d.ts.map +1 -0
  84. package/lib/mjs/{models/AuthnNonce.js → cli/KeyCliCommand.js} +13 -18
  85. package/lib/mjs/cli/KeyCliCommand.js.map +1 -0
  86. package/lib/mjs/cli/ListKeys.d.ts +2 -2
  87. package/lib/mjs/cli/ListKeys.d.ts.map +1 -1
  88. package/lib/mjs/cli/ListKeys.js +3 -2
  89. package/lib/mjs/cli/ListKeys.js.map +1 -1
  90. package/lib/mjs/cli/RevokeKey.d.ts +2 -2
  91. package/lib/mjs/cli/RevokeKey.d.ts.map +1 -1
  92. package/lib/mjs/cli/RevokeKey.js +3 -2
  93. package/lib/mjs/cli/RevokeKey.js.map +1 -1
  94. package/lib/mjs/cli/index.d.ts +1 -0
  95. package/lib/mjs/cli/index.d.ts.map +1 -1
  96. package/lib/mjs/cli/index.js +1 -0
  97. package/lib/mjs/cli/index.js.map +1 -1
  98. package/lib/mjs/index.d.ts +0 -1
  99. package/lib/mjs/index.d.ts.map +1 -1
  100. package/lib/mjs/index.js +0 -1
  101. package/lib/mjs/index.js.map +1 -1
  102. package/lib/mjs/jws/index.d.ts +1 -0
  103. package/lib/mjs/jws/index.d.ts.map +1 -1
  104. package/lib/mjs/jws/index.js +1 -0
  105. package/lib/mjs/jws/index.js.map +1 -1
  106. package/lib/mjs/jws/register.d.ts +18 -0
  107. package/lib/mjs/jws/register.d.ts.map +1 -0
  108. package/lib/mjs/jws/register.js +62 -0
  109. package/lib/mjs/jws/register.js.map +1 -0
  110. package/lib/mjs/models/index.d.ts +0 -1
  111. package/lib/mjs/models/index.d.ts.map +1 -1
  112. package/lib/mjs/models/index.js +0 -1
  113. package/lib/mjs/models/index.js.map +1 -1
  114. package/lib/mjs/options/options.d.ts +10 -0
  115. package/lib/mjs/options/options.d.ts.map +1 -1
  116. package/lib/mjs/options/options.js +8 -0
  117. package/lib/mjs/options/options.js.map +1 -1
  118. package/lib/mjs/registry/cache.d.ts +26 -0
  119. package/lib/mjs/registry/cache.d.ts.map +1 -0
  120. package/lib/mjs/registry/cache.js +69 -0
  121. package/lib/mjs/registry/cache.js.map +1 -0
  122. package/lib/mjs/registry/index.d.ts +1 -0
  123. package/lib/mjs/registry/index.d.ts.map +1 -1
  124. package/lib/mjs/registry/index.js +1 -0
  125. package/lib/mjs/registry/index.js.map +1 -1
  126. package/lib/mjs/registry/registry.d.ts +15 -2
  127. package/lib/mjs/registry/registry.d.ts.map +1 -1
  128. package/lib/mjs/registry/registry.js +37 -4
  129. package/lib/mjs/registry/registry.js.map +1 -1
  130. package/lib/mjs/schema.d.ts +40 -0
  131. package/lib/mjs/schema.d.ts.map +1 -1
  132. package/lib/mjs/schema.js +19 -0
  133. package/lib/mjs/schema.js.map +1 -1
  134. package/lib/mjs/strategies/assertion.d.ts +4 -5
  135. package/lib/mjs/strategies/assertion.d.ts.map +1 -1
  136. package/lib/mjs/strategies/assertion.js +7 -6
  137. package/lib/mjs/strategies/assertion.js.map +1 -1
  138. package/lib/mjs/strategies/httpsig.d.ts +5 -4
  139. package/lib/mjs/strategies/httpsig.d.ts.map +1 -1
  140. package/lib/mjs/strategies/httpsig.js +10 -6
  141. package/lib/mjs/strategies/httpsig.js.map +1 -1
  142. package/lib/mjs/strategies/index.d.ts +1 -0
  143. package/lib/mjs/strategies/index.d.ts.map +1 -1
  144. package/lib/mjs/strategies/index.js +1 -0
  145. package/lib/mjs/strategies/index.js.map +1 -1
  146. package/lib/mjs/strategies/keys.d.ts +3 -1
  147. package/lib/mjs/strategies/keys.d.ts.map +1 -1
  148. package/lib/mjs/strategies/keys.js +8 -0
  149. package/lib/mjs/strategies/keys.js.map +1 -1
  150. package/lib/mjs/strategies/nonce-key.d.ts +3 -0
  151. package/lib/mjs/strategies/nonce-key.d.ts.map +1 -0
  152. package/lib/mjs/strategies/nonce-key.js +4 -0
  153. package/lib/mjs/strategies/nonce-key.js.map +1 -0
  154. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  155. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  156. package/package.json +20 -11
  157. package/lib/cjs/models/AuthnNonce.d.ts +0 -8
  158. package/lib/cjs/models/AuthnNonce.d.ts.map +0 -1
  159. package/lib/cjs/models/AuthnNonce.js.map +0 -1
  160. package/lib/cjs/nonce/index.d.ts +0 -2
  161. package/lib/cjs/nonce/index.d.ts.map +0 -1
  162. package/lib/cjs/nonce/index.js +0 -18
  163. package/lib/cjs/nonce/index.js.map +0 -1
  164. package/lib/cjs/nonce/store.d.ts +0 -22
  165. package/lib/cjs/nonce/store.d.ts.map +0 -1
  166. package/lib/cjs/nonce/store.js +0 -98
  167. package/lib/cjs/nonce/store.js.map +0 -1
  168. package/lib/mjs/models/AuthnNonce.d.ts +0 -8
  169. package/lib/mjs/models/AuthnNonce.d.ts.map +0 -1
  170. package/lib/mjs/models/AuthnNonce.js.map +0 -1
  171. package/lib/mjs/nonce/index.d.ts +0 -2
  172. package/lib/mjs/nonce/index.d.ts.map +0 -1
  173. package/lib/mjs/nonce/index.js +0 -2
  174. package/lib/mjs/nonce/index.js.map +0 -1
  175. package/lib/mjs/nonce/store.d.ts +0 -22
  176. package/lib/mjs/nonce/store.d.ts.map +0 -1
  177. package/lib/mjs/nonce/store.js +0 -92
  178. package/lib/mjs/nonce/store.js.map +0 -1
@@ -0,0 +1,69 @@
1
+ import { credentialChangeTags, credentialTag, identityTag } from '@spinajs/authn/bus';
2
+ import { LruTtlCache } from '@spinajs/util';
3
+ import { KeyStore } from './store.js';
4
+ /**
5
+ * A KeyStore whose `get` is served from memory for `ttlSeconds`. Every write through it and every change the bus
6
+ * delivers evicts; a key revoked in another process is seen within the ttl. Unknown kids are never cached.
7
+ */
8
+ export class CachedKeyStore extends KeyStore {
9
+ constructor(inner, options, bus) {
10
+ super();
11
+ this.inner = inner;
12
+ this.options = options;
13
+ this.bus = bus;
14
+ /** Bumped by every eviction: a read that started before it must not store what it read. */
15
+ this.epoch = 0;
16
+ this.keys = options.ttlSeconds > 0 ? new LruTtlCache({ maxEntries: options.maxEntries, ttlMs: options.ttlSeconds * 1000, expireOnClockRewind: true }) : null;
17
+ this.unsubscribe = this.keys && bus ? bus.subscribe((change) => this.evict(credentialChangeTags(change))) : undefined;
18
+ }
19
+ async insert(key) {
20
+ try {
21
+ return await this.inner.insert(key);
22
+ }
23
+ finally {
24
+ this.evict([credentialTag('key', key.kid)]);
25
+ }
26
+ }
27
+ async get(kid) {
28
+ const cached = this.keys?.get(kid);
29
+ if (cached !== undefined) {
30
+ return cached;
31
+ }
32
+ const since = this.epoch;
33
+ const key = await this.inner.get(kid);
34
+ if (key !== null && this.keys !== null && since === this.epoch) {
35
+ this.keys.set(kid, key, { tags: [credentialTag('key', kid), identityTag(key.owner)] });
36
+ }
37
+ return key;
38
+ }
39
+ listByOwner(owner) {
40
+ return this.inner.listByOwner(owner);
41
+ }
42
+ async revoke(owner, kid, at) {
43
+ try {
44
+ return await this.inner.revoke(owner, kid, at);
45
+ }
46
+ finally {
47
+ this.evict([credentialTag('key', kid)]);
48
+ }
49
+ }
50
+ async touch(kid, at) {
51
+ try {
52
+ await this.inner.touch(kid, at);
53
+ }
54
+ finally {
55
+ this.evict([credentialTag('key', kid)]);
56
+ }
57
+ }
58
+ /** Stops listening to the bus. */
59
+ dispose() {
60
+ this.unsubscribe?.();
61
+ this.keys?.clear();
62
+ return Promise.resolve();
63
+ }
64
+ evict(tags) {
65
+ this.epoch++;
66
+ this.keys?.invalidate(tags);
67
+ }
68
+ }
69
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/registry/cache.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './store.js';
2
2
  export * from './orm-store.js';
3
+ export * from './cache.js';
3
4
  export * from './registry.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './store.js';
2
2
  export * from './orm-store.js';
3
+ export * from './cache.js';
3
4
  export * from './registry.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import '../register-schema.js';
2
2
  import { AuthnAudit } from '@spinajs/authn/audit';
3
+ import '@spinajs/authn/bus';
3
4
  import type { AuthnAuditor, AuthnEventBody } from '@spinajs/authn/audit';
4
- import { AuthnThrottle, KeyRegistry, SecretStore } from '@spinajs/authn/contracts';
5
+ import { AuthnThrottle, CredentialChangeBus, KeyRegistry, SecretStore } from '@spinajs/authn/contracts';
5
6
  import type { AuthnContext, IdentityRef, KeyChallengeRequest, KeyChallengeResult, KeyMaterial, KeyOwner, KeyRecord, KeyRegisterResult, KeyRegistration, PrincipalRef } from '@spinajs/authn/contracts';
7
+ import { Log } from '@spinajs/log';
6
8
  import type { KeysConfig, KeysOptions } from '../options/options.js';
7
9
  import { KeyStore } from './store.js';
8
10
  /** Usable for verification: neither revoked nor expired at `now`. */
@@ -21,8 +23,13 @@ export interface DefaultKeyRegistryDeps {
21
23
  readonly audit?: AuthnAuditor;
22
24
  /** Complete options that bypass the configuration. */
23
25
  readonly options?: KeysOptions;
26
+ /** Told about revoked keys, and evicts the key cache; otherwise the registered CredentialChangeBus. */
27
+ readonly bus?: CredentialChangeBus;
24
28
  }
25
- /** KeyRegistry over a KeyStore, challenges in SecretStore (lane notes D7, D12). */
29
+ /**
30
+ * KeyRegistry over a KeyStore, challenges in SecretStore (lane notes D7, D12). The store is wrapped in a
31
+ * {@link CachedKeyStore} unless `authn.keys.cache.ttlSeconds` is 0.
32
+ */
26
33
  export declare class DefaultKeyRegistry extends KeyRegistry {
27
34
  protected readonly Deps?: DefaultKeyRegistryDeps | undefined;
28
35
  protected KeysConfig: KeysConfig;
@@ -30,11 +37,15 @@ export declare class DefaultKeyRegistry extends KeyRegistry {
30
37
  protected Store: KeyStore;
31
38
  protected Secrets: SecretStore;
32
39
  protected Throttle: AuthnThrottle;
40
+ protected Bus: CredentialChangeBus | undefined;
41
+ protected Log: Log;
42
+ private cached;
33
43
  private readonly stamped;
34
44
  /** Kids whose last stamp is remembered; past this the least recently stamped is forgotten and costs one extra write. */
35
45
  protected readonly maxStamped: number;
36
46
  constructor(Deps?: DefaultKeyRegistryDeps | undefined);
37
47
  protected get store(): KeyStore;
48
+ protected get bus(): CredentialChangeBus | undefined;
38
49
  protected get secrets(): SecretStore;
39
50
  protected get throttle(): AuthnThrottle;
40
51
  protected get options(): KeysOptions;
@@ -46,6 +57,8 @@ export declare class DefaultKeyRegistry extends KeyRegistry {
46
57
  revoke(owner: IdentityRef, kid: string, ctx: AuthnContext, opts?: {
47
58
  readonly actor?: PrincipalRef;
48
59
  }): Promise<boolean>;
60
+ /** The store already evicted its own cache; this tells the other caches of the process. */
61
+ protected changed(kid: string): Promise<void>;
49
62
  byId(kid: string): Promise<KeyRecord | null>;
50
63
  /** Stamps last_used_at after a successful verification, at most once a minute per key so busy clients write little. */
51
64
  touch(kid: string, at: Date): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/registry/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -12,12 +12,16 @@ import { Autoinject, Injectable } from '@spinajs/di';
12
12
  import { Config } from '@spinajs/configuration';
13
13
  import '../register-schema.js';
14
14
  import { AuthnAudit } from '@spinajs/authn/audit';
15
- import { AuthnThrottle, KeyRegistry, SecretStore } from '@spinajs/authn/contracts';
15
+ // Registers the default CredentialChangeBus.
16
+ import '@spinajs/authn/bus';
17
+ import { AuthnThrottle, CredentialChangeBus, KeyRegistry, SecretStore } from '@spinajs/authn/contracts';
16
18
  import { _between, _contains, _is_string, _try_check_arg, isPlainObject } from '@spinajs/util';
17
19
  import { InvalidArgument, InvalidOption, UnexpectedServerError } from '@spinajs/exceptions';
20
+ import { Log, Logger } from '@spinajs/log';
18
21
  import { challengeId, challengeSecretPurpose, isChallengeNonce, newChallengeRid, parseChallengeId, verifyChallengeSignature } from '../challenge/challenge.js';
19
22
  import { checkPublicJwk, isValidKid, thumbprint } from '../jwk/keys.js';
20
- import { keysOptionsOf } from '../options/options.js';
23
+ import { DEFAULT_KEY_CACHE, keysOptionsOf } from '../options/options.js';
24
+ import { CachedKeyStore } from './cache.js';
21
25
  import { decodeCeiling, encodeCeiling, encodePrincipalRef, KeyStore } from './store.js';
22
26
  const OWNER_TYPES = ['user', 'service', 'agent'];
23
27
  const MAX_OWNER_ID = 64;
@@ -62,7 +66,10 @@ export const isUsableKey = (key, now) => !key.revokedAt && (!key.expiresAt || no
62
66
  * (A02), stored under a digest so anonymous input never becomes a long identity id.
63
67
  */
64
68
  export const loginChallengeIdentity = (kid) => ({ type: 'key', id: isValidKid(kid) ? kid : createHash('sha256').update(kid, 'utf8').digest('hex') });
65
- /** KeyRegistry over a KeyStore, challenges in SecretStore (lane notes D7, D12). */
69
+ /**
70
+ * KeyRegistry over a KeyStore, challenges in SecretStore (lane notes D7, D12). The store is wrapped in a
71
+ * {@link CachedKeyStore} unless `authn.keys.cache.ttlSeconds` is 0.
72
+ */
66
73
  let DefaultKeyRegistry = class DefaultKeyRegistry extends KeyRegistry {
67
74
  constructor(Deps) {
68
75
  super();
@@ -72,7 +79,15 @@ let DefaultKeyRegistry = class DefaultKeyRegistry extends KeyRegistry {
72
79
  this.maxStamped = 10_000;
73
80
  }
74
81
  get store() {
75
- return this.Deps?.store ?? this.Store;
82
+ const inner = this.Deps?.store ?? this.Store;
83
+ if (this.cached?.inner !== inner) {
84
+ const cache = this.options.cache ?? DEFAULT_KEY_CACHE;
85
+ this.cached = { inner, store: cache.ttlSeconds > 0 ? new CachedKeyStore(inner, cache, this.bus) : inner };
86
+ }
87
+ return this.cached.store;
88
+ }
89
+ get bus() {
90
+ return this.Deps?.bus ?? this.Bus;
76
91
  }
77
92
  get secrets() {
78
93
  return this.Deps?.secrets ?? this.Secrets;
@@ -155,12 +170,22 @@ let DefaultKeyRegistry = class DefaultKeyRegistry extends KeyRegistry {
155
170
  if (done === 'none') {
156
171
  return false;
157
172
  }
173
+ await this.changed(kid);
158
174
  if (done === 'already') {
159
175
  return true;
160
176
  }
161
177
  await this.publish(ctx, { type: 'key.revoke', outcome: 'success', identity: owner, ...(opts?.actor ? { actor: opts.actor } : {}), data: { kid } });
162
178
  return true;
163
179
  }
180
+ /** The store already evicted its own cache; this tells the other caches of the process. */
181
+ async changed(kid) {
182
+ try {
183
+ await this.bus?.publish({ kind: 'key', id: kid });
184
+ }
185
+ catch (err) {
186
+ this.Log.error({ error: err, kid }, 'Could not publish the revoke of key ${kid}');
187
+ }
188
+ }
164
189
  async byId(kid) {
165
190
  return isValidKid(kid) ? this.store.get(kid) : null;
166
191
  }
@@ -231,6 +256,14 @@ __decorate([
231
256
  Autoinject(AuthnThrottle),
232
257
  __metadata("design:type", AuthnThrottle)
233
258
  ], DefaultKeyRegistry.prototype, "Throttle", void 0);
259
+ __decorate([
260
+ Autoinject(CredentialChangeBus, { optional: true }),
261
+ __metadata("design:type", Object)
262
+ ], DefaultKeyRegistry.prototype, "Bus", void 0);
263
+ __decorate([
264
+ Logger('authn-keys'),
265
+ __metadata("design:type", Log)
266
+ ], DefaultKeyRegistry.prototype, "Log", void 0);
234
267
  DefaultKeyRegistry = __decorate([
235
268
  Injectable(KeyRegistry),
236
269
  __metadata("design:paramtypes", [Object])
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/registry/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,29 @@ export declare const AUTHN_KEYS_CONFIGURATION_SCHEMA: {
57
57
  };
58
58
  };
59
59
  };
60
+ signer: {
61
+ type: string;
62
+ nullable: boolean;
63
+ default: null;
64
+ description: string;
65
+ properties: {
66
+ current: {
67
+ type: string;
68
+ minLength: number;
69
+ description: string;
70
+ };
71
+ keys: {
72
+ type: string;
73
+ minItems: number;
74
+ items: {
75
+ type: string;
76
+ minLength: number;
77
+ };
78
+ description: string;
79
+ };
80
+ };
81
+ required: string[];
82
+ };
60
83
  httpSignature: {
61
84
  type: string;
62
85
  default: {};
@@ -83,6 +106,23 @@ export declare const AUTHN_KEYS_CONFIGURATION_SCHEMA: {
83
106
  };
84
107
  };
85
108
  };
109
+ cache: {
110
+ type: string;
111
+ default: {};
112
+ properties: {
113
+ ttlSeconds: {
114
+ type: string;
115
+ minimum: number;
116
+ default: number;
117
+ description: string;
118
+ };
119
+ maxEntries: {
120
+ type: string;
121
+ minimum: number;
122
+ default: number;
123
+ };
124
+ };
125
+ };
86
126
  };
87
127
  };
88
128
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,eAAO,MAAM,+BAA+B;;;;;;;YAM1B,IAAI;YAAW,QAAQ;YAAK,WAAW;YAAQ,KAAK;gBAAI,IAAI;gBAAY,IAAI;;YAAwB,OAAO;;;YAEvH,IAAI;YACJ,OAAO;YACP,UAAU;gBACR,UAAU;oBAAI,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAQ,OAAO;;gBACjE,QAAQ;oBAAI,IAAI;oBAAsB,SAAS;oBAAK,OAAO;oBAAQ,WAAW;;;;;YAIhF,IAAI;YACJ,OAAO;YACP,UAAU;gBACR,QAAQ;oBAAI,IAAI;oBAAsB,SAAS;oBAAK,OAAO;oBAAQ,WAAW;;gBAC9E,kBAAkB;oBAAI,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAO,OAAO;;gBACxE,WAAW;oBAAI,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAO,OAAO;;;;;;;;;oBAOhD,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAO,OAAO;;;oBACpD,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAO,OAAO;;;;;wBAhC5B,IAAI;wBAAY,SAAS;;;;;;;CAqCrE,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,eAAO,MAAM,+BAA+B;;;;;;;YAM1B,IAAI;YAAW,QAAQ;YAAK,WAAW;YAAQ,KAAK;gBAAI,IAAI;gBAAY,IAAI;;YAAwB,OAAO;;;YAEvH,IAAI;YACJ,OAAO;YACP,UAAU;gBACR,UAAU;oBAAI,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAQ,OAAO;;gBACjE,QAAQ;oBAAI,IAAI;oBAAsB,SAAS;oBAAK,OAAO;oBAAQ,WAAW;;;;;YAIhF,IAAI;YACJ,OAAO;YACP,UAAU;gBACR,QAAQ;oBAAI,IAAI;oBAAsB,SAAS;oBAAK,OAAO;oBAAQ,WAAW;;gBAC9E,kBAAkB;oBAAI,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAO,OAAO;;gBACxE,WAAW;oBAAI,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAO,OAAO;;;;;YAInE,IAAI;YACJ,QAAQ;YACR,OAAO;YACP,WAAW;YACX,UAAU;gBACR,OAAO;oBAAI,IAAI;oBAAY,SAAS;oBAAK,WAAW;;gBACpD,IAAI;oBAAI,IAAI;oBAAW,QAAQ;oBAAK,KAAK;wBAAI,IAAI;wBAAY,SAAS;;oBAAO,WAAW;;;YAE1F,QAAQ;;;;;;;oBAMW,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAO,OAAO;;;oBACpD,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAO,OAAO;;;;;wBA3C5B,IAAI;wBAAY,SAAS;;;;;;;YAgDhE,IAAI;YACJ,OAAO;YACP,UAAU;gBACR,UAAU;oBAAI,IAAI;oBAAa,OAAO;oBAAK,OAAO;oBAAM,WAAW;;gBACnE,UAAU;oBAAI,IAAI;oBAAa,OAAO;oBAAK,OAAO;;;;;CAIzD,CAAC"}
package/lib/mjs/schema.js CHANGED
@@ -24,6 +24,17 @@ export const AUTHN_KEYS_CONFIGURATION_SCHEMA = {
24
24
  skewSeconds: { type: 'integer', minimum: 0, maximum: 300, default: 30 },
25
25
  },
26
26
  },
27
+ signer: {
28
+ type: 'object',
29
+ nullable: true,
30
+ default: null,
31
+ description: 'Private signing keys for the JwsSigner (and its JWKS route); null registers no signer.',
32
+ properties: {
33
+ current: { type: 'string', minLength: 1, description: 'kid of the key that signs by default; one of the keys.' },
34
+ keys: { type: 'array', minItems: 1, items: { type: 'string', minLength: 1 }, description: 'Secret references the configuration resolves to private JWKs (JSON text), never inline keys.' },
35
+ },
36
+ required: ['current', 'keys'],
37
+ },
27
38
  httpSignature: {
28
39
  type: 'object',
29
40
  default: {},
@@ -33,6 +44,14 @@ export const AUTHN_KEYS_CONFIGURATION_SCHEMA = {
33
44
  requiredComponents: { ...stringList, default: ['@method', '@target-uri', 'content-digest'] },
34
45
  },
35
46
  },
47
+ cache: {
48
+ type: 'object',
49
+ default: {},
50
+ properties: {
51
+ ttlSeconds: { type: 'integer', minimum: 0, default: 10, description: 'Seconds KeyRegistry.byId serves a key from memory; 0 turns the cache off.' },
52
+ maxEntries: { type: 'integer', minimum: 1, default: 10000 },
53
+ },
54
+ },
36
55
  },
37
56
  };
38
57
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;AAE9E,kGAAkG;AAClG,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,GAAG,EAAE,8CAA8C;IACnD,oBAAoB,EAAE,YAAY;IAClC,WAAW,EAAE,uCAAuC;IACpD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;QAC/I,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;gBACxE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,4GAA4G,EAAE;aAC/L;SACF;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,2DAA2D,EAAE;gBAC7I,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;gBAC/E,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;aACxE;SACF;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;gBAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;gBACvE,kBAAkB,EAAE,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAE;aAC7F;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { JwsVerifier } from '@spinajs/authn/contracts';
1
+ import { JwsVerifier, NonceStore } from '@spinajs/authn/contracts';
2
2
  import type { AuthnContext, Credentials, StrategyOutcome, ThrottleKey } from '@spinajs/authn/contracts';
3
- import { KeyNonceStore } from '../nonce/store.js';
4
3
  import { KeyStrategy } from './keys.js';
5
4
  import type { KeyStrategyDeps } from './keys.js';
6
5
  export interface JwsAssertionStrategyDeps extends KeyStrategyDeps {
7
6
  readonly verifier?: JwsVerifier;
8
- readonly nonces?: KeyNonceStore;
7
+ readonly nonces?: NonceStore;
9
8
  }
10
9
  /**
11
10
  * Machine clients: `Authorization: Bearer <jws>` signed by a registered key (design §22.10, A17). Header typ
@@ -17,9 +16,9 @@ export declare class JwsAssertionStrategy extends KeyStrategy<JwsAssertionStrate
17
16
  readonly kinds: string[];
18
17
  readonly interactive = false;
19
18
  protected Verifier: JwsVerifier;
20
- protected Nonces: KeyNonceStore;
19
+ protected Nonces: NonceStore | undefined;
21
20
  protected get verifier(): JwsVerifier;
22
- protected get nonces(): KeyNonceStore;
21
+ protected get nonces(): NonceStore;
23
22
  /** The audience the assertions name; which strategies are listed decides that one is required, so this is a boot check, not a schema rule. */
24
23
  protected get audience(): string;
25
24
  resolve(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../../../src/strategies/assertion.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAgB,WAAW,EAAsC,eAAe,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM1J,OAAO,EAAE,aAAa,EAAY,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAA+E,MAAM,WAAW,CAAC;AACrH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAkBjD,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED;;;;GAIG;AACH,qBACa,oBAAqB,SAAQ,WAAW,CAAC,wBAAwB,CAAC;IAC7E,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,KAAK,WAAqB;IACnC,QAAQ,CAAC,WAAW,SAAS;IAG7B,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC;IAGhC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;IAEhC,SAAS,KAAK,QAAQ,IAAI,WAAW,CAEpC;IAED,SAAS,KAAK,MAAM,IAAI,aAAa,CAEpC;IAED,8IAA8I;IAC9I,SAAS,KAAK,QAAQ,IAAI,MAAM,CAM/B;IAEY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpC;IAED,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,SAAS,WAAW,EAAE,CAEtE;IAEK,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAwCxE;CACF"}
1
+ {"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../../../src/strategies/assertion.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAgB,WAAW,EAAsC,eAAe,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAO1J,OAAO,EAAE,WAAW,EAAkG,MAAM,WAAW,CAAC;AACxI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAkBjD,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBACa,oBAAqB,SAAQ,WAAW,CAAC,wBAAwB,CAAC;IAC7E,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,KAAK,WAAqB;IACnC,QAAQ,CAAC,WAAW,SAAS;IAG7B,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC;IAGhC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAEzC,SAAS,KAAK,QAAQ,IAAI,WAAW,CAEpC;IAED,SAAS,KAAK,MAAM,IAAI,UAAU,CAEjC;IAED,8IAA8I;IAC9I,SAAS,KAAK,QAAQ,IAAI,MAAM,CAM/B;IAEY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpC;IAED,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,SAAS,WAAW,EAAE,CAEtE;IAEK,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAwCxE;CACF"}
@@ -8,14 +8,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { Autoinject, Injectable } from '@spinajs/di';
11
- import { AuthenticationStrategy, JwsVerifier } from '@spinajs/authn/contracts';
11
+ import { AuthenticationStrategy, JwsVerifier, NonceStore } from '@spinajs/authn/contracts';
12
12
  import { _is_string, _max_length, _try_check_arg, isPlainObject } from '@spinajs/util';
13
13
  import { InvalidOption } from '@spinajs/exceptions';
14
14
  import { decodeB64url } from '../jwk/base64url.js';
15
15
  import { KEY_ALGORITHMS } from '../jwk/keys.js';
16
16
  import { parseStrictJson } from '../jws/json.js';
17
- import { KeyNonceStore, nonceKey } from '../nonce/store.js';
18
- import { KeyStrategy, MAX_CREDENTIAL_LENGTH, assertionIssuer, failure, keyThrottleKeys, usableKey } from './keys.js';
17
+ import { nonceKey } from './nonce-key.js';
18
+ import { KeyStrategy, MAX_CREDENTIAL_LENGTH, assertionIssuer, failure, keyThrottleKeys, requireNonceStore, usableKey } from './keys.js';
19
19
  const MAX_JTI = 128;
20
20
  const assertionClaims = (p) => (typeof p.jti === 'string' && p.jti.length > 0 && p.jti.length <= MAX_JTI ? p : null);
21
21
  function headerOf(jws) {
@@ -41,7 +41,7 @@ let JwsAssertionStrategy = class JwsAssertionStrategy extends KeyStrategy {
41
41
  return this.Deps?.verifier ?? this.Verifier;
42
42
  }
43
43
  get nonces() {
44
- return this.Deps?.nonces ?? this.Nonces;
44
+ return requireNonceStore(this.Deps?.nonces ?? this.Nonces, this.name);
45
45
  }
46
46
  /** The audience the assertions name; which strategies are listed decides that one is required, so this is a boot check, not a schema rule. */
47
47
  get audience() {
@@ -52,6 +52,7 @@ let JwsAssertionStrategy = class JwsAssertionStrategy extends KeyStrategy {
52
52
  return audience;
53
53
  }
54
54
  async resolve() {
55
+ void this.nonces;
55
56
  void this.audience;
56
57
  await super.resolve();
57
58
  }
@@ -105,8 +106,8 @@ __decorate([
105
106
  __metadata("design:type", JwsVerifier)
106
107
  ], JwsAssertionStrategy.prototype, "Verifier", void 0);
107
108
  __decorate([
108
- Autoinject(KeyNonceStore),
109
- __metadata("design:type", KeyNonceStore)
109
+ Autoinject(NonceStore, { optional: true }),
110
+ __metadata("design:type", Object)
110
111
  ], JwsAssertionStrategy.prototype, "Nonces", void 0);
111
112
  JwsAssertionStrategy = __decorate([
112
113
  Injectable(AuthenticationStrategy)
@@ -1 +1 @@
1
- {"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../../src/strategies/assertion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../../src/strategies/assertion.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import { NonceStore } from '@spinajs/authn/contracts';
1
2
  import type { AuthnContext, Credentials, KeyAlgorithm, SignedRequest, StrategyOutcome, ThrottleKey } from '@spinajs/authn/contracts';
2
3
  import type { SignatureInput } from '../httpsig/fields.js';
3
- import { KeyNonceStore } from '../nonce/store.js';
4
4
  import { KeyStrategy } from './keys.js';
5
5
  import type { KeyStrategyDeps } from './keys.js';
6
6
  interface Checked {
@@ -12,7 +12,7 @@ interface Checked {
12
12
  readonly alg?: KeyAlgorithm;
13
13
  }
14
14
  export interface HttpSignatureStrategyDeps extends KeyStrategyDeps {
15
- readonly nonces?: KeyNonceStore;
15
+ readonly nonces?: NonceStore;
16
16
  }
17
17
  /**
18
18
  * Per-request HTTP message signatures, an RFC 9421 subset (design §22.10, A18): one signature; `@method`,
@@ -23,8 +23,9 @@ export declare class HttpSignatureStrategy extends KeyStrategy<HttpSignatureStra
23
23
  readonly name = "keys-httpsig";
24
24
  readonly kinds: string[];
25
25
  readonly interactive = false;
26
- protected Nonces: KeyNonceStore;
27
- protected get nonces(): KeyNonceStore;
26
+ protected Nonces: NonceStore | undefined;
27
+ protected get nonces(): NonceStore;
28
+ resolve(): Promise<void>;
28
29
  throttleKeys(c: Credentials, ctx: AuthnContext): readonly ThrottleKey[];
29
30
  /** Everything that needs no key: the headers' form, the parameters, coverage, the digest and the time window. */
30
31
  protected check(req: SignedRequest, ctx: AuthnContext): Checked | null;
@@ -1 +1 @@
1
- {"version":3,"file":"httpsig.d.ts","sourceRoot":"","sources":["../../../src/strategies/httpsig.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIrI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAY,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAA8D,MAAM,WAAW,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAQjD,UAAU,OAAO;IACf,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAOD,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED;;;;GAIG;AACH,qBACa,qBAAsB,SAAQ,WAAW,CAAC,yBAAyB,CAAC;IAC/E,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,KAAK,WAAsB;IACpC,QAAQ,CAAC,WAAW,SAAS;IAG7B,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;IAEhC,SAAS,KAAK,MAAM,IAAI,aAAa,CAEpC;IAED,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,SAAS,WAAW,EAAE,CAKtE;IAED,iHAAiH;IACjH,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,GAAG,IAAI,CAuCrE;IAEK,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CA4BxE;CACF"}
1
+ {"version":3,"file":"httpsig.d.ts","sourceRoot":"","sources":["../../../src/strategies/httpsig.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIrI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAiF,MAAM,WAAW,CAAC;AACvH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAQjD,UAAU,OAAO;IACf,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAOD,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBACa,qBAAsB,SAAQ,WAAW,CAAC,yBAAyB,CAAC;IAC/E,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,KAAK,WAAsB;IACpC,QAAQ,CAAC,WAAW,SAAS;IAG7B,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAEzC,SAAS,KAAK,MAAM,IAAI,UAAU,CAEjC;IAEY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpC;IAED,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,SAAS,WAAW,EAAE,CAKtE;IAED,iHAAiH;IACjH,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,GAAG,IAAI,CAuCrE;IAEK,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CA4BxE;CACF"}
@@ -8,12 +8,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { Autoinject, Injectable } from '@spinajs/di';
11
- import { AuthenticationStrategy } from '@spinajs/authn/contracts';
11
+ import { AuthenticationStrategy, NonceStore } from '@spinajs/authn/contracts';
12
12
  import { verifySignature } from '../jwk/signature.js';
13
13
  import { digestMatches, lowerCaseHeaders, signatureBase } from '../httpsig/base.js';
14
14
  import { parseByteSequenceDictionary, parseSignatureInput } from '../httpsig/fields.js';
15
- import { KeyNonceStore, nonceKey } from '../nonce/store.js';
16
- import { KeyStrategy, MAX_CREDENTIAL_LENGTH, failure, keyThrottleKeys, usableKey } from './keys.js';
15
+ import { nonceKey } from './nonce-key.js';
16
+ import { KeyStrategy, MAX_CREDENTIAL_LENGTH, failure, keyThrottleKeys, requireNonceStore, usableKey } from './keys.js';
17
17
  /** RFC 9421 algorithm names; the `alg` parameter is optional and, when sent, must name the key's algorithm. */
18
18
  const ALG_PARAM = { ed25519: 'EdDSA', 'ecdsa-p256-sha256': 'ES256' };
19
19
  const PARAMS = ['created', 'expires', 'nonce', 'keyid', 'alg'];
@@ -36,7 +36,11 @@ let HttpSignatureStrategy = class HttpSignatureStrategy extends KeyStrategy {
36
36
  this.interactive = false;
37
37
  }
38
38
  get nonces() {
39
- return this.Deps?.nonces ?? this.Nonces;
39
+ return requireNonceStore(this.Deps?.nonces ?? this.Nonces, this.name);
40
+ }
41
+ async resolve() {
42
+ void this.nonces;
43
+ await super.resolve();
40
44
  }
41
45
  throttleKeys(c, ctx) {
42
46
  const req = c.kind === 'http-signature' && isRequest(c.request) ? c.request : null;
@@ -114,8 +118,8 @@ let HttpSignatureStrategy = class HttpSignatureStrategy extends KeyStrategy {
114
118
  }
115
119
  };
116
120
  __decorate([
117
- Autoinject(KeyNonceStore),
118
- __metadata("design:type", KeyNonceStore)
121
+ Autoinject(NonceStore, { optional: true }),
122
+ __metadata("design:type", Object)
119
123
  ], HttpSignatureStrategy.prototype, "Nonces", void 0);
120
124
  HttpSignatureStrategy = __decorate([
121
125
  Injectable(AuthenticationStrategy)