@cryptexlabs/codex-nodejs-common 0.10.35 → 0.10.37

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/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.10.35",
3
+ "version": "0.10.37",
4
4
  "description": "Common code for Codex framework",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -6,7 +6,11 @@ export declare class AuthfGuard implements CanActivate {
6
6
  private readonly contextBuilder;
7
7
  private _pem;
8
8
  private _jwk;
9
+ private _blacklistedSubjects;
9
10
  constructor(config: DefaultConfig, contextBuilder: ContextBuilder);
10
11
  canActivate(context: ExecutionContext): boolean;
12
+ private _getApiHeaders;
11
13
  private _ensurePem;
14
+ private _watchBlacklist;
15
+ private _updateBlacklist;
12
16
  }
@@ -25,6 +25,8 @@ let AuthfGuard = class AuthfGuard {
25
25
  this.config = config;
26
26
  this.contextBuilder = contextBuilder;
27
27
  this._ensurePem().then();
28
+ this._watchBlacklist().then();
29
+ this._blacklistedSubjects = [];
28
30
  }
29
31
  canActivate(context) {
30
32
  var _a;
@@ -39,42 +41,76 @@ let AuthfGuard = class AuthfGuard {
39
41
  throw new common_1.UnauthorizedException(`Invalid token`);
40
42
  }
41
43
  const token = request.headers.authorization.replace("Bearer ", "");
44
+ let decodedToken;
42
45
  try {
43
46
  jwt.verify(token, this._pem, {
44
47
  algorithms: [this._jwk.alg],
45
48
  });
46
- return true;
49
+ decodedToken = jwt.decode(token);
47
50
  }
48
51
  catch (err) {
49
52
  throw new common_1.UnauthorizedException(`Invalid token`);
50
53
  }
54
+ if (this._blacklistedSubjects.includes(decodedToken.sub)) {
55
+ throw new common_1.UnauthorizedException();
56
+ }
57
+ return true;
58
+ }
59
+ _getApiHeaders(context) {
60
+ const now = new Date();
61
+ return {
62
+ "X-Correlation-Id": (0, uuid_1.v4)(),
63
+ "Accept-Language": "en-US",
64
+ "X-Started": now.toISOString(),
65
+ "X-Created": now.toISOString(),
66
+ "X-Context-Category": "default",
67
+ "X-Context-Id": "none",
68
+ "X-Client-Name": context.client.name,
69
+ "X-Client-Version": context.client.version,
70
+ "X-Client-Variant": context.client.variant,
71
+ "X-Client-Id": context.client.id,
72
+ };
51
73
  }
52
74
  async _ensurePem() {
53
75
  if (this._pem || !this.config.authEnabled) {
54
76
  return;
55
77
  }
56
- const now = new Date();
57
78
  const context = this.contextBuilder.build().getResult();
58
79
  const keysHttpResponse = await axios_1.default.get(`/api/v1/key`, {
59
80
  baseURL: this.config.authfUrl,
60
- headers: {
61
- "X-Correlation-Id": (0, uuid_1.v4)(),
62
- "Accept-Language": "en-US",
63
- "X-Started": now.toISOString(),
64
- "X-Created": now.toISOString(),
65
- "X-Context-Category": "default",
66
- "X-Context-Id": "none",
67
- "X-Client-Name": context.client.name,
68
- "X-Client-Version": context.client.version,
69
- "X-Client-Variant": context.client.variant,
70
- "X-Client-Id": context.client.id,
71
- },
81
+ headers: this._getApiHeaders(context),
72
82
  });
73
83
  const response = keysHttpResponse.data;
74
84
  this._jwk = response.keys[0];
75
85
  this._pem = jwkToPem(this._jwk);
76
86
  context.logger.debug(`Got jwk from authf`);
77
87
  }
88
+ async _watchBlacklist() {
89
+ const context = this.contextBuilder.build().getResult();
90
+ setInterval(async () => {
91
+ try {
92
+ await this._updateBlacklist(context);
93
+ }
94
+ catch (e) {
95
+ context.logger.warn(`Failed to update subject blacklist: ${e.message}`);
96
+ }
97
+ }, this.config.blacklistRefreshIntervalInSeconds * 1000);
98
+ }
99
+ async _updateBlacklist(context) {
100
+ var _a, _b, _c;
101
+ const headers = this._getApiHeaders(context);
102
+ const subjectBlacklistResponse = await axios_1.default.get(`/api/v1/blacklisted-subjects`, {
103
+ baseURL: this.config.authfUrl,
104
+ headers,
105
+ });
106
+ if (((_a = subjectBlacklistResponse.data) === null || _a === void 0 ? void 0 : _a.data) !== undefined &&
107
+ Array.isArray((_b = subjectBlacklistResponse.data) === null || _b === void 0 ? void 0 : _b.data)) {
108
+ this._blacklistedSubjects = (_c = subjectBlacklistResponse.data) === null || _c === void 0 ? void 0 : _c.data;
109
+ if (this._blacklistedSubjects.length > 0) {
110
+ context.logger.verbose(`Got blacklist`, this._blacklistedSubjects);
111
+ }
112
+ }
113
+ }
78
114
  };
79
115
  exports.AuthfGuard = AuthfGuard;
80
116
  exports.AuthfGuard = AuthfGuard = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"authf.guard.js","sourceRoot":"","sources":["../../../src/auth/authf.guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authf.guard.js","sourceRoot":"","sources":["../../../src/auth/authf.guard.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ import { JsonSerializableInterface } from "../message";
10
10
  import { TelemetryConfigInterface } from "./telemetry-config.interface";
11
11
  import { LOG_LEVEL } from "./logging-config.interface";
12
12
  import { RedisConfigInterface } from "./redis-config.interface";
13
+ import { SqlConfigInterface } from "./sql-config.interface";
14
+ import { PaginationConfigInterface } from "./pagination-config.interface";
13
15
  export declare class DefaultConfig implements JsonSerializableInterface<any> {
14
16
  private readonly _clientId;
15
17
  private _appName;
@@ -92,6 +94,9 @@ export declare class DefaultConfig implements JsonSerializableInterface<any> {
92
94
  get apiPrefixes(): string[];
93
95
  get prettyPrintLogs(): boolean;
94
96
  get redis(): RedisConfigInterface;
97
+ get pagination(): PaginationConfigInterface;
98
+ get sql(): SqlConfigInterface;
95
99
  get authfUrl(): string;
96
100
  get authEnabled(): boolean;
101
+ get blacklistRefreshIntervalInSeconds(): number;
97
102
  }
@@ -26,7 +26,7 @@ const watch = require("watch");
26
26
  const fastq = require("fastq");
27
27
  const logger_1 = require("../logger");
28
28
  const process = require("process");
29
- const merge_anything_1 = require("@cryptexlabs/merge-anything");
29
+ const mergeAnything = require("@cryptexlabs/merge-anything");
30
30
  let DefaultConfig = class DefaultConfig {
31
31
  constructor(basePath, appPath, _clientId, fallbackEnvironment) {
32
32
  this._clientId = _clientId;
@@ -115,7 +115,7 @@ let DefaultConfig = class DefaultConfig {
115
115
  if (typeof c !== "object") {
116
116
  throw new Error(`Invalid config in file ${path}`);
117
117
  }
118
- serverConfigUpdated = merge_anything_1.default.merge(c, serverConfigUpdated);
118
+ serverConfigUpdated = mergeAnything.merge(c, serverConfigUpdated);
119
119
  if (startWatchers) {
120
120
  this._startConfigPatchWatch(path);
121
121
  }
@@ -308,6 +308,36 @@ let DefaultConfig = class DefaultConfig {
308
308
  port: parseInt(process.env.REDIS_PORT ? process.env.REDIS_PORT : "6379", 10),
309
309
  };
310
310
  }
311
+ get pagination() {
312
+ return {
313
+ defaultPageSize: parseInt(process.env.PAGINATION_DEFAULT_PAGESIZE || "20", 10),
314
+ maxPageSize: parseInt(process.env.PAGINATION_MAX_PAGESIZE || "200", 10),
315
+ };
316
+ }
317
+ get sql() {
318
+ return {
319
+ database: process.env.SQL_DATABASE,
320
+ client: process.env.SQL_CLIENT,
321
+ userName: process.env.SQL_USERNAME,
322
+ password: process.env.SQL_PASSWORD,
323
+ primary: {
324
+ hostName: process.env.SQL_HOSTNAME,
325
+ port: parseInt(process.env.SQL_PORT, 10),
326
+ pool: {
327
+ min: parseInt(process.env.SQL_POOL_MIN, 10),
328
+ max: parseInt(process.env.SQL_POOL_MAX, 10),
329
+ },
330
+ },
331
+ reader: {
332
+ hostName: process.env.SQL_HOSTNAME_RO,
333
+ port: parseInt(process.env.SQL_PORT_RO, 10),
334
+ pool: {
335
+ min: parseInt(process.env.SQL_POOL_RO_MIN, 10),
336
+ max: parseInt(process.env.SQL_POOL_RO_MAX, 10),
337
+ },
338
+ },
339
+ };
340
+ }
311
341
  get authfUrl() {
312
342
  return process.env.AUTHF_URL || "http://localhost:3007";
313
343
  }
@@ -315,6 +345,11 @@ let DefaultConfig = class DefaultConfig {
315
345
  return (process.env.AUTH_ENABLED === "true" ||
316
346
  !["localhost", "docker"].includes(this.environmentName));
317
347
  }
348
+ get blacklistRefreshIntervalInSeconds() {
349
+ return process.env.BLACKLIST_REFRESH_INTERVAL_IN_SECONDS
350
+ ? parseInt(process.env.BLACKLIST_REFRESH_INTERVAL_IN_SECONDS, 10)
351
+ : 15;
352
+ }
318
353
  };
319
354
  exports.DefaultConfig = DefaultConfig;
320
355
  exports.DefaultConfig = DefaultConfig = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../../src/config/default-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../../src/config/default-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.10.35",
3
+ "version": "0.10.37",
4
4
  "description": "Common code for Codex framework",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -12,7 +12,7 @@ import {
12
12
  } from "@cryptexlabs/authf-data-model";
13
13
  import axios from "axios";
14
14
  import { v4 as uuidv4 } from "uuid";
15
- import { ContextBuilder } from "../context";
15
+ import { Context, ContextBuilder } from "../context";
16
16
  import * as jwkToPem from "jwk-to-pem";
17
17
  import * as jwt from "jsonwebtoken";
18
18
  import { Algorithm } from "jsonwebtoken";
@@ -21,12 +21,15 @@ import { Algorithm } from "jsonwebtoken";
21
21
  export class AuthfGuard implements CanActivate {
22
22
  private _pem: string;
23
23
  private _jwk: JwtKeyInterface;
24
+ private _blacklistedSubjects: string[];
24
25
 
25
26
  constructor(
26
27
  @Inject("CONFIG") private readonly config: DefaultConfig,
27
28
  @Inject("CONTEXT_BUILDER") private readonly contextBuilder: ContextBuilder
28
29
  ) {
29
30
  this._ensurePem().then();
31
+ this._watchBlacklist().then();
32
+ this._blacklistedSubjects = [];
30
33
  }
31
34
 
32
35
  public canActivate(context: ExecutionContext): boolean {
@@ -45,38 +48,50 @@ export class AuthfGuard implements CanActivate {
45
48
  }
46
49
  const token = request.headers.authorization.replace("Bearer ", "");
47
50
 
51
+ let decodedToken: any;
52
+
48
53
  try {
49
54
  jwt.verify(token, this._pem, {
50
55
  algorithms: [this._jwk.alg as Algorithm],
51
56
  });
52
- return true;
57
+
58
+ decodedToken = (jwt.decode(token) as unknown) as any;
53
59
  } catch (err) {
54
60
  throw new UnauthorizedException(`Invalid token`);
55
61
  }
62
+
63
+ if (this._blacklistedSubjects.includes(decodedToken.sub)) {
64
+ throw new UnauthorizedException();
65
+ }
66
+
67
+ return true;
68
+ }
69
+
70
+ private _getApiHeaders(context: Context): Record<string, string> {
71
+ const now = new Date();
72
+ return {
73
+ "X-Correlation-Id": uuidv4(),
74
+ "Accept-Language": "en-US",
75
+ "X-Started": now.toISOString(),
76
+ "X-Created": now.toISOString(),
77
+ "X-Context-Category": "default",
78
+ "X-Context-Id": "none",
79
+ "X-Client-Name": context.client.name,
80
+ "X-Client-Version": context.client.version,
81
+ "X-Client-Variant": context.client.variant,
82
+ "X-Client-Id": context.client.id,
83
+ };
56
84
  }
57
85
 
58
86
  private async _ensurePem(): Promise<void> {
59
87
  if (this._pem || !this.config.authEnabled) {
60
88
  return;
61
89
  }
62
-
63
- const now = new Date();
64
90
  const context = this.contextBuilder.build().getResult();
65
91
 
66
92
  const keysHttpResponse = await axios.get(`/api/v1/key`, {
67
93
  baseURL: this.config.authfUrl,
68
- headers: {
69
- "X-Correlation-Id": uuidv4(),
70
- "Accept-Language": "en-US",
71
- "X-Started": now.toISOString(),
72
- "X-Created": now.toISOString(),
73
- "X-Context-Category": "default",
74
- "X-Context-Id": "none",
75
- "X-Client-Name": context.client.name,
76
- "X-Client-Version": context.client.version,
77
- "X-Client-Variant": context.client.variant,
78
- "X-Client-Id": context.client.id,
79
- },
94
+ headers: this._getApiHeaders(context),
80
95
  });
81
96
 
82
97
  const response: JwtKeyResponseInterface = keysHttpResponse.data;
@@ -86,4 +101,38 @@ export class AuthfGuard implements CanActivate {
86
101
 
87
102
  context.logger.debug(`Got jwk from authf`);
88
103
  }
104
+
105
+ private async _watchBlacklist() {
106
+ const context = this.contextBuilder.build().getResult();
107
+
108
+ setInterval(async () => {
109
+ try {
110
+ await this._updateBlacklist(context);
111
+ } catch (e) {
112
+ context.logger.warn(`Failed to update subject blacklist: ${e.message}`);
113
+ }
114
+ }, this.config.blacklistRefreshIntervalInSeconds * 1000);
115
+ }
116
+
117
+ private async _updateBlacklist(context: Context) {
118
+ const headers = this._getApiHeaders(context);
119
+
120
+ const subjectBlacklistResponse = await axios.get(
121
+ `/api/v1/blacklisted-subjects`,
122
+ {
123
+ baseURL: this.config.authfUrl,
124
+ headers,
125
+ }
126
+ );
127
+
128
+ if (
129
+ subjectBlacklistResponse.data?.data !== undefined &&
130
+ Array.isArray(subjectBlacklistResponse.data?.data)
131
+ ) {
132
+ this._blacklistedSubjects = subjectBlacklistResponse.data?.data;
133
+ if (this._blacklistedSubjects.length > 0) {
134
+ context.logger.verbose(`Got blacklist`, this._blacklistedSubjects);
135
+ }
136
+ }
137
+ }
89
138
  }
@@ -27,8 +27,10 @@ import * as watch from "watch";
27
27
  import * as fastq from "fastq";
28
28
  import { CustomLogger } from "../logger";
29
29
  import * as process from "process";
30
- import mergeAnything from "@cryptexlabs/merge-anything";
30
+ import * as mergeAnything from "@cryptexlabs/merge-anything";
31
31
  import { RedisConfigInterface } from "./redis-config.interface";
32
+ import { SqlConfigInterface } from "./sql-config.interface";
33
+ import { PaginationConfigInterface } from "./pagination-config.interface";
32
34
 
33
35
  @Injectable()
34
36
  export class DefaultConfig implements JsonSerializableInterface<any> {
@@ -427,6 +429,41 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
427
429
  };
428
430
  }
429
431
 
432
+ get pagination(): PaginationConfigInterface {
433
+ return {
434
+ defaultPageSize: parseInt(
435
+ process.env.PAGINATION_DEFAULT_PAGESIZE || "20",
436
+ 10
437
+ ),
438
+ maxPageSize: parseInt(process.env.PAGINATION_MAX_PAGESIZE || "200", 10),
439
+ };
440
+ }
441
+
442
+ get sql(): SqlConfigInterface {
443
+ return {
444
+ database: process.env.SQL_DATABASE,
445
+ client: process.env.SQL_CLIENT,
446
+ userName: process.env.SQL_USERNAME,
447
+ password: process.env.SQL_PASSWORD,
448
+ primary: {
449
+ hostName: process.env.SQL_HOSTNAME,
450
+ port: parseInt(process.env.SQL_PORT, 10),
451
+ pool: {
452
+ min: parseInt(process.env.SQL_POOL_MIN, 10),
453
+ max: parseInt(process.env.SQL_POOL_MAX, 10),
454
+ },
455
+ },
456
+ reader: {
457
+ hostName: process.env.SQL_HOSTNAME_RO,
458
+ port: parseInt(process.env.SQL_PORT_RO, 10),
459
+ pool: {
460
+ min: parseInt(process.env.SQL_POOL_RO_MIN, 10),
461
+ max: parseInt(process.env.SQL_POOL_RO_MAX, 10),
462
+ },
463
+ },
464
+ };
465
+ }
466
+
430
467
  public get authfUrl(): string {
431
468
  return process.env.AUTHF_URL || "http://localhost:3007";
432
469
  }
@@ -437,4 +474,10 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
437
474
  !["localhost", "docker"].includes(this.environmentName)
438
475
  );
439
476
  }
477
+
478
+ public get blacklistRefreshIntervalInSeconds(): number {
479
+ return process.env.BLACKLIST_REFRESH_INTERVAL_IN_SECONDS
480
+ ? parseInt(process.env.BLACKLIST_REFRESH_INTERVAL_IN_SECONDS, 10)
481
+ : 15;
482
+ }
440
483
  }