@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.
- package/README.md +0 -1
- package/dist/base/applications/server.d.ts +1 -1
- package/dist/base/applications/server.d.ts.map +1 -1
- package/dist/base/applications/server.js +1 -1
- package/dist/base/applications/server.js.map +1 -1
- package/dist/base/controllers/grpc/abstract.d.ts +1 -1
- package/dist/base/controllers/grpc/abstract.d.ts.map +1 -1
- package/dist/base/controllers/grpc/abstract.js +12 -10
- package/dist/base/controllers/grpc/abstract.js.map +1 -1
- package/dist/base/controllers/grpc/adapter.d.ts +2 -1
- package/dist/base/controllers/grpc/adapter.d.ts.map +1 -1
- package/dist/base/controllers/grpc/adapter.js +2 -1
- package/dist/base/controllers/grpc/adapter.js.map +1 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts +11 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts.map +1 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.js +13 -5
- package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
- package/dist/components/api-reference/common/keys.d.ts +0 -5
- package/dist/components/api-reference/common/keys.d.ts.map +1 -1
- package/dist/components/api-reference/common/keys.js +1 -7
- package/dist/components/api-reference/common/keys.js.map +1 -1
- package/dist/components/api-reference/common/types.d.ts +1 -2
- package/dist/components/api-reference/common/types.d.ts.map +1 -1
- package/dist/components/api-reference/component.d.ts +0 -4
- package/dist/components/api-reference/component.d.ts.map +1 -1
- package/dist/components/api-reference/component.js +11 -9
- package/dist/components/api-reference/component.js.map +1 -1
- package/dist/components/api-reference/ui-factory.d.ts +5 -2
- package/dist/components/api-reference/ui-factory.d.ts.map +1 -1
- package/dist/components/api-reference/ui-factory.js +34 -4
- package/dist/components/api-reference/ui-factory.js.map +1 -1
- package/dist/components/auth/authenticate/component.d.ts +10 -1
- package/dist/components/auth/authenticate/component.d.ts.map +1 -1
- package/dist/components/auth/authenticate/component.js +79 -25
- package/dist/components/auth/authenticate/component.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/index.d.ts +1 -0
- package/dist/components/auth/authenticate/controllers/index.d.ts.map +1 -1
- package/dist/components/auth/authenticate/controllers/index.js +1 -0
- package/dist/components/auth/authenticate/controllers/index.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/service-certs/controller.d.ts +10 -0
- package/dist/components/auth/authenticate/controllers/service-certs/controller.d.ts.map +1 -0
- package/dist/components/auth/authenticate/controllers/service-certs/controller.js +50 -0
- package/dist/components/auth/authenticate/controllers/service-certs/controller.js.map +1 -0
- package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts +73 -0
- package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts.map +1 -0
- package/dist/components/auth/authenticate/controllers/service-certs/definitions.js +34 -0
- package/dist/components/auth/authenticate/controllers/service-certs/definitions.js.map +1 -0
- package/dist/components/auth/authenticate/controllers/service-certs/index.d.ts +3 -0
- package/dist/components/auth/authenticate/controllers/service-certs/index.d.ts.map +1 -0
- package/dist/components/auth/authenticate/controllers/service-certs/index.js +19 -0
- package/dist/components/auth/authenticate/controllers/service-certs/index.js.map +1 -0
- package/dist/components/auth/authenticate/services/bearer/abstract.service.d.ts +25 -4
- package/dist/components/auth/authenticate/services/bearer/abstract.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/abstract.service.js +53 -14
- package/dist/components/auth/authenticate/services/bearer/abstract.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts +18 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js +40 -10
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js +4 -5
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts +2 -1
- package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jws.service.js +7 -6
- package/dist/components/auth/authenticate/services/bearer/jws.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/index.d.ts +1 -0
- package/dist/components/auth/authenticate/services/index.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/index.js +1 -0
- package/dist/components/auth/authenticate/services/index.js.map +1 -1
- package/dist/components/auth/authenticate/services/service/index.d.ts +3 -0
- package/dist/components/auth/authenticate/services/service/index.d.ts.map +1 -0
- package/dist/components/auth/authenticate/services/service/index.js +19 -0
- package/dist/components/auth/authenticate/services/service/index.js.map +1 -0
- package/dist/components/auth/authenticate/services/service/signer.service.d.ts +46 -0
- package/dist/components/auth/authenticate/services/service/signer.service.d.ts.map +1 -0
- package/dist/components/auth/authenticate/services/service/signer.service.js +135 -0
- package/dist/components/auth/authenticate/services/service/signer.service.js.map +1 -0
- package/dist/components/auth/authenticate/services/service/verifier.service.d.ts +40 -0
- package/dist/components/auth/authenticate/services/service/verifier.service.d.ts.map +1 -0
- package/dist/components/auth/authenticate/services/service/verifier.service.js +165 -0
- package/dist/components/auth/authenticate/services/service/verifier.service.js.map +1 -0
- package/dist/components/auth/authenticate/strategies/index.d.ts +1 -0
- package/dist/components/auth/authenticate/strategies/index.d.ts.map +1 -1
- package/dist/components/auth/authenticate/strategies/index.js +1 -0
- package/dist/components/auth/authenticate/strategies/index.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/service.strategy.d.ts +19 -0
- package/dist/components/auth/authenticate/strategies/service.strategy.d.ts.map +1 -0
- package/dist/components/auth/authenticate/strategies/service.strategy.js +73 -0
- package/dist/components/auth/authenticate/strategies/service.strategy.js.map +1 -0
- package/dist/components/auth/authorize/adapters/base-filtered.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/base-filtered.js +5 -8
- package/dist/components/auth/authorize/adapters/base-filtered.js.map +1 -1
- package/dist/components/auth/authorize/adapters/connector.d.ts +10 -0
- package/dist/components/auth/authorize/adapters/connector.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/connector.js +20 -0
- package/dist/components/auth/authorize/adapters/connector.js.map +1 -0
- package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts +52 -0
- package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts.map +1 -0
- package/dist/components/auth/authorize/adapters/custom-grant-expander.js +111 -0
- package/dist/components/auth/authorize/adapters/custom-grant-expander.js.map +1 -0
- package/dist/components/auth/authorize/adapters/index.d.ts +2 -0
- package/dist/components/auth/authorize/adapters/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/index.js +2 -0
- package/dist/components/auth/authorize/adapters/index.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts +64 -37
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js +69 -76
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js.map +1 -1
- package/dist/components/auth/authorize/component.d.ts.map +1 -1
- package/dist/components/auth/authorize/component.js +3 -0
- package/dist/components/auth/authorize/component.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts +7 -36
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js +48 -117
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/index.d.ts +2 -1
- package/dist/components/auth/authorize/enforcers/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/index.js +2 -1
- package/dist/components/auth/authorize/enforcers/index.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts +26 -0
- package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts.map +1 -0
- package/dist/components/auth/authorize/enforcers/policy-line-codec.js +57 -0
- package/dist/components/auth/authorize/enforcers/policy-line-codec.js.map +1 -0
- package/dist/components/auth/authorize/enforcers/user-policy-line-cache.d.ts +46 -0
- package/dist/components/auth/authorize/enforcers/user-policy-line-cache.d.ts.map +1 -0
- package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js +98 -0
- package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js.map +1 -0
- package/dist/components/auth/authorize/index.d.ts +1 -0
- package/dist/components/auth/authorize/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/index.js +1 -0
- package/dist/components/auth/authorize/index.js.map +1 -1
- package/dist/components/auth/authorize/role-managers/base.d.ts +34 -0
- package/dist/components/auth/authorize/role-managers/base.d.ts.map +1 -0
- package/dist/components/auth/authorize/role-managers/base.js +76 -0
- package/dist/components/auth/authorize/role-managers/base.js.map +1 -0
- package/dist/components/auth/authorize/role-managers/domain-hierarchy.d.ts +28 -0
- package/dist/components/auth/authorize/role-managers/domain-hierarchy.d.ts.map +1 -0
- package/dist/components/auth/authorize/role-managers/domain-hierarchy.js +77 -0
- package/dist/components/auth/authorize/role-managers/domain-hierarchy.js.map +1 -0
- package/dist/components/auth/authorize/role-managers/index.d.ts +5 -0
- package/dist/components/auth/authorize/role-managers/index.d.ts.map +1 -0
- package/dist/components/auth/authorize/role-managers/index.js +21 -0
- package/dist/components/auth/authorize/role-managers/index.js.map +1 -0
- package/dist/components/auth/authorize/role-managers/membership.d.ts +21 -0
- package/dist/components/auth/authorize/role-managers/membership.d.ts.map +1 -0
- package/dist/components/auth/authorize/role-managers/membership.js +69 -0
- package/dist/components/auth/authorize/role-managers/membership.js.map +1 -0
- package/dist/components/auth/authorize/{enforcers/resource-role-manager.d.ts → role-managers/resource.d.ts} +3 -9
- package/dist/components/auth/authorize/role-managers/resource.d.ts.map +1 -0
- package/dist/components/auth/authorize/{enforcers/resource-role-manager.js → role-managers/resource.js} +9 -21
- package/dist/components/auth/authorize/role-managers/resource.js.map +1 -0
- package/dist/components/auth/models/entities/policy-definition.model.d.ts +28 -14
- package/dist/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
- package/dist/components/auth/models/entities/policy-definition.model.js +18 -10
- package/dist/components/auth/models/entities/policy-definition.model.js.map +1 -1
- package/dist/components/auth/models/entities/user.model.d.ts +2 -2
- package/dist/components/mail/services/generator.service.d.ts +6 -3
- package/dist/components/mail/services/generator.service.d.ts.map +1 -1
- package/dist/components/mail/services/generator.service.js +13 -4
- package/dist/components/mail/services/generator.service.js.map +1 -1
- package/dist/components/request-tracker/component.d.ts +1 -1
- package/dist/components/request-tracker/component.d.ts.map +1 -1
- package/dist/components/request-tracker/component.js +1 -1
- package/dist/components/request-tracker/component.js.map +1 -1
- package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
- package/dist/components/static-asset/controller/factory.js +5 -1
- package/dist/components/static-asset/controller/factory.js.map +1 -1
- package/dist/components/static-asset/models/base.model.d.ts +4 -4
- package/dist/utilities/network.utility.d.ts +9 -0
- package/dist/utilities/network.utility.d.ts.map +1 -1
- package/dist/utilities/network.utility.js +2 -4
- package/dist/utilities/network.utility.js.map +1 -1
- package/package.json +8 -8
- package/dist/components/auth/authorize/enforcers/resource-role-manager.d.ts.map +0 -1
- 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
|
|
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
|
-
[
|
|
34
|
-
key:
|
|
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:
|
|
42
|
+
key: ignis_kernel_1.AuthenticateBindingKeys.JWT_OPTIONS,
|
|
43
43
|
isOptional: true,
|
|
44
44
|
});
|
|
45
45
|
const basicOptions = this.application.get({
|
|
46
|
-
key:
|
|
46
|
+
key: ignis_kernel_1.AuthenticateBindingKeys.BASIC_OPTIONS,
|
|
47
47
|
isOptional: true,
|
|
48
48
|
});
|
|
49
49
|
const restOptions = this.application.get({
|
|
50
|
-
key:
|
|
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
|
-
|
|
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
|
|
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
|
|
67
|
+
case ignis_kernel_1.JOSEStandards.JWS: {
|
|
62
68
|
this.defineJWSAuth({ options: jwtOptions.options });
|
|
63
69
|
break;
|
|
64
70
|
}
|
|
65
|
-
case
|
|
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:
|
|
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
|
|
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 || !
|
|
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: ${[...
|
|
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:
|
|
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,
|
|
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
|
|
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:
|
|
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:
|
|
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,
|
|
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":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/auth/authenticate/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
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,
|
|
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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"}
|