@venizia/ignis 0.2.0-0 → 0.2.0-10

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 (177) hide show
  1. package/README.md +0 -1
  2. package/dist/base/applications/server.d.ts +1 -1
  3. package/dist/base/applications/server.d.ts.map +1 -1
  4. package/dist/base/applications/server.js +1 -1
  5. package/dist/base/applications/server.js.map +1 -1
  6. package/dist/base/controllers/grpc/abstract.d.ts +1 -1
  7. package/dist/base/controllers/grpc/abstract.d.ts.map +1 -1
  8. package/dist/base/controllers/grpc/abstract.js +12 -10
  9. package/dist/base/controllers/grpc/abstract.js.map +1 -1
  10. package/dist/base/controllers/grpc/adapter.d.ts +2 -1
  11. package/dist/base/controllers/grpc/adapter.d.ts.map +1 -1
  12. package/dist/base/controllers/grpc/adapter.js +2 -1
  13. package/dist/base/controllers/grpc/adapter.js.map +1 -1
  14. package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts +11 -1
  15. package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts.map +1 -1
  16. package/dist/base/middlewares/request-spy/request-spy.middleware.js +13 -5
  17. package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
  18. package/dist/components/api-reference/common/keys.d.ts +0 -5
  19. package/dist/components/api-reference/common/keys.d.ts.map +1 -1
  20. package/dist/components/api-reference/common/keys.js +1 -7
  21. package/dist/components/api-reference/common/keys.js.map +1 -1
  22. package/dist/components/api-reference/common/types.d.ts +1 -2
  23. package/dist/components/api-reference/common/types.d.ts.map +1 -1
  24. package/dist/components/api-reference/component.d.ts +0 -4
  25. package/dist/components/api-reference/component.d.ts.map +1 -1
  26. package/dist/components/api-reference/component.js +11 -9
  27. package/dist/components/api-reference/component.js.map +1 -1
  28. package/dist/components/api-reference/ui-factory.d.ts +5 -2
  29. package/dist/components/api-reference/ui-factory.d.ts.map +1 -1
  30. package/dist/components/api-reference/ui-factory.js +34 -4
  31. package/dist/components/api-reference/ui-factory.js.map +1 -1
  32. package/dist/components/auth/authenticate/component.d.ts +10 -1
  33. package/dist/components/auth/authenticate/component.d.ts.map +1 -1
  34. package/dist/components/auth/authenticate/component.js +79 -25
  35. package/dist/components/auth/authenticate/component.js.map +1 -1
  36. package/dist/components/auth/authenticate/controllers/index.d.ts +1 -0
  37. package/dist/components/auth/authenticate/controllers/index.d.ts.map +1 -1
  38. package/dist/components/auth/authenticate/controllers/index.js +1 -0
  39. package/dist/components/auth/authenticate/controllers/index.js.map +1 -1
  40. package/dist/components/auth/authenticate/controllers/service-certs/controller.d.ts +10 -0
  41. package/dist/components/auth/authenticate/controllers/service-certs/controller.d.ts.map +1 -0
  42. package/dist/components/auth/authenticate/controllers/service-certs/controller.js +50 -0
  43. package/dist/components/auth/authenticate/controllers/service-certs/controller.js.map +1 -0
  44. package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts +73 -0
  45. package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts.map +1 -0
  46. package/dist/components/auth/authenticate/controllers/service-certs/definitions.js +34 -0
  47. package/dist/components/auth/authenticate/controllers/service-certs/definitions.js.map +1 -0
  48. package/dist/components/auth/authenticate/controllers/service-certs/index.d.ts +3 -0
  49. package/dist/components/auth/authenticate/controllers/service-certs/index.d.ts.map +1 -0
  50. package/dist/components/auth/authenticate/controllers/service-certs/index.js +19 -0
  51. package/dist/components/auth/authenticate/controllers/service-certs/index.js.map +1 -0
  52. package/dist/components/auth/authenticate/services/bearer/abstract.service.d.ts +25 -4
  53. package/dist/components/auth/authenticate/services/bearer/abstract.service.d.ts.map +1 -1
  54. package/dist/components/auth/authenticate/services/bearer/abstract.service.js +53 -14
  55. package/dist/components/auth/authenticate/services/bearer/abstract.service.js.map +1 -1
  56. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts +18 -1
  57. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts.map +1 -1
  58. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js +40 -10
  59. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js.map +1 -1
  60. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts +1 -1
  61. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts.map +1 -1
  62. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js +4 -5
  63. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js.map +1 -1
  64. package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts +2 -1
  65. package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts.map +1 -1
  66. package/dist/components/auth/authenticate/services/bearer/jws.service.js +7 -6
  67. package/dist/components/auth/authenticate/services/bearer/jws.service.js.map +1 -1
  68. package/dist/components/auth/authenticate/services/index.d.ts +1 -0
  69. package/dist/components/auth/authenticate/services/index.d.ts.map +1 -1
  70. package/dist/components/auth/authenticate/services/index.js +1 -0
  71. package/dist/components/auth/authenticate/services/index.js.map +1 -1
  72. package/dist/components/auth/authenticate/services/service/index.d.ts +3 -0
  73. package/dist/components/auth/authenticate/services/service/index.d.ts.map +1 -0
  74. package/dist/components/auth/authenticate/services/service/index.js +19 -0
  75. package/dist/components/auth/authenticate/services/service/index.js.map +1 -0
  76. package/dist/components/auth/authenticate/services/service/signer.service.d.ts +46 -0
  77. package/dist/components/auth/authenticate/services/service/signer.service.d.ts.map +1 -0
  78. package/dist/components/auth/authenticate/services/service/signer.service.js +135 -0
  79. package/dist/components/auth/authenticate/services/service/signer.service.js.map +1 -0
  80. package/dist/components/auth/authenticate/services/service/verifier.service.d.ts +40 -0
  81. package/dist/components/auth/authenticate/services/service/verifier.service.d.ts.map +1 -0
  82. package/dist/components/auth/authenticate/services/service/verifier.service.js +165 -0
  83. package/dist/components/auth/authenticate/services/service/verifier.service.js.map +1 -0
  84. package/dist/components/auth/authenticate/strategies/index.d.ts +1 -0
  85. package/dist/components/auth/authenticate/strategies/index.d.ts.map +1 -1
  86. package/dist/components/auth/authenticate/strategies/index.js +1 -0
  87. package/dist/components/auth/authenticate/strategies/index.js.map +1 -1
  88. package/dist/components/auth/authenticate/strategies/service.strategy.d.ts +19 -0
  89. package/dist/components/auth/authenticate/strategies/service.strategy.d.ts.map +1 -0
  90. package/dist/components/auth/authenticate/strategies/service.strategy.js +73 -0
  91. package/dist/components/auth/authenticate/strategies/service.strategy.js.map +1 -0
  92. package/dist/components/auth/authorize/adapters/base-filtered.d.ts.map +1 -1
  93. package/dist/components/auth/authorize/adapters/base-filtered.js +5 -8
  94. package/dist/components/auth/authorize/adapters/base-filtered.js.map +1 -1
  95. package/dist/components/auth/authorize/adapters/connector.d.ts +10 -0
  96. package/dist/components/auth/authorize/adapters/connector.d.ts.map +1 -0
  97. package/dist/components/auth/authorize/adapters/connector.js +20 -0
  98. package/dist/components/auth/authorize/adapters/connector.js.map +1 -0
  99. package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts +52 -0
  100. package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts.map +1 -0
  101. package/dist/components/auth/authorize/adapters/custom-grant-expander.js +111 -0
  102. package/dist/components/auth/authorize/adapters/custom-grant-expander.js.map +1 -0
  103. package/dist/components/auth/authorize/adapters/index.d.ts +2 -0
  104. package/dist/components/auth/authorize/adapters/index.d.ts.map +1 -1
  105. package/dist/components/auth/authorize/adapters/index.js +2 -0
  106. package/dist/components/auth/authorize/adapters/index.js.map +1 -1
  107. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts +64 -37
  108. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts.map +1 -1
  109. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js +69 -76
  110. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js.map +1 -1
  111. package/dist/components/auth/authorize/component.d.ts.map +1 -1
  112. package/dist/components/auth/authorize/component.js +3 -0
  113. package/dist/components/auth/authorize/component.js.map +1 -1
  114. package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts +7 -36
  115. package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -1
  116. package/dist/components/auth/authorize/enforcers/casbin.enforcer.js +48 -117
  117. package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
  118. package/dist/components/auth/authorize/enforcers/index.d.ts +2 -1
  119. package/dist/components/auth/authorize/enforcers/index.d.ts.map +1 -1
  120. package/dist/components/auth/authorize/enforcers/index.js +2 -1
  121. package/dist/components/auth/authorize/enforcers/index.js.map +1 -1
  122. package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts +26 -0
  123. package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts.map +1 -0
  124. package/dist/components/auth/authorize/enforcers/policy-line-codec.js +57 -0
  125. package/dist/components/auth/authorize/enforcers/policy-line-codec.js.map +1 -0
  126. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.d.ts +46 -0
  127. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.d.ts.map +1 -0
  128. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js +98 -0
  129. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js.map +1 -0
  130. package/dist/components/auth/authorize/index.d.ts +1 -0
  131. package/dist/components/auth/authorize/index.d.ts.map +1 -1
  132. package/dist/components/auth/authorize/index.js +1 -0
  133. package/dist/components/auth/authorize/index.js.map +1 -1
  134. package/dist/components/auth/authorize/role-managers/base.d.ts +34 -0
  135. package/dist/components/auth/authorize/role-managers/base.d.ts.map +1 -0
  136. package/dist/components/auth/authorize/role-managers/base.js +76 -0
  137. package/dist/components/auth/authorize/role-managers/base.js.map +1 -0
  138. package/dist/components/auth/authorize/role-managers/domain-hierarchy.d.ts +28 -0
  139. package/dist/components/auth/authorize/role-managers/domain-hierarchy.d.ts.map +1 -0
  140. package/dist/components/auth/authorize/role-managers/domain-hierarchy.js +77 -0
  141. package/dist/components/auth/authorize/role-managers/domain-hierarchy.js.map +1 -0
  142. package/dist/components/auth/authorize/role-managers/index.d.ts +5 -0
  143. package/dist/components/auth/authorize/role-managers/index.d.ts.map +1 -0
  144. package/dist/components/auth/authorize/role-managers/index.js +21 -0
  145. package/dist/components/auth/authorize/role-managers/index.js.map +1 -0
  146. package/dist/components/auth/authorize/role-managers/membership.d.ts +21 -0
  147. package/dist/components/auth/authorize/role-managers/membership.d.ts.map +1 -0
  148. package/dist/components/auth/authorize/role-managers/membership.js +69 -0
  149. package/dist/components/auth/authorize/role-managers/membership.js.map +1 -0
  150. package/dist/components/auth/authorize/{enforcers/resource-role-manager.d.ts → role-managers/resource.d.ts} +3 -9
  151. package/dist/components/auth/authorize/role-managers/resource.d.ts.map +1 -0
  152. package/dist/components/auth/authorize/{enforcers/resource-role-manager.js → role-managers/resource.js} +9 -21
  153. package/dist/components/auth/authorize/role-managers/resource.js.map +1 -0
  154. package/dist/components/auth/models/entities/policy-definition.model.d.ts +28 -14
  155. package/dist/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
  156. package/dist/components/auth/models/entities/policy-definition.model.js +18 -10
  157. package/dist/components/auth/models/entities/policy-definition.model.js.map +1 -1
  158. package/dist/components/auth/models/entities/user.model.d.ts +2 -2
  159. package/dist/components/mail/services/generator.service.d.ts +6 -3
  160. package/dist/components/mail/services/generator.service.d.ts.map +1 -1
  161. package/dist/components/mail/services/generator.service.js +13 -4
  162. package/dist/components/mail/services/generator.service.js.map +1 -1
  163. package/dist/components/request-tracker/component.d.ts +1 -1
  164. package/dist/components/request-tracker/component.d.ts.map +1 -1
  165. package/dist/components/request-tracker/component.js +1 -1
  166. package/dist/components/request-tracker/component.js.map +1 -1
  167. package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
  168. package/dist/components/static-asset/controller/factory.js +5 -1
  169. package/dist/components/static-asset/controller/factory.js.map +1 -1
  170. package/dist/components/static-asset/models/base.model.d.ts +4 -4
  171. package/dist/utilities/network.utility.d.ts +9 -0
  172. package/dist/utilities/network.utility.d.ts.map +1 -1
  173. package/dist/utilities/network.utility.js +2 -4
  174. package/dist/utilities/network.utility.js.map +1 -1
  175. package/package.json +8 -8
  176. package/dist/components/auth/authorize/enforcers/resource-role-manager.d.ts.map +0 -1
  177. package/dist/components/auth/authorize/enforcers/resource-role-manager.js.map +0 -1
@@ -14,15 +14,15 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  var AuthenticateComponent_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.AuthenticateComponent = void 0;
17
- const ignis_kernel_1 = require("@venizia/ignis-kernel");
18
- const ignis_kernel_2 = require("@venizia/ignis-kernel");
19
- const ignis_kernel_3 = require("@venizia/ignis-kernel");
20
- const ignis_kernel_4 = require("@venizia/ignis-kernel");
21
17
  const core_1 = require("@venizia/ignis-helpers/core");
22
18
  const ignis_inversion_1 = require("@venizia/ignis-inversion");
23
- const ignis_kernel_5 = require("@venizia/ignis-kernel");
19
+ const ignis_kernel_1 = require("@venizia/ignis-kernel");
24
20
  const controllers_1 = require("./controllers");
21
+ const service_certs_1 = require("./controllers/service-certs");
25
22
  const services_1 = require("./services");
23
+ const signer_service_1 = require("./services/service/signer.service");
24
+ const verifier_service_1 = require("./services/service/verifier.service");
25
+ const service_strategy_1 = require("./strategies/service.strategy");
26
26
  const DEFAULT_SECRET = 'unknown_secret';
27
27
  let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponent extends ignis_kernel_1.BaseComponent {
28
28
  constructor(application) {
@@ -30,8 +30,8 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
30
30
  scope: AuthenticateComponent_1.name,
31
31
  initDefault: { enable: true, container: application },
32
32
  bindings: {
33
- [ignis_kernel_5.AuthenticateBindingKeys.REST_OPTIONS]: ignis_inversion_1.Binding.bind({
34
- key: ignis_kernel_5.AuthenticateBindingKeys.REST_OPTIONS,
33
+ [ignis_kernel_1.AuthenticateBindingKeys.REST_OPTIONS]: ignis_inversion_1.Binding.bind({
34
+ key: ignis_kernel_1.AuthenticateBindingKeys.REST_OPTIONS,
35
35
  }).toValue({ useAuthController: false }),
36
36
  },
37
37
  });
@@ -39,30 +39,36 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
39
39
  }
40
40
  binding() {
41
41
  const jwtOptions = this.application.get({
42
- key: ignis_kernel_5.AuthenticateBindingKeys.JWT_OPTIONS,
42
+ key: ignis_kernel_1.AuthenticateBindingKeys.JWT_OPTIONS,
43
43
  isOptional: true,
44
44
  });
45
45
  const basicOptions = this.application.get({
46
- key: ignis_kernel_5.AuthenticateBindingKeys.BASIC_OPTIONS,
46
+ key: ignis_kernel_1.AuthenticateBindingKeys.BASIC_OPTIONS,
47
47
  isOptional: true,
48
48
  });
49
49
  const restOptions = this.application.get({
50
- key: ignis_kernel_5.AuthenticateBindingKeys.REST_OPTIONS,
50
+ key: ignis_kernel_1.AuthenticateBindingKeys.REST_OPTIONS,
51
+ isOptional: true,
52
+ });
53
+ const serviceOptions = this.application.get({
54
+ key: ignis_kernel_1.AuthenticateBindingKeys.SERVICE_OPTIONS,
51
55
  isOptional: true,
52
56
  });
53
- if (!jwtOptions && !basicOptions) {
57
+ // A service that only VERIFIES assertions needs neither jwt nor basic - and that application,
58
+ // an IGNIS app consuming no user tokens at all, is exactly what the service strategy is for.
59
+ if (!jwtOptions && !basicOptions && !serviceOptions) {
54
60
  throw (0, core_1.getError)({
55
- message: '[AuthenticateComponent] At least one of jwtOptions or basicOptions must be provided',
61
+ message: '[AuthenticateComponent] At least one of jwtOptions, basicOptions or serviceOptions must be provided',
56
62
  });
57
63
  }
58
- const options = { restOptions, jwtOptions, basicOptions };
64
+ const options = { restOptions, jwtOptions, basicOptions, serviceOptions };
59
65
  if (jwtOptions) {
60
66
  switch (jwtOptions.standard) {
61
- case ignis_kernel_5.JOSEStandards.JWS: {
67
+ case ignis_kernel_1.JOSEStandards.JWS: {
62
68
  this.defineJWSAuth({ options: jwtOptions.options });
63
69
  break;
64
70
  }
65
- case ignis_kernel_5.JOSEStandards.JWKS: {
71
+ case ignis_kernel_1.JOSEStandards.JWKS: {
66
72
  this.defineJWKSAuth({ options: jwtOptions.options });
67
73
  break;
68
74
  }
@@ -74,6 +80,7 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
74
80
  }
75
81
  }
76
82
  this.defineBasicAuth({ basicOptions });
83
+ this.defineServiceAuth({ serviceOptions });
77
84
  this.defineControllers({ options });
78
85
  this.defineOAuth2();
79
86
  }
@@ -91,7 +98,7 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
91
98
  });
92
99
  }
93
100
  this.application
94
- .bind({ key: ignis_kernel_5.AuthenticateBindingKeys.JWT_OPTIONS })
101
+ .bind({ key: ignis_kernel_1.AuthenticateBindingKeys.JWT_OPTIONS })
95
102
  .toValue(jwsOptions);
96
103
  this.application.service(services_1.JWSTokenService);
97
104
  this.logger.for(this.defineJWSAuth.name).info('JWS authentication configured');
@@ -99,16 +106,16 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
99
106
  defineJWKSAuth(opts) {
100
107
  const { options: jwksOptions } = opts;
101
108
  switch (jwksOptions.mode) {
102
- case ignis_kernel_5.JWKSModes.ISSUER: {
109
+ case ignis_kernel_1.JWKSModes.ISSUER: {
103
110
  const issuerOpts = jwksOptions;
104
111
  if (!issuerOpts.keys?.private || !issuerOpts.keys?.public) {
105
112
  throw (0, core_1.getError)({
106
113
  message: '[defineJWKSAuth] keys.private and keys.public are required for issuer mode',
107
114
  });
108
115
  }
109
- if (!issuerOpts.keys?.format || !ignis_kernel_5.JWKSKeyFormats.isValid(issuerOpts.keys.format)) {
116
+ if (!issuerOpts.keys?.format || !ignis_kernel_1.JWKSKeyFormats.isValid(issuerOpts.keys.format)) {
110
117
  throw (0, core_1.getError)({
111
- message: `[defineJWKSAuth] keys.format is required and must be one of: ${[...ignis_kernel_5.JWKSKeyFormats.SCHEME_SET].join(', ')}`,
118
+ message: `[defineJWKSAuth] keys.format is required and must be one of: ${[...ignis_kernel_1.JWKSKeyFormats.SCHEME_SET].join(', ')}`,
112
119
  });
113
120
  }
114
121
  if (!issuerOpts.kid) {
@@ -120,24 +127,24 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
120
127
  });
121
128
  }
122
129
  this.application
123
- .bind({ key: ignis_kernel_5.AuthenticateBindingKeys.JWKS_OPTIONS })
130
+ .bind({ key: ignis_kernel_1.AuthenticateBindingKeys.JWKS_OPTIONS })
124
131
  .toValue(issuerOpts);
125
132
  this.application.service(services_1.JWKSIssuerTokenService);
126
133
  // Path depends on a runtime option, so @controller can't be applied statically — decorate here instead.
127
- Reflect.decorate([(0, ignis_kernel_3.controller)({ path: issuerOpts?.rest?.path ?? '/certs' })], controllers_1.JWKSController);
134
+ Reflect.decorate([(0, ignis_kernel_1.controller)({ path: issuerOpts?.rest?.path ?? '/certs' })], controllers_1.JWKSController);
128
135
  this.application.controller(controllers_1.JWKSController);
129
136
  this.logger
130
137
  .for(this.defineJWKSAuth.name)
131
138
  .info('JWKS issuer configured with /certs endpoint');
132
139
  break;
133
140
  }
134
- case ignis_kernel_5.JWKSModes.VERIFIER: {
141
+ case ignis_kernel_1.JWKSModes.VERIFIER: {
135
142
  const verifierOpts = jwksOptions;
136
143
  if (!verifierOpts.jwksUrl) {
137
144
  throw (0, core_1.getError)({ message: '[defineJWKSAuth] jwksUrl is required for verifier mode' });
138
145
  }
139
146
  this.application
140
- .bind({ key: ignis_kernel_5.AuthenticateBindingKeys.JWKS_OPTIONS })
147
+ .bind({ key: ignis_kernel_1.AuthenticateBindingKeys.JWKS_OPTIONS })
141
148
  .toValue(verifierOpts);
142
149
  this.application.service(services_1.JWKSVerifierTokenService);
143
150
  this.logger.for(this.defineJWKSAuth.name).info('JWKS verifier configured');
@@ -151,6 +158,53 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
151
158
  }
152
159
  }
153
160
  }
161
+ /**
162
+ * Service-to-service authentication. Absent options mean no strategy is registered and no route is
163
+ * mounted, so an application that never sets them is byte-identical to today.
164
+ *
165
+ * The certs route is mounted only when SIGNING keys are present. Most services are called and
166
+ * never call; publishing a key set for a service that signs nothing advertises a capability it
167
+ * does not have.
168
+ */
169
+ defineServiceAuth(opts) {
170
+ const { serviceOptions } = opts;
171
+ if (!serviceOptions) {
172
+ this.logger
173
+ .for(this.defineServiceAuth.name)
174
+ .debug('serviceOptions not provided, skipping service authentication');
175
+ return;
176
+ }
177
+ if (!serviceOptions.name) {
178
+ throw (0, core_1.getError)({
179
+ message: '[defineServiceAuth] name is required | it is the issuer this service stamps and the audience it demands',
180
+ });
181
+ }
182
+ if (!serviceOptions.resolvePrincipal) {
183
+ throw (0, core_1.getError)({
184
+ message: '[defineServiceAuth] resolvePrincipal is required | the framework proves WHICH SERVICE called, the application decides who that acts as',
185
+ });
186
+ }
187
+ this.application.service(verifier_service_1.ServiceAssertionVerifierService);
188
+ if (serviceOptions.keys) {
189
+ this.application.service(signer_service_1.ServiceAssertionSignerService);
190
+ const restPath = serviceOptions.rest?.path ?? ignis_kernel_1.ServiceAssertion.DEFAULT_REST_PATH;
191
+ this.application
192
+ .bind({ key: ignis_kernel_1.AuthenticateBindingKeys.SERVICE_CERTS_PATH })
193
+ .toValue(restPath);
194
+ // Path depends on a runtime option, so @controller cannot be applied statically.
195
+ Reflect.decorate([(0, ignis_kernel_1.controller)({ path: restPath })], service_certs_1.ServiceCertsController);
196
+ this.application.controller(service_certs_1.ServiceCertsController);
197
+ }
198
+ ignis_kernel_1.AuthenticationStrategyRegistry.getInstance().register({
199
+ container: this.application,
200
+ strategies: [
201
+ { name: ignis_kernel_1.Authentication.STRATEGY_SERVICE, strategy: service_strategy_1.ServiceAuthenticationStrategy },
202
+ ],
203
+ });
204
+ this.logger
205
+ .for(this.defineServiceAuth.name)
206
+ .info('Service authentication configured | name: %s | signs: %s | callers: %s', serviceOptions.name, Boolean(serviceOptions.keys), Object.keys(serviceOptions.callers ?? {}).join(', ') || 'none');
207
+ }
154
208
  defineBasicAuth(opts) {
155
209
  const { basicOptions } = opts;
156
210
  if (!basicOptions) {
@@ -165,7 +219,7 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
165
219
  });
166
220
  }
167
221
  this.application
168
- .bind({ key: ignis_kernel_5.AuthenticateBindingKeys.BASIC_OPTIONS })
222
+ .bind({ key: ignis_kernel_1.AuthenticateBindingKeys.BASIC_OPTIONS })
169
223
  .toValue(basicOptions);
170
224
  this.application.service(services_1.BasicTokenService);
171
225
  this.logger.for(this.defineBasicAuth.name).info('Basic authentication configured');
@@ -191,7 +245,7 @@ let AuthenticateComponent = AuthenticateComponent_1 = class AuthenticateComponen
191
245
  };
192
246
  exports.AuthenticateComponent = AuthenticateComponent;
193
247
  exports.AuthenticateComponent = AuthenticateComponent = AuthenticateComponent_1 = __decorate([
194
- __param(0, (0, ignis_kernel_2.inject)({ key: ignis_kernel_4.CoreBindings.APPLICATION_INSTANCE })),
248
+ __param(0, (0, ignis_kernel_1.inject)({ key: ignis_kernel_1.CoreBindings.APPLICATION_INSTANCE })),
195
249
  __metadata("design:paramtypes", [Function])
196
250
  ], AuthenticateComponent);
197
251
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/auth/authenticate/component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/auth/authenticate/component.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from './factory';
2
2
  export * from './jwks';
3
+ export * from './service-certs';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authenticate/controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authenticate/controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC"}
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./factory"), exports);
18
18
  __exportStar(require("./jwks"), exports);
19
+ __exportStar(require("./service-certs"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/auth/authenticate/controllers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/auth/authenticate/controllers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,yCAAuB;AACvB,kDAAgC"}
@@ -0,0 +1,10 @@
1
+ import { BaseRestController } from '@venizia/ignis-kernel';
2
+ import { ValueOrPromise } from '@venizia/ignis-helpers/common';
3
+ import { ServiceAssertionSignerService } from '../../services/service/signer.service';
4
+ /** Publishes this service's assertion-signing public key. Mounted only when signing keys are configured. */
5
+ export declare class ServiceCertsController extends BaseRestController {
6
+ private readonly signer;
7
+ constructor(signer: ServiceAssertionSignerService, path: string);
8
+ binding(): ValueOrPromise<void>;
9
+ }
10
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/service-certs/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAGnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAQ,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAGtF,4GAA4G;AAC5G,qBAAa,sBAAuB,SAAQ,kBAAkB;IAQ1D,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,6BAA6B,EAEtD,IAAI,EAAE,MAAM;IAKL,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC;CAUzC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var ServiceCertsController_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ServiceCertsController = void 0;
17
+ const ignis_kernel_1 = require("@venizia/ignis-kernel");
18
+ const common_1 = require("@venizia/ignis-helpers/common");
19
+ const ignis_inversion_1 = require("@venizia/ignis-inversion");
20
+ const signer_service_1 = require("../../services/service/signer.service");
21
+ const definitions_1 = require("./definitions");
22
+ /** Publishes this service's assertion-signing public key. Mounted only when signing keys are configured. */
23
+ let ServiceCertsController = ServiceCertsController_1 = class ServiceCertsController extends ignis_kernel_1.BaseRestController {
24
+ constructor(signer, path) {
25
+ super({ scope: ServiceCertsController_1.name, path, isStrict: true });
26
+ this.signer = signer;
27
+ }
28
+ binding() {
29
+ this.defineRoute({
30
+ configs: definitions_1.ServiceCertsRouteConfigs.GET_SERVICE_CERTS,
31
+ handler: async (context) => {
32
+ const jwks = await this.signer.getPublicJWKS();
33
+ context.header('Cache-Control', 'public, max-age=600, stale-while-revalidate=86400');
34
+ return context.json(jwks, common_1.HTTP.ResultCodes.RS_2.Ok);
35
+ },
36
+ });
37
+ }
38
+ };
39
+ exports.ServiceCertsController = ServiceCertsController;
40
+ exports.ServiceCertsController = ServiceCertsController = ServiceCertsController_1 = __decorate([
41
+ __param(0, (0, ignis_kernel_1.inject)({
42
+ key: ignis_inversion_1.BindingKeys.build({
43
+ namespace: ignis_kernel_1.BindingNamespaces.SERVICE,
44
+ key: signer_service_1.ServiceAssertionSignerService.name,
45
+ }),
46
+ })),
47
+ __param(1, (0, ignis_kernel_1.inject)({ key: ignis_kernel_1.AuthenticateBindingKeys.SERVICE_CERTS_PATH })),
48
+ __metadata("design:paramtypes", [signer_service_1.ServiceAssertionSignerService, String])
49
+ ], ServiceCertsController);
50
+ //# sourceMappingURL=controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/service-certs/controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAK+B;AAC/B,0DAAqE;AACrE,8DAAuD;AACvD,0EAAsF;AACtF,+CAAyD;AAEzD,4GAA4G;AAC5G,IAAa,sBAAsB,8BAAnC,MAAa,sBAAuB,SAAQ,iCAAkB;IAC5D,YAOmB,MAAqC,EAEtD,IAAY;QAEZ,KAAK,CAAC,EAAE,KAAK,EAAE,wBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAJnD,WAAM,GAAN,MAAM,CAA+B;IAKxD,CAAC;IAEQ,OAAO;QACd,IAAI,CAAC,WAAW,CAAC;YACf,OAAO,EAAE,sCAAwB,CAAC,iBAAiB;YACnD,OAAO,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;gBACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC/C,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC,CAAC;gBACrF,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAzBY,wDAAsB;iCAAtB,sBAAsB;IAE9B,WAAA,IAAA,qBAAM,EAAC;QACN,GAAG,EAAE,6BAAW,CAAC,KAAK,CAAC;YACrB,SAAS,EAAE,gCAAiB,CAAC,OAAO;YACpC,GAAG,EAAE,8CAA6B,CAAC,IAAI;SACxC,CAAC;KACH,CAAC,CAAA;IAED,WAAA,IAAA,qBAAM,EAAC,EAAE,GAAG,EAAE,sCAAuB,CAAC,kBAAkB,EAAE,CAAC,CAAA;qCADnC,8CAA6B;GAR7C,sBAAsB,CAyBlC"}
@@ -0,0 +1,73 @@
1
+ import { z } from '@hono/zod-openapi';
2
+ /**
3
+ * Unauthenticated by design: it serves the PUBLIC key a callee needs to verify this service's
4
+ * assertions. Whoever can reach it learns only which key signs, which is what verification requires.
5
+ *
6
+ * The schema names public members only. That is documentation, not a filter - a zod response schema
7
+ * does not strip anything - so the guard that private material never gets here lives in the signer.
8
+ */
9
+ export declare const ServiceCertsRouteConfigs: {
10
+ readonly GET_SERVICE_CERTS: {
11
+ readonly path: "/";
12
+ readonly method: "get";
13
+ readonly responses: {
14
+ 200: {
15
+ description: string;
16
+ content: {
17
+ 'application/json': {
18
+ schema: z.ZodObject<{
19
+ keys: z.ZodArray<z.ZodObject<{
20
+ kty: z.ZodString;
21
+ kid: z.ZodOptional<z.ZodString>;
22
+ use: z.ZodOptional<z.ZodString>;
23
+ alg: z.ZodOptional<z.ZodString>;
24
+ crv: z.ZodOptional<z.ZodString>;
25
+ x: z.ZodOptional<z.ZodString>;
26
+ }, z.core.$strip>>;
27
+ }, z.core.$strip>;
28
+ };
29
+ };
30
+ required: boolean | undefined;
31
+ } | {
32
+ headers: never;
33
+ description: string;
34
+ content: {
35
+ 'application/json': {
36
+ schema: z.ZodObject<{
37
+ keys: z.ZodArray<z.ZodObject<{
38
+ kty: z.ZodString;
39
+ kid: z.ZodOptional<z.ZodString>;
40
+ use: z.ZodOptional<z.ZodString>;
41
+ alg: z.ZodOptional<z.ZodString>;
42
+ crv: z.ZodOptional<z.ZodString>;
43
+ x: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strip>>;
45
+ }, z.core.$strip>;
46
+ };
47
+ };
48
+ required: boolean | undefined;
49
+ };
50
+ "4xx | 5xx": {
51
+ description: string;
52
+ content: {
53
+ "application/json": {
54
+ schema: z.ZodObject<{
55
+ statusCode: z.ZodOptional<z.ZodNumber>;
56
+ message: z.ZodString;
57
+ normalized: z.ZodOptional<z.ZodObject<{
58
+ text: z.ZodString;
59
+ code: z.ZodString;
60
+ args: z.ZodRecord<z.ZodString, z.ZodAny>;
61
+ }, z.core.$strip>>;
62
+ extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
63
+ requestId: z.ZodOptional<z.ZodString>;
64
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
65
+ }, z.core.$strip>;
66
+ };
67
+ };
68
+ required: boolean | undefined;
69
+ };
70
+ };
71
+ };
72
+ };
73
+ //# sourceMappingURL=definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/service-certs/definitions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsB3B,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServiceCertsRouteConfigs = void 0;
4
+ const ignis_kernel_1 = require("@venizia/ignis-kernel");
5
+ const zod_openapi_1 = require("@hono/zod-openapi");
6
+ /**
7
+ * Unauthenticated by design: it serves the PUBLIC key a callee needs to verify this service's
8
+ * assertions. Whoever can reach it learns only which key signs, which is what verification requires.
9
+ *
10
+ * The schema names public members only. That is documentation, not a filter - a zod response schema
11
+ * does not strip anything - so the guard that private material never gets here lives in the signer.
12
+ */
13
+ exports.ServiceCertsRouteConfigs = {
14
+ GET_SERVICE_CERTS: {
15
+ path: '/',
16
+ method: 'get',
17
+ responses: (0, ignis_kernel_1.jsonResponse)({
18
+ schema: zod_openapi_1.z
19
+ .object({
20
+ keys: zod_openapi_1.z.array(zod_openapi_1.z.object({
21
+ kty: zod_openapi_1.z.string(),
22
+ kid: zod_openapi_1.z.string().optional(),
23
+ use: zod_openapi_1.z.string().optional(),
24
+ alg: zod_openapi_1.z.string().optional(),
25
+ crv: zod_openapi_1.z.string().optional(),
26
+ x: zod_openapi_1.z.string().optional(),
27
+ })),
28
+ })
29
+ .openapi({ description: 'Service assertion JSON Web Key Set' }),
30
+ description: 'Service assertion JSON Web Key Set',
31
+ }),
32
+ },
33
+ };
34
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/service-certs/definitions.ts"],"names":[],"mappings":";;;AAAA,wDAAqD;AACrD,mDAAsC;AAEtC;;;;;;GAMG;AACU,QAAA,wBAAwB,GAAG;IACtC,iBAAiB,EAAE;QACjB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,IAAA,2BAAY,EAAC;YACtB,MAAM,EAAE,eAAC;iBACN,MAAM,CAAC;gBACN,IAAI,EAAE,eAAC,CAAC,KAAK,CACX,eAAC,CAAC,MAAM,CAAC;oBACP,GAAG,EAAE,eAAC,CAAC,MAAM,EAAE;oBACf,GAAG,EAAE,eAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,eAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,eAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,eAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,CAAC,EAAE,eAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACzB,CAAC,CACH;aACF,CAAC;iBACD,OAAO,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;YACjE,WAAW,EAAE,oCAAoC;SAClD,CAAC;KACH;CACO,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './controller';
2
+ export * from './definitions';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/service-certs/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./controller"), exports);
18
+ __exportStar(require("./definitions"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/service-certs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,gDAA8B"}
@@ -1,10 +1,9 @@
1
- import type { TContext } from '@venizia/ignis-kernel';
2
- import { BaseService } from '@venizia/ignis-kernel';
3
- import type { ValueOrPromise } from '@venizia/ignis-helpers/common';
4
1
  import type { AESAlgorithmType, IPayloadCipher } from '@venizia/ignis-helpers';
2
+ import type { ValueOrPromise } from '@venizia/ignis-helpers/common';
3
+ import type { IJWTIssueClaims, IJWTSignOptions, IJWTTokenPayload, IPayloadFieldCodec, TContext, TGetTokenExpiresFn } from '@venizia/ignis-kernel';
4
+ import { BaseService } from '@venizia/ignis-kernel';
5
5
  import type { Env } from 'hono';
6
6
  import type { JWTPayload, JWTVerifyResult, SignJWT } from 'jose';
7
- import type { IJWTTokenPayload, IPayloadFieldCodec, TGetTokenExpiresFn } from '@venizia/ignis-kernel';
8
7
  /** Abstract base for Bearer-token services (JWS, JWKS) with optional AES payload encryption. */
9
8
  export declare abstract class AbstractBearerTokenService<E extends Env = Env> extends BaseService {
10
9
  /** Standard JWT fields that are never encrypted. */
@@ -12,6 +11,8 @@ export declare abstract class AbstractBearerTokenService<E extends Env = Env> ex
12
11
  protected aes: IPayloadCipher | null;
13
12
  protected applicationSecret: string | null;
14
13
  protected fieldCodecs: Map<string, IPayloadFieldCodec>;
14
+ /** Configured `iss` / `aud`. Authoritative over anything the payload carries. */
15
+ protected signOptions: IJWTSignOptions | null;
15
16
  /** Configures AES payload encryption and field codecs. Both aesAlgorithm and applicationSecret required to activate encryption. */
16
17
  protected configurePayloadEncryption(opts: {
17
18
  aesAlgorithm?: AESAlgorithmType;
@@ -19,6 +20,7 @@ export declare abstract class AbstractBearerTokenService<E extends Env = Env> ex
19
20
  fieldCodecs?: IPayloadFieldCodec[];
20
21
  /** Overrides the cipher. Pass `LegacyAES` to keep reading tokens issued before the PBKDF2 envelope; `aesAlgorithm` is then the cipher's own concern and is ignored here. */
21
22
  cipher?: IPayloadCipher;
23
+ sign?: IJWTSignOptions;
22
24
  }): void;
23
25
  extractCredentials(context: TContext<E, string>): {
24
26
  type: string;
@@ -31,6 +33,8 @@ export declare abstract class AbstractBearerTokenService<E extends Env = Env> ex
31
33
  generate(opts: {
32
34
  payload: IJWTTokenPayload;
33
35
  getTokenExpiresFn?: TGetTokenExpiresFn;
36
+ /** Per-token registered claims. The supported way to vary `aud` / `sub`; the payload is not. */
37
+ claims?: IJWTIssueClaims;
34
38
  }): Promise<string>;
35
39
  protected serializeField(opts: {
36
40
  key: string;
@@ -41,6 +45,22 @@ export declare abstract class AbstractBearerTokenService<E extends Env = Env> ex
41
45
  key: string;
42
46
  value: string;
43
47
  }): any;
48
+ /**
49
+ * Stamps the configured `iss` / `aud` onto a signer, plus any per-token claims the caller passed.
50
+ *
51
+ * The configured value is AUTHORITATIVE. `iss` and `aud` are in `JWT_COMMON_FIELDS`, so they ride
52
+ * through the AES envelope in the clear and an application-shaped payload can carry them - an
53
+ * issuer identity any payload could overwrite would not be an identity. A conflicting payload
54
+ * claim is overwritten and reported.
55
+ *
56
+ * Per-token audience is an explicit argument rather than a smuggled payload key, so the caller
57
+ * that legitimately needs one says so.
58
+ */
59
+ protected applySignClaims(opts: {
60
+ signer: SignJWT;
61
+ payload: Record<string, any>;
62
+ claims?: IJWTIssueClaims;
63
+ }): SignJWT;
44
64
  decryptPayload(opts: {
45
65
  result: JWTVerifyResult<IJWTTokenPayload>;
46
66
  }): IJWTTokenPayload;
@@ -48,6 +68,7 @@ export declare abstract class AbstractBearerTokenService<E extends Env = Env> ex
48
68
  abstract getSigner(opts: {
49
69
  payload: IJWTTokenPayload;
50
70
  getTokenExpiresFn: TGetTokenExpiresFn;
71
+ claims?: IJWTIssueClaims;
51
72
  }): Promise<SignJWT>;
52
73
  protected abstract getSigningKey(): ValueOrPromise<Uint8Array | CryptoKey>;
53
74
  protected abstract getDefaultTokenExpiresFn(): TGetTokenExpiresFn;
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.service.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/services/bearer/abstract.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI/E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACjE,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAG/B,gGAAgG;AAChG,8BAAsB,0BAA0B,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,CAAE,SAAQ,WAAW;IACvF,oDAAoD;IACpD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,wBAQ9B;IAEH,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAAQ;IAC5C,SAAS,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAa;IAEnE,mIAAmI;IACnI,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE;QACzC,YAAY,CAAC,EAAE,gBAAgB,CAAC;QAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACnC,4KAA4K;QAC5K,MAAM,CAAC,EAAE,cAAc,CAAC;KACzB,GAAG,IAAI;IAiBR,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IA8B3E,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBxE,QAAQ,CAAC,IAAI,EAAE;QACnB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;KACxC,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBnB,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,MAAM;IAWnE,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAqC9D,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAW/D,cAAc,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAA;KAAE,GAAG,gBAAgB;IAiCrF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAErE,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;QACvB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,iBAAiB,EAAE,kBAAkB,CAAC;KACvC,GAAG,OAAO,CAAC,OAAO,CAAC;IAEpB,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,cAAc,CAAC,UAAU,GAAG,SAAS,CAAC;IAE1E,SAAS,CAAC,QAAQ,CAAC,wBAAwB,IAAI,kBAAkB;CAClE"}
1
+ {"version":3,"file":"abstract.service.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/services/bearer/abstract.service.ts"],"names":[],"mappings":"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"}