@open-rlb/nestjs-amqp 1.0.28 → 2.0.2
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 +91 -7
- package/amqp-lib/amqp/connection.d.ts +1 -1
- package/common/errors.d.ts +13 -0
- package/common/errors.js +26 -0
- package/common/errors.js.map +1 -0
- package/common/flatten.util.d.ts +1 -0
- package/common/flatten.util.js +29 -0
- package/common/flatten.util.js.map +1 -0
- package/common/index.d.ts +3 -0
- package/common/index.js +20 -0
- package/common/index.js.map +1 -0
- package/common/pagination.model.d.ts +6 -0
- package/common/pagination.model.js +3 -0
- package/common/pagination.model.js.map +1 -0
- package/index.d.ts +3 -0
- package/index.js +3 -0
- package/index.js.map +1 -1
- package/modules/acl/acl.module.d.ts +5 -0
- package/modules/acl/acl.module.js +36 -0
- package/modules/acl/acl.module.js.map +1 -0
- package/modules/acl/cache/acl-cache.service.d.ts +15 -0
- package/modules/acl/cache/acl-cache.service.js +98 -0
- package/modules/acl/cache/acl-cache.service.js.map +1 -0
- package/modules/acl/cache/cache-store.d.ts +6 -0
- package/modules/acl/cache/cache-store.js +3 -0
- package/modules/acl/cache/cache-store.js.map +1 -0
- package/modules/acl/config/acl.config.d.ts +8 -0
- package/modules/acl/config/acl.config.js +3 -0
- package/modules/acl/config/acl.config.js.map +1 -0
- package/modules/acl/const.d.ts +17 -0
- package/modules/acl/const.js +21 -0
- package/modules/acl/const.js.map +1 -0
- package/modules/acl/index.d.ts +11 -0
- package/modules/acl/index.js +28 -0
- package/modules/acl/index.js.map +1 -0
- package/modules/acl/models.d.ts +19 -0
- package/modules/acl/models.js +3 -0
- package/modules/acl/models.js.map +1 -0
- package/modules/acl/repository/acl-action.repository.d.ts +11 -0
- package/modules/acl/repository/acl-action.repository.js +7 -0
- package/modules/acl/repository/acl-action.repository.js.map +1 -0
- package/modules/acl/repository/acl-grant.repository.d.ts +11 -0
- package/modules/acl/repository/acl-grant.repository.js +7 -0
- package/modules/acl/repository/acl-grant.repository.js.map +1 -0
- package/modules/acl/repository/acl-role.repository.d.ts +10 -0
- package/modules/acl/repository/acl-role.repository.js +7 -0
- package/modules/acl/repository/acl-role.repository.js.map +1 -0
- package/modules/acl/services/acl-management.service.d.ts +26 -0
- package/modules/acl/services/acl-management.service.js +202 -0
- package/modules/acl/services/acl-management.service.js.map +1 -0
- package/modules/acl/services/acl.service.d.ts +11 -0
- package/modules/acl/services/acl.service.js +63 -0
- package/modules/acl/services/acl.service.js.map +1 -0
- package/modules/broker/broker.module.d.ts +1 -7
- package/modules/broker/broker.module.js +1 -27
- package/modules/broker/broker.module.js.map +1 -1
- package/modules/gateway-admin/config/gateway-admin.config.d.ts +3 -0
- package/modules/gateway-admin/config/gateway-admin.config.js +3 -0
- package/modules/gateway-admin/config/gateway-admin.config.js.map +1 -0
- package/modules/gateway-admin/const.d.ts +18 -0
- package/modules/gateway-admin/const.js +22 -0
- package/modules/gateway-admin/const.js.map +1 -0
- package/modules/gateway-admin/gateway-admin.module.d.ts +5 -0
- package/modules/gateway-admin/gateway-admin.module.js +35 -0
- package/modules/gateway-admin/gateway-admin.module.js.map +1 -0
- package/modules/gateway-admin/index.d.ts +11 -0
- package/modules/gateway-admin/index.js +28 -0
- package/modules/gateway-admin/index.js.map +1 -0
- package/modules/gateway-admin/models.d.ts +22 -0
- package/modules/gateway-admin/models.js +3 -0
- package/modules/gateway-admin/models.js.map +1 -0
- package/modules/gateway-admin/repository/auth-provider.repository.d.ts +15 -0
- package/modules/gateway-admin/repository/auth-provider.repository.js +7 -0
- package/modules/gateway-admin/repository/auth-provider.repository.js.map +1 -0
- package/modules/gateway-admin/repository/http-metric.repository.d.ts +7 -0
- package/modules/gateway-admin/repository/http-metric.repository.js +7 -0
- package/modules/gateway-admin/repository/http-metric.repository.js.map +1 -0
- package/modules/gateway-admin/repository/http-path.repository.d.ts +15 -0
- package/modules/gateway-admin/repository/http-path.repository.js +7 -0
- package/modules/gateway-admin/repository/http-path.repository.js.map +1 -0
- package/modules/gateway-admin/services/gateway-auth.service.d.ts +14 -0
- package/modules/gateway-admin/services/gateway-auth.service.js +100 -0
- package/modules/gateway-admin/services/gateway-auth.service.js.map +1 -0
- package/modules/gateway-admin/services/gateway-metrics.service.d.ts +11 -0
- package/modules/gateway-admin/services/gateway-metrics.service.js +59 -0
- package/modules/gateway-admin/services/gateway-metrics.service.js.map +1 -0
- package/modules/gateway-admin/services/gateway-path.service.d.ts +14 -0
- package/modules/gateway-admin/services/gateway-path.service.js +106 -0
- package/modules/gateway-admin/services/gateway-path.service.js.map +1 -0
- package/modules/gateway-admin/util/path-order.d.ts +3 -0
- package/modules/gateway-admin/util/path-order.js +36 -0
- package/modules/gateway-admin/util/path-order.js.map +1 -0
- package/modules/proxy/config/path-definition.config.d.ts +4 -0
- package/modules/proxy/proxy.module.d.ts +15 -2
- package/modules/proxy/proxy.module.js +24 -4
- package/modules/proxy/proxy.module.js.map +1 -1
- package/modules/proxy/services/http-auth-handler.service.js +6 -0
- package/modules/proxy/services/http-auth-handler.service.js.map +1 -1
- package/modules/proxy/services/http-handler.service.d.ts +5 -1
- package/modules/proxy/services/http-handler.service.js +70 -7
- package/modules/proxy/services/http-handler.service.js.map +1 -1
- package/modules/proxy/services/jwt.service.d.ts +3 -0
- package/modules/proxy/services/jwt.service.js +66 -9
- package/modules/proxy/services/jwt.service.js.map +1 -1
- package/modules/proxy/services/websocket.service.d.ts +3 -0
- package/modules/proxy/services/websocket.service.js +51 -1
- package/modules/proxy/services/websocket.service.js.map +1 -1
- package/package.json +26 -27
- package/schematics/nest-add/files/skills/rlb-amqp/SKILL.md +2 -1
- package/schematics/nest-add/files/skills/rlb-amqp/references/config-schema.md +9 -2
- package/schematics/nest-add/files/skills/rlb-amqp/references/gotchas.md +21 -4
- package/schematics/nest-add/files/skills/rlb-amqp-add-route/SKILL.md +2 -2
- package/schematics/nest-add/files/skills/rlb-amqp-scaffold/SKILL.md +11 -4
- package/schematics/nest-add/index.js +15 -6
- package/schematics/nest-add/index.js.map +1 -1
- package/schematics/nest-add/index.ts +20 -7
- package/tsconfig.build.tsbuildinfo +0 -1
|
@@ -11,17 +11,37 @@ exports.ProxyModule = void 0;
|
|
|
11
11
|
const axios_1 = require("@nestjs/axios");
|
|
12
12
|
const common_1 = require("@nestjs/common");
|
|
13
13
|
const config_1 = require("@nestjs/config");
|
|
14
|
+
const const_1 = require("../broker/const");
|
|
14
15
|
const http_auth_handler_service_1 = require("./services/http-auth-handler.service");
|
|
15
16
|
const http_handler_service_1 = require("./services/http-handler.service");
|
|
16
17
|
const jwt_service_1 = require("./services/jwt.service");
|
|
17
18
|
const websocket_service_1 = require("./services/websocket.service");
|
|
18
19
|
let ProxyModule = ProxyModule_1 = class ProxyModule {
|
|
19
|
-
static forRoot(providers) {
|
|
20
|
+
static forRoot(options = {}, providers = []) {
|
|
21
|
+
const authOptionsProvider = { provide: const_1.RLB_AMQP_AUTH_OPTIONS, useValue: options.authOptions };
|
|
22
|
+
const gatewayOptionsProvider = { provide: const_1.RLB_AMQP_GATEWAY_OPTIONS, useValue: options.gatewayOptions };
|
|
20
23
|
return {
|
|
21
24
|
module: ProxyModule_1,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
providers: [authOptionsProvider, gatewayOptionsProvider, ...(providers || [])],
|
|
26
|
+
exports: [http_handler_service_1.HttpHandlerService, authOptionsProvider, gatewayOptionsProvider],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
static forRootAsync(asyncOptions) {
|
|
30
|
+
const authOptionsProvider = {
|
|
31
|
+
provide: const_1.RLB_AMQP_AUTH_OPTIONS,
|
|
32
|
+
useFactory: async (...args) => (await asyncOptions.useFactory(...args)).authOptions,
|
|
33
|
+
inject: asyncOptions.inject || [],
|
|
34
|
+
};
|
|
35
|
+
const gatewayOptionsProvider = {
|
|
36
|
+
provide: const_1.RLB_AMQP_GATEWAY_OPTIONS,
|
|
37
|
+
useFactory: async (...args) => (await asyncOptions.useFactory(...args)).gatewayOptions,
|
|
38
|
+
inject: asyncOptions.inject || [],
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
module: ProxyModule_1,
|
|
42
|
+
imports: asyncOptions.imports || [],
|
|
43
|
+
providers: [authOptionsProvider, gatewayOptionsProvider, ...(asyncOptions.providers || [])],
|
|
44
|
+
exports: [http_handler_service_1.HttpHandlerService, authOptionsProvider, gatewayOptionsProvider],
|
|
25
45
|
};
|
|
26
46
|
}
|
|
27
47
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.module.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/proxy/proxy.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,yCAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"proxy.module.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/proxy/proxy.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,yCAA2C;AAC3C,2CAA+E;AAC/E,2CAA8C;AAE9C,2CAAkF;AAElF,oFAA8E;AAC9E,0EAAqE;AACrE,wDAAoD;AACpD,oEAAgE;AAsBzD,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAMtB,MAAM,CAAC,OAAO,CAAC,UAA8B,EAAE,EAAE,YAAwB,EAAE;QACzE,MAAM,mBAAmB,GAAa,EAAE,OAAO,EAAE,6BAAqB,EAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACxG,MAAM,sBAAsB,GAAa,EAAE,OAAO,EAAE,gCAAwB,EAAE,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;QACjH,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAC9E,OAAO,EAAE,CAAC,yCAAkB,EAAE,mBAAmB,EAAE,sBAAsB,CAAC;SAC3E,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,YAAY,CAAC,YAAqC;QACvD,MAAM,mBAAmB,GAAa;YACpC,OAAO,EAAE,6BAAqB;YAC9B,UAAU,EAAE,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW;YAC1F,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE;SAClC,CAAC;QACF,MAAM,sBAAsB,GAAa;YACvC,OAAO,EAAE,gCAAwB;YACjC,UAAU,EAAE,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc;YAC7F,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE;SAClC,CAAC;QACF,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,EAAE;YACnC,SAAS,EAAE,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAC3F,OAAO,EAAE,CAAC,yCAAkB,EAAE,mBAAmB,EAAE,sBAAsB,CAAC;SAC3E,CAAC;IACJ,CAAC;CACF,CAAA;AAtCY,kCAAW;sBAAX,WAAW;IANvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,EAAE,kBAAU,CAAC;QACnC,SAAS,EAAE,CAAC,yCAAkB,EAAE,wBAAU,EAAE,kDAAsB,EAAE,oCAAgB,CAAC;QACrF,OAAO,EAAE,CAAC,yCAAkB,CAAC;KAC9B,CAAC;GACW,WAAW,CAsCvB"}
|
|
@@ -104,6 +104,11 @@ let HttpAuthHandlerService = HttpAuthHandlerService_1 = class HttpAuthHandlerSer
|
|
|
104
104
|
if (!authHeader || !authHeader.startsWith('Basic ')) {
|
|
105
105
|
return out;
|
|
106
106
|
}
|
|
107
|
+
if (!authConfig.clientSecret) {
|
|
108
|
+
this.logger.warn(`Auth provider ${authConfig.name} (basic) has no clientSecret configured; passing through as authenticated.`);
|
|
109
|
+
out.success = true;
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
107
112
|
const base64Credentials = authHeader.split(' ')[1];
|
|
108
113
|
const credentials = Buffer.from(base64Credentials, 'base64').toString('ascii');
|
|
109
114
|
const [username, password] = credentials.split(':');
|
|
@@ -120,6 +125,7 @@ let HttpAuthHandlerService = HttpAuthHandlerService_1 = class HttpAuthHandlerSer
|
|
|
120
125
|
const authHeader = req.headers.authorization;
|
|
121
126
|
if (!authConfig.secret) {
|
|
122
127
|
out.success = true;
|
|
128
|
+
this.logger.warn(`Auth provider ${authConfig.name} (str-compare) has no secret configured; passing through as authenticated.`);
|
|
123
129
|
return out;
|
|
124
130
|
}
|
|
125
131
|
if (authConfig.secret && !authConfig.headerPrefix) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-auth-handler.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/proxy/services/http-auth-handler.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAsE;AAItE,8CAA2D;AAE3D,+CAA0E;AAC1E,+CAA2C;AAGpC,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAIjC,YACgD,cAAgD,EAC/D,aAAmD,EACjE,UAAsB;QAFwB,mBAAc,GAAd,cAAc,CAAiB;QAC9C,kBAAa,GAAb,aAAa,CAAqB;QACjE,eAAU,GAAV,UAAU,CAAY;QALxB,WAAM,GAAG,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IAMlE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAY,EAAE,IAAoB;QAEtD,IAAI,GAAG,GAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE,IAAI;YAAE,OAAO,GAAG,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC;QAEzE,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,OAAO;gBAAE,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAAC,MAAM;YACtE,KAAK,KAAK;gBAAE,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAAC,MAAM;YAC9D,KAAK,MAAM;gBAAE,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAAC,MAAM;YAC/D,KAAK,aAAa;gBAAE,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAAC,MAAM;YAChF;gBACE,MAAM;QACV,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvD,CAAC;IAGD,KAAK,CAAC,WAAW,CAAC,UAA6B,EAAE,KAAa;QAC5D,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAGD,SAAS,CAAC,UAA6B,EAAE,OAAY;QACnD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,GAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjD,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;YAClE,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC;gBACnB,GAAG,CAAC,GAAG,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAY,EAAE,UAA6B;QACxD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAGD,KAAK,CAAC,mBAAmB,CAAC,UAA6B,EAAE,MAA+B;QACtF,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,UAAU,CAAC,IAAI,gCAAgC,CAAC,CAAC;QAC/I,IAAI,CAAC,UAAU,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,UAAU,CAAC,IAAI,2BAA2B,CAAC,CAAC;QACvG,IAAI,CAAC,UAAU,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,UAAU,CAAC,IAAI,4BAA4B,CAAC,CAAC;QACzG,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACjG,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAY,EAAE,UAA6B;QAC9D,IAAI,GAAG,GAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/E,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpD,IAAI,QAAQ,KAAK,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAChI,GAAG,CAAC,GAAG,UAAU,CAAC,YAAY,UAAU,CAAC,GAAG,QAAQ,CAAC;YACrD,GAAG,CAAC,GAAG,UAAU,CAAC,YAAY,QAAQ,CAAC,GAAG,QAAQ,CAAC;YACnD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;YACnB,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAY,EAAE,UAA6B;QAClE,IAAI,GAAG,GAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"http-auth-handler.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/proxy/services/http-auth-handler.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OnModuleInit } from "@nestjs/common";
|
|
2
2
|
import { HttpAdapterHost } from "@nestjs/core";
|
|
3
|
+
import { Router } from "express";
|
|
3
4
|
import { BrokerService } from "../../broker";
|
|
4
5
|
import { AppConfig, UtilsService } from "../../broker/services/utils.service";
|
|
5
6
|
import { GatewayConfig, PathDefinition } from "../config/path-definition.config";
|
|
@@ -12,10 +13,13 @@ export declare class HttpHandlerService implements OnModuleInit {
|
|
|
12
13
|
private readonly appConfig;
|
|
13
14
|
private readonly gatewayConfig;
|
|
14
15
|
private server;
|
|
16
|
+
private dynamicRouter;
|
|
15
17
|
private readonly logger;
|
|
16
18
|
private readonly multer;
|
|
17
19
|
constructor(httpAdapterHost: HttpAdapterHost, broker: BrokerService, utils: UtilsService, httpAuthHandlerService: HttpAuthHandlerService, appConfig: AppConfig, gatewayConfig: GatewayConfig);
|
|
18
20
|
onModuleInit(): Promise<void>;
|
|
19
|
-
|
|
21
|
+
reload(): Promise<number>;
|
|
22
|
+
registerPath(path: PathDefinition, router?: Router): void;
|
|
23
|
+
private trackMetrics;
|
|
20
24
|
private httpHeaders;
|
|
21
25
|
}
|
|
@@ -16,11 +16,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
16
16
|
exports.HttpHandlerService = void 0;
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
18
|
const core_1 = require("@nestjs/core");
|
|
19
|
-
const
|
|
19
|
+
const express_1 = require("express");
|
|
20
20
|
const broker_1 = require("../../broker");
|
|
21
21
|
const const_1 = require("../../broker/const");
|
|
22
22
|
const utils_service_1 = require("../../broker/services/utils.service");
|
|
23
23
|
const http_auth_handler_service_1 = require("./http-auth-handler.service");
|
|
24
|
+
const multer = require("multer");
|
|
24
25
|
let HttpHandlerService = HttpHandlerService_1 = class HttpHandlerService {
|
|
25
26
|
constructor(httpAdapterHost, broker, utils, httpAuthHandlerService, appConfig, gatewayConfig) {
|
|
26
27
|
this.httpAdapterHost = httpAdapterHost;
|
|
@@ -29,6 +30,7 @@ let HttpHandlerService = HttpHandlerService_1 = class HttpHandlerService {
|
|
|
29
30
|
this.httpAuthHandlerService = httpAuthHandlerService;
|
|
30
31
|
this.appConfig = appConfig;
|
|
31
32
|
this.gatewayConfig = gatewayConfig;
|
|
33
|
+
this.dynamicRouter = null;
|
|
32
34
|
this.logger = new common_1.Logger(HttpHandlerService_1.name);
|
|
33
35
|
this.multer = multer({
|
|
34
36
|
storage: multer.memoryStorage(),
|
|
@@ -36,17 +38,55 @@ let HttpHandlerService = HttpHandlerService_1 = class HttpHandlerService {
|
|
|
36
38
|
}
|
|
37
39
|
async onModuleInit() {
|
|
38
40
|
this.server = this.httpAdapterHost.httpAdapter.getInstance();
|
|
41
|
+
this.server.use((req, res, next) => {
|
|
42
|
+
if (this.dynamicRouter)
|
|
43
|
+
return this.dynamicRouter(req, res, next);
|
|
44
|
+
next();
|
|
45
|
+
});
|
|
46
|
+
await this.reload();
|
|
47
|
+
const reloadTopic = this.gatewayConfig.reloadTopic;
|
|
48
|
+
if (reloadTopic) {
|
|
49
|
+
try {
|
|
50
|
+
await this.broker.registerHandler(reloadTopic, async () => {
|
|
51
|
+
this.logger.log(`[RELOAD] signal received on '${reloadTopic}' — rebuilding routes`);
|
|
52
|
+
await this.reload();
|
|
53
|
+
});
|
|
54
|
+
this.logger.log(`[RELOAD] listening for route-reload signals on topic '${reloadTopic}'`);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
this.logger.warn(`[RELOAD] could not subscribe to reload topic '${reloadTopic}': ${error?.message}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async reload() {
|
|
39
62
|
const extPath = [];
|
|
40
63
|
if (this.gatewayConfig.loadConfig?.paths) {
|
|
41
|
-
|
|
42
|
-
|
|
64
|
+
try {
|
|
65
|
+
const o = await this.broker.requestData(this.gatewayConfig.loadConfig.paths.topic, this.gatewayConfig.loadConfig.paths.action, {});
|
|
66
|
+
if (Array.isArray(o))
|
|
67
|
+
extPath.push(...o);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
this.logger.warn(`[RELOAD] failed to pull DB paths (${this.gatewayConfig.loadConfig.paths.topic}/${this.gatewayConfig.loadConfig.paths.action}): ${error?.message}. Keeping YAML paths only.`);
|
|
71
|
+
}
|
|
43
72
|
}
|
|
44
73
|
const paths = [...this.gatewayConfig?.paths || [], ...extPath];
|
|
74
|
+
const router = (0, express_1.Router)();
|
|
75
|
+
let ok = 0;
|
|
45
76
|
for (const path of paths) {
|
|
46
|
-
|
|
77
|
+
try {
|
|
78
|
+
this.registerPath(path, router);
|
|
79
|
+
ok++;
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
this.logger.error(`[RELOAD] skipping invalid path '${path?.name || path?.path}': ${error?.message}`);
|
|
83
|
+
}
|
|
47
84
|
}
|
|
85
|
+
this.dynamicRouter = router;
|
|
86
|
+
this.logger.log(`[RELOAD] routes ready: ${ok}/${paths.length} (yaml=${this.gatewayConfig?.paths?.length || 0}, db=${extPath.length})`);
|
|
87
|
+
return ok;
|
|
48
88
|
}
|
|
49
|
-
registerPath(path) {
|
|
89
|
+
registerPath(path, router) {
|
|
50
90
|
if (!path.method)
|
|
51
91
|
throw new Error("Method is required for path definition");
|
|
52
92
|
if (!path.path)
|
|
@@ -55,14 +95,18 @@ let HttpHandlerService = HttpHandlerService_1 = class HttpHandlerService {
|
|
|
55
95
|
throw new Error("Topic is required for path definition");
|
|
56
96
|
if (!path.mode)
|
|
57
97
|
throw new Error("Mode is required for path definition");
|
|
58
|
-
this.
|
|
98
|
+
const target = router ?? (this.dynamicRouter ?? (this.dynamicRouter = (0, express_1.Router)()));
|
|
99
|
+
target[path.method.toLowerCase()](path.path, this.multer.any(), async (req, res) => {
|
|
100
|
+
this.trackMetrics(req, res, path);
|
|
59
101
|
const authData = await this.httpAuthHandlerService.processAuthData(req, path);
|
|
60
102
|
if (path.auth && !authData?.success && path.allowAnonymous !== true) {
|
|
61
103
|
res.status(401).json({ message: "Unauthorized" });
|
|
104
|
+
this.logger.warn(`[${path.mode.toUpperCase()}] [${path.method.toUpperCase()}] '${path.path}' => ${path.topic} | UNAUTHORIZED '401'`);
|
|
62
105
|
return;
|
|
63
106
|
}
|
|
64
107
|
if (!(await this.httpAuthHandlerService.checkRoles(authData, path))) {
|
|
65
108
|
res.status(403).json({ message: "Forbidden" });
|
|
109
|
+
this.logger.warn(`[${path.mode.toUpperCase()}] [${path.method.toUpperCase()}] '${path.path}' => ${path.topic} | FORBIDDEN '403'`);
|
|
66
110
|
return;
|
|
67
111
|
}
|
|
68
112
|
const httpHeaders = this.httpHeaders(req, path);
|
|
@@ -174,8 +218,8 @@ let HttpHandlerService = HttpHandlerService_1 = class HttpHandlerService {
|
|
|
174
218
|
}
|
|
175
219
|
}
|
|
176
220
|
catch (error) {
|
|
221
|
+
this.logger.error(`[${path.mode.toUpperCase()}] [${path.method.toUpperCase()}] '${path.path}' => ${path.topic} | ERROR '${error.name}' ${error.message}`);
|
|
177
222
|
if (this.appConfig.environment === "development") {
|
|
178
|
-
this.logger.error(error.message);
|
|
179
223
|
res.status(500).json(error);
|
|
180
224
|
}
|
|
181
225
|
else {
|
|
@@ -184,6 +228,25 @@ let HttpHandlerService = HttpHandlerService_1 = class HttpHandlerService {
|
|
|
184
228
|
}
|
|
185
229
|
});
|
|
186
230
|
}
|
|
231
|
+
trackMetrics(req, res, path) {
|
|
232
|
+
const sink = this.gatewayConfig.metrics;
|
|
233
|
+
if (!sink?.topic || !sink?.action)
|
|
234
|
+
return;
|
|
235
|
+
const startedAt = Date.now();
|
|
236
|
+
res.once('finish', () => {
|
|
237
|
+
const payload = {
|
|
238
|
+
method: req.method,
|
|
239
|
+
route: path.path,
|
|
240
|
+
name: path.name,
|
|
241
|
+
topic: path.topic,
|
|
242
|
+
action: path.action,
|
|
243
|
+
status: res.statusCode,
|
|
244
|
+
durationMs: Date.now() - startedAt,
|
|
245
|
+
};
|
|
246
|
+
this.broker.publishMessage(sink.topic, sink.action, payload)
|
|
247
|
+
.catch((error) => this.logger.debug(`[METRICS] track failed for '${path.path}': ${error?.message}`));
|
|
248
|
+
});
|
|
249
|
+
}
|
|
187
250
|
httpHeaders(req, path) {
|
|
188
251
|
const data = {};
|
|
189
252
|
if (path.forwardHeaders) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-handler.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/proxy/services/http-handler.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-handler.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/proxy/services/http-handler.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,9 @@ export declare class JwtService implements OnModuleInit {
|
|
|
7
7
|
private readonly logger;
|
|
8
8
|
constructor(authConfig: HandlerAuthConfig[]);
|
|
9
9
|
onModuleInit(): void;
|
|
10
|
+
private validateProviderConfig;
|
|
11
|
+
private isSymmetricOrNone;
|
|
12
|
+
private resolveAlgorithms;
|
|
10
13
|
verifyTokenJwks<T = JwtPayload>(authConfig: HandlerAuthConfig, token: string): Promise<T | undefined>;
|
|
11
14
|
verifyTokenSecret<T = JwtPayload>(authConfig: HandlerAuthConfig, token: string): Promise<T | undefined>;
|
|
12
15
|
}
|
|
@@ -26,18 +26,63 @@ let JwtService = JwtService_1 = class JwtService {
|
|
|
26
26
|
this.jwksClients = {};
|
|
27
27
|
}
|
|
28
28
|
onModuleInit() {
|
|
29
|
-
for (const
|
|
30
|
-
if (
|
|
31
|
-
this.jwksClients[
|
|
32
|
-
jwksUri:
|
|
29
|
+
for (const cfg of this.authConfig || []) {
|
|
30
|
+
if (cfg.type === "jwks") {
|
|
31
|
+
this.jwksClients[cfg.name] = new jwks_rsa_1.JwksClient({
|
|
32
|
+
jwksUri: cfg.jwksUri,
|
|
33
33
|
cache: true,
|
|
34
34
|
rateLimit: true,
|
|
35
35
|
jwksRequestsPerMinute: 10,
|
|
36
|
-
requestAgent: new https_1.Agent({ rejectUnauthorized:
|
|
36
|
+
requestAgent: new https_1.Agent({ rejectUnauthorized: cfg.httpsAllowUnauthorized !== true })
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
+
this.validateProviderConfig(cfg);
|
|
39
40
|
}
|
|
40
41
|
}
|
|
42
|
+
validateProviderConfig(cfg) {
|
|
43
|
+
if (cfg.type === 'jwt' || cfg.type === 'jwks') {
|
|
44
|
+
if (!cfg.algorithms?.length) {
|
|
45
|
+
this.logger.error(`[${cfg.name}] 'algorithms' is required for ${cfg.type}; token verification will be DENIED until set (prevents algorithm-confusion attacks).`);
|
|
46
|
+
}
|
|
47
|
+
else if (cfg.type === 'jwks' && cfg.algorithms.some(a => this.isSymmetricOrNone(a))) {
|
|
48
|
+
this.logger.error(`[${cfg.name}] jwks must only allow asymmetric algorithms (RS*/ES*/PS*); HS*/none are rejected (prevents RS->HS key-confusion).`);
|
|
49
|
+
}
|
|
50
|
+
else if (cfg.algorithms.some(a => /^none$/i.test(a))) {
|
|
51
|
+
this.logger.error(`[${cfg.name}] the 'none' algorithm is not allowed.`);
|
|
52
|
+
}
|
|
53
|
+
if (cfg.type === 'jwt' && !cfg.secret) {
|
|
54
|
+
this.logger.error(`[${cfg.name}] jwt provider has no 'secret'; verification will be denied.`);
|
|
55
|
+
}
|
|
56
|
+
if (!cfg.jwtMap) {
|
|
57
|
+
this.logger.warn(`[${cfg.name}] no 'jwtMap' configured: all token claims will be forwarded unmapped (over-exposure). Define jwtMap.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (cfg.type === 'str-compare' && !cfg.secret) {
|
|
61
|
+
this.logger.warn(`[${cfg.name}] str-compare provider has no 'secret'; it will PASS THROUGH every request as authenticated (provider effectively open).`);
|
|
62
|
+
}
|
|
63
|
+
if (cfg.type === 'basic' && !cfg.clientSecret) {
|
|
64
|
+
this.logger.warn(`[${cfg.name}] basic provider has no 'clientSecret'; it will PASS THROUGH every request as authenticated (provider effectively open).`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
isSymmetricOrNone(alg) {
|
|
68
|
+
return /^hs/i.test(alg) || /^none$/i.test(alg);
|
|
69
|
+
}
|
|
70
|
+
resolveAlgorithms(cfg, requireAsymmetric) {
|
|
71
|
+
const algs = cfg.algorithms;
|
|
72
|
+
if (!algs?.length) {
|
|
73
|
+
this.logger.error(`[${cfg.name}] missing 'algorithms'; denying token verification.`);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
if (algs.some(a => /^none$/i.test(a))) {
|
|
77
|
+
this.logger.error(`[${cfg.name}] the 'none' algorithm is not allowed.`);
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
if (requireAsymmetric && algs.some(a => /^hs/i.test(a))) {
|
|
81
|
+
this.logger.error(`[${cfg.name}] symmetric (HS*) algorithms are not allowed for jwks.`);
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return algs;
|
|
85
|
+
}
|
|
41
86
|
verifyTokenJwks(authConfig, token) {
|
|
42
87
|
if (!authConfig) {
|
|
43
88
|
this.logger.warn("No auth config provided for JWT verification");
|
|
@@ -47,10 +92,14 @@ let JwtService = JwtService_1 = class JwtService {
|
|
|
47
92
|
this.logger.warn(`No jwks client found for ${authConfig.name}`);
|
|
48
93
|
return Promise.resolve(undefined);
|
|
49
94
|
}
|
|
50
|
-
|
|
95
|
+
const algorithms = this.resolveAlgorithms(authConfig, true);
|
|
96
|
+
if (!algorithms)
|
|
97
|
+
return Promise.resolve(undefined);
|
|
98
|
+
return new Promise((resolve) => {
|
|
51
99
|
if (!token) {
|
|
52
100
|
this.logger.warn("No token provided for JWT verification");
|
|
53
101
|
resolve(undefined);
|
|
102
|
+
return;
|
|
54
103
|
}
|
|
55
104
|
(0, jsonwebtoken_1.verify)(token, (header, callback) => {
|
|
56
105
|
this.jwksClients[authConfig.name].getSigningKey(header.kid, (err, key) => {
|
|
@@ -66,7 +115,7 @@ let JwtService = JwtService_1 = class JwtService {
|
|
|
66
115
|
}, {
|
|
67
116
|
issuer: authConfig.issuer,
|
|
68
117
|
audience: authConfig.audience,
|
|
69
|
-
algorithms
|
|
118
|
+
algorithms,
|
|
70
119
|
}, (err, decoded) => {
|
|
71
120
|
if (err) {
|
|
72
121
|
resolve(undefined);
|
|
@@ -80,14 +129,22 @@ let JwtService = JwtService_1 = class JwtService {
|
|
|
80
129
|
if (!authConfig) {
|
|
81
130
|
return Promise.resolve(undefined);
|
|
82
131
|
}
|
|
83
|
-
|
|
132
|
+
if (!authConfig.secret) {
|
|
133
|
+
this.logger.error(`[${authConfig.name}] jwt provider has no 'secret'; denying.`);
|
|
134
|
+
return Promise.resolve(undefined);
|
|
135
|
+
}
|
|
136
|
+
const algorithms = this.resolveAlgorithms(authConfig, false);
|
|
137
|
+
if (!algorithms)
|
|
138
|
+
return Promise.resolve(undefined);
|
|
139
|
+
return new Promise((resolve) => {
|
|
84
140
|
if (!token) {
|
|
85
141
|
resolve(undefined);
|
|
142
|
+
return;
|
|
86
143
|
}
|
|
87
144
|
(0, jsonwebtoken_1.verify)(token, authConfig.secret, {
|
|
88
145
|
issuer: authConfig.issuer,
|
|
89
146
|
audience: authConfig.audience,
|
|
90
|
-
algorithms
|
|
147
|
+
algorithms,
|
|
91
148
|
}, (err, decoded) => {
|
|
92
149
|
if (err) {
|
|
93
150
|
resolve(undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/proxy/services/jwt.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA0E;AAC1E,iCAA8B;AAC9B,+
|
|
1
|
+
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/proxy/services/jwt.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA0E;AAC1E,iCAA8B;AAC9B,+CAA4F;AAC5F,uCAAsC;AAEtC,8CAA2D;AAGpD,IAAM,UAAU,kBAAhB,MAAM,UAAU;IAKrB,YAA4D,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;QACzF,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,YAAU,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,YAAY;QACV,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,qBAAU,CAAC;oBAC1C,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,IAAI;oBACX,SAAS,EAAE,IAAI;oBACf,qBAAqB,EAAE,EAAE;oBACzB,YAAY,EAAE,IAAI,aAAK,CAAC,EAAE,kBAAkB,EAAE,GAAG,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;iBACrF,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAGO,sBAAsB,CAAC,GAAsB;QACnD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,kCAAkC,GAAG,CAAC,IAAI,uFAAuF,CAAC,CAAC;YACnK,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,oHAAoH,CAAC,CAAC;YACtJ,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,wCAAwC,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,8DAA8D,CAAC,CAAC;YAChG,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,uGAAuG,CAAC,CAAC;YACxI,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,0HAA0H,CAAC,CAAC;QAC3J,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,0HAA0H,CAAC,CAAC;QAC3J,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,GAAW;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAOO,iBAAiB,CAAC,GAAsB,EAAE,iBAA0B;QAC1E,MAAM,IAAI,GAAG,GAAG,CAAC,UAAqC,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,qDAAqD,CAAC,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,wCAAwC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,wDAAwD,CAAC,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAiB,UAA6B,EAAE,KAAa;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YACjE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBAC3D,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAA,qBAAM,EAAC,KAAK,EACV,CAAC,MAAiB,EAAE,QAA4B,EAAE,EAAE;gBAClD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACvE,IAAI,GAAG,EAAE,CAAC;wBACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,UAAU,CAAC,IAAI,6BAA6B,EAAE,GAAG,CAAC,CAAC;wBAChF,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;wBACtC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,EACD;gBACE,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,UAAU;aACX,EACD,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;gBACf,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,SAAS,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,OAAY,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAiB,UAA6B,EAAE,KAAa;QAC5E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,0CAA0C,CAAC,CAAC;YACjF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAA,qBAAM,EAAC,KAAK,EACV,UAAU,CAAC,MAAM,EACjB;gBACE,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,UAAU;aACX,EACD,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;gBACf,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,SAAS,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,OAAY,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA9JY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;IAME,WAAA,IAAA,eAAM,EAAC,6BAAqB,CAAC,CAAA;;GAL/B,UAAU,CA8JtB"}
|
|
@@ -12,6 +12,7 @@ type NamedWebSocket = WebSocket & {
|
|
|
12
12
|
id: string;
|
|
13
13
|
isAlive: boolean;
|
|
14
14
|
token?: string;
|
|
15
|
+
tokenExp?: number;
|
|
15
16
|
authByProvider?: {
|
|
16
17
|
[provider: string]: ProcessedAuthData;
|
|
17
18
|
};
|
|
@@ -32,6 +33,8 @@ export declare class WebSocketService implements OnModuleInit, OnModuleDestroy,
|
|
|
32
33
|
constructor(amqpConnection: AmqpConnection, httpClient: HttpService, broker: BrokerService, httpAuth: HttpAuthHandlerService, gatewayConfig: GatewayConfig, brokerConfig: BrokerConfig);
|
|
33
34
|
afterInit(server: Server): void;
|
|
34
35
|
handleConnection(client: NamedWebSocket, request: IncomingMessage): void;
|
|
36
|
+
private isExpired;
|
|
37
|
+
private closeExpired;
|
|
35
38
|
handleDisconnect(client: NamedWebSocket): void;
|
|
36
39
|
onModuleDestroy(): void;
|
|
37
40
|
private onClientMessage;
|
|
@@ -41,7 +41,12 @@ let WebSocketService = WebSocketService_1 = class WebSocketService {
|
|
|
41
41
|
this.server = server;
|
|
42
42
|
const interval = this.gatewayConfig.ws?.heartbeatIntervalMs ?? 30000;
|
|
43
43
|
this.heartbeat = setInterval(() => {
|
|
44
|
-
server.clients.forEach((
|
|
44
|
+
server.clients.forEach((sock) => {
|
|
45
|
+
const ws = sock;
|
|
46
|
+
if (this.isExpired(ws)) {
|
|
47
|
+
this.closeExpired(ws);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
45
50
|
if (ws.isAlive === false) {
|
|
46
51
|
ws.terminate();
|
|
47
52
|
this.handleDisconnect(ws);
|
|
@@ -57,6 +62,13 @@ let WebSocketService = WebSocketService_1 = class WebSocketService {
|
|
|
57
62
|
}
|
|
58
63
|
handleConnection(client, request) {
|
|
59
64
|
const wsCfg = this.gatewayConfig.ws;
|
|
65
|
+
if (wsCfg?.allowedOrigins?.length) {
|
|
66
|
+
const origin = request.headers.origin;
|
|
67
|
+
if (!origin || !wsCfg.allowedOrigins.includes(origin)) {
|
|
68
|
+
client.close(1008, 'Origin not allowed');
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
60
72
|
if (wsCfg?.maxConnections && this.server?.clients && this.server.clients.size > wsCfg.maxConnections) {
|
|
61
73
|
client.close(1013, 'Server busy');
|
|
62
74
|
return;
|
|
@@ -69,6 +81,16 @@ let WebSocketService = WebSocketService_1 = class WebSocketService {
|
|
|
69
81
|
client.on('close', () => this.handleDisconnect(client));
|
|
70
82
|
client.on('error', () => this.handleDisconnect(client));
|
|
71
83
|
}
|
|
84
|
+
isExpired(client) {
|
|
85
|
+
return client.tokenExp != null && Date.now() >= client.tokenExp * 1000;
|
|
86
|
+
}
|
|
87
|
+
closeExpired(client) {
|
|
88
|
+
this.handleDisconnect(client);
|
|
89
|
+
try {
|
|
90
|
+
client.close(1008, 'token expired');
|
|
91
|
+
}
|
|
92
|
+
catch { }
|
|
93
|
+
}
|
|
72
94
|
handleDisconnect(client) {
|
|
73
95
|
const subs = this.subscriptions[client.id];
|
|
74
96
|
if (subs) {
|
|
@@ -84,6 +106,16 @@ let WebSocketService = WebSocketService_1 = class WebSocketService {
|
|
|
84
106
|
}
|
|
85
107
|
}
|
|
86
108
|
async onClientMessage(client, raw) {
|
|
109
|
+
if (this.isExpired(client)) {
|
|
110
|
+
this.closeExpired(client);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const maxBytes = this.gatewayConfig.ws?.maxMessageBytes ?? 16384;
|
|
114
|
+
const size = typeof raw === 'string' ? Buffer.byteLength(raw) : (raw?.length ?? 0);
|
|
115
|
+
if (size > maxBytes) {
|
|
116
|
+
this.logger.warn(`Dropped oversized WS message (${size}B > ${maxBytes}B) from client ${client.id}`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
87
119
|
let parsed;
|
|
88
120
|
try {
|
|
89
121
|
parsed = JSON.parse(raw.toString());
|
|
@@ -151,6 +183,10 @@ let WebSocketService = WebSocketService_1 = class WebSocketService {
|
|
|
151
183
|
this.subscriptions[client.id][eventDef.name] = this.subjects[eventDef.name]
|
|
152
184
|
.pipe((0, rxjs_1.filter)((o) => this.matches(o, select, eventDef, scopeValue)))
|
|
153
185
|
.subscribe((o) => {
|
|
186
|
+
if (this.isExpired(client)) {
|
|
187
|
+
this.closeExpired(client);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
154
190
|
client.send(JSON.stringify({
|
|
155
191
|
topic: `on${eventDef.name.charAt(0).toUpperCase() + eventDef.name.slice(1)}`,
|
|
156
192
|
data: o.payload || o,
|
|
@@ -189,6 +225,9 @@ let WebSocketService = WebSocketService_1 = class WebSocketService {
|
|
|
189
225
|
return (client.authByProvider[providerName] = { success: false });
|
|
190
226
|
}
|
|
191
227
|
const decoded = await this.httpAuth.verifyToken(provider, client.token);
|
|
228
|
+
if (decoded?.exp && client.tokenExp == null) {
|
|
229
|
+
client.tokenExp = decoded.exp;
|
|
230
|
+
}
|
|
192
231
|
const claims = this.httpAuth.mapClaims(provider, decoded);
|
|
193
232
|
return (client.authByProvider[providerName] = claims);
|
|
194
233
|
}
|
|
@@ -214,6 +253,17 @@ let WebSocketService = WebSocketService_1 = class WebSocketService {
|
|
|
214
253
|
}
|
|
215
254
|
this.wsEvents = [...this.gatewayConfig?.events || [], ...extEvents];
|
|
216
255
|
this.wsEvents.forEach(e => e.name = e.name.trim());
|
|
256
|
+
if (!this.gatewayConfig.ws?.allowedOrigins?.length) {
|
|
257
|
+
this.logger.warn('gateway.ws.allowedOrigins not set: WebSocket handshakes are accepted from any Origin.');
|
|
258
|
+
}
|
|
259
|
+
for (const e of this.wsEvents.filter(o => o.type === 'ws')) {
|
|
260
|
+
if (e.auth && !this.httpAuth.findProvider(e.auth)) {
|
|
261
|
+
this.logger.error(`WS event '${e.name}' references unknown auth provider '${e.auth}'; subscriptions will be denied.`);
|
|
262
|
+
}
|
|
263
|
+
if (e.auth && e.requireAuth !== false && !(e.scopeClaim && e.payloadKey)) {
|
|
264
|
+
this.logger.warn(`WS event '${e.name}' has auth but no scopeClaim/payloadKey: every authorized subscriber receives ALL messages (no per-user isolation).`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
217
267
|
const cname = this.brokerConfig.connectionManagerOptions.connectionOptions?.clientProperties?.connection_name;
|
|
218
268
|
for (const event of this.wsEvents) {
|
|
219
269
|
if (!this.subjects[event.name]) {
|