eservices-back-core 2.1.68 → 2.1.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/Server.js +1 -1
  2. package/dist/Server.js.map +1 -1
  3. package/dist/app.js +2 -2
  4. package/dist/app.js.map +1 -1
  5. package/dist/auth/async-manager.d.ts +13 -0
  6. package/dist/auth/async-manager.d.ts.map +1 -0
  7. package/dist/auth/async-manager.js +43 -0
  8. package/dist/auth/async-manager.js.map +1 -0
  9. package/dist/auth/authorization-client.d.ts +78 -0
  10. package/dist/auth/authorization-client.d.ts.map +1 -0
  11. package/dist/auth/authorization-client.js +315 -0
  12. package/dist/auth/authorization-client.js.map +1 -0
  13. package/dist/auth/locker-emulation.d.ts +11 -0
  14. package/dist/auth/locker-emulation.d.ts.map +1 -0
  15. package/dist/auth/locker-emulation.js +28 -0
  16. package/dist/auth/locker-emulation.js.map +1 -0
  17. package/dist/auth/use-auth.d.ts +0 -16
  18. package/dist/auth/use-auth.d.ts.map +1 -1
  19. package/dist/auth/use-auth.js +168 -160
  20. package/dist/auth/use-auth.js.map +1 -1
  21. package/dist/classes/client-error-generator.js +1 -1
  22. package/dist/classes/client-error-generator.js.map +1 -1
  23. package/dist/configuration.json +7 -7
  24. package/dist/dtos/dto-list-setting.d.ts.map +1 -1
  25. package/dist/dtos/dto-list-setting.js +3 -3
  26. package/dist/dtos/dto-list-setting.js.map +1 -1
  27. package/dist/errors/auth-error.d.ts +1 -0
  28. package/dist/errors/auth-error.d.ts.map +1 -1
  29. package/dist/errors/auth-error.js +3 -0
  30. package/dist/errors/auth-error.js.map +1 -1
  31. package/dist/errors/list-configuration-error.d.ts +16 -0
  32. package/dist/errors/list-configuration-error.d.ts.map +1 -0
  33. package/dist/errors/list-configuration-error.js +23 -0
  34. package/dist/errors/list-configuration-error.js.map +1 -0
  35. package/dist/errors/metadata-error.d.ts +5 -0
  36. package/dist/errors/metadata-error.d.ts.map +1 -1
  37. package/dist/errors/metadata-error.js +7 -0
  38. package/dist/errors/metadata-error.js.map +1 -1
  39. package/dist/index.d.ts +8 -3
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +12 -5
  42. package/dist/index.js.map +1 -1
  43. package/dist/middleware/auth-middleware.d.ts +3 -13
  44. package/dist/middleware/auth-middleware.d.ts.map +1 -1
  45. package/dist/middleware/auth-middleware.js +3 -2
  46. package/dist/middleware/auth-middleware.js.map +1 -1
  47. package/dist/middleware/error-middleware.js +1 -1
  48. package/dist/middleware/error-middleware.js.map +1 -1
  49. package/dist/middleware/session-middleware.js +25 -2
  50. package/dist/middleware/session-middleware.js.map +1 -1
  51. package/dist/middleware/user-middleware.d.ts.map +1 -1
  52. package/dist/middleware/user-middleware.js +4 -4
  53. package/dist/middleware/user-middleware.js.map +1 -1
  54. package/dist/router/index.js +1 -1
  55. package/dist/router/index.js.map +1 -1
  56. package/dist/services/list-setting-service.js +6 -6
  57. package/dist/services/list-setting-service.js.map +1 -1
  58. package/dist/socket/connect-socket.d.ts.map +1 -1
  59. package/dist/socket/connect-socket.js +11 -9
  60. package/dist/socket/connect-socket.js.map +1 -1
  61. package/dist/store/list-store.js +2 -2
  62. package/dist/store/list-store.js.map +1 -1
  63. package/dist/types/auth-type.d.ts +1 -3
  64. package/dist/types/auth-type.d.ts.map +1 -1
  65. package/package.json +3 -3
  66. package/tsconfig.json +2 -3
package/dist/Server.js CHANGED
@@ -134,7 +134,7 @@ function createServer(params) {
134
134
  return __awaiter(this, void 0, void 0, function* () {
135
135
  const server = new Server(params);
136
136
  yield template_store_1.default.init([path_1.default.resolve(__dirname, 'templates'), params.templatesDir]);
137
- (0, auth_middleware_1.initializeAuth)(params.oidc);
137
+ yield (0, auth_middleware_1.initializeAuth)(params.oidc);
138
138
  (0, connect_socket_1.default)(server);
139
139
  if (params.amqp)
140
140
  yield (0, connect_rabbit_1.default)(server, params.amqp);
@@ -1 +1 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"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"}
package/dist/app.js CHANGED
@@ -38,8 +38,8 @@ Object.assign(process.env, configuration_json_1.default || {});
38
38
  },
39
39
  session: {
40
40
  secret: "Вышел заяц на крыльцо, почесать своё яйцо.",
41
- resave: true,
42
- saveUninitialized: true,
41
+ resave: false, // Не сохранять сессию, если она не изменена
42
+ saveUninitialized: false, // Не сохранять пустые сессии
43
43
  },
44
44
  // testAvailableEntities: ["ApplicationStatus", "NewOperatingLicenseApplication"],
45
45
  handleResolveUsageContext(path) {
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export default class AsyncManager {
2
+ store: Map<string, {
3
+ promise: Promise<any>;
4
+ resolve: Function;
5
+ reject: Function;
6
+ }>;
7
+ constructor();
8
+ lock(token: string): any;
9
+ has(token: string): false | Promise<any>;
10
+ unlock(token: string): void;
11
+ rejectOperation(token: string, error: any): void;
12
+ }
13
+ //# sourceMappingURL=async-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-manager.d.ts","sourceRoot":"","sources":["../../src/auth/async-manager.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,YAAY;IAEhC,KAAK;iBAA6B,QAAQ,GAAG,CAAC;iBAAW,QAAQ;gBAAU,QAAQ;OAAI;;IAIvF,IAAI,CAAC,KAAK,EAAE,MAAM;IAgBlB,GAAG,CAAC,KAAK,EAAE,MAAM;IASjB,MAAM,CAAC,KAAK,EAAE,MAAM;IAQpB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;CAOzC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class AsyncManager {
4
+ constructor() {
5
+ this.store = new Map();
6
+ }
7
+ lock(token) {
8
+ const deferred = {
9
+ promise: null,
10
+ resolve: null,
11
+ reject: null,
12
+ };
13
+ deferred.promise = new Promise((resolve, reject) => {
14
+ deferred.resolve = resolve;
15
+ deferred.reject = reject;
16
+ });
17
+ this.store.set(token, deferred);
18
+ return deferred.promise;
19
+ }
20
+ has(token) {
21
+ const deferred = this.store.get(token);
22
+ if (deferred) {
23
+ return deferred.promise;
24
+ }
25
+ return false;
26
+ }
27
+ unlock(token) {
28
+ const deferred = this.store.get(token);
29
+ if (deferred) {
30
+ deferred.resolve();
31
+ this.store.delete(token);
32
+ }
33
+ }
34
+ rejectOperation(token, error) {
35
+ const deferred = this.store.get(token);
36
+ if (deferred) {
37
+ deferred.reject(error);
38
+ this.store.delete(token);
39
+ }
40
+ }
41
+ }
42
+ exports.default = AsyncManager;
43
+ //# sourceMappingURL=async-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-manager.js","sourceRoot":"","sources":["../../src/auth/async-manager.ts"],"names":[],"mappings":";;AAAA,MAAqB,YAAY;IAIhC;QAFA,UAAK,GAAG,IAAI,GAAG,EAAwE,CAAA;IAExE,CAAC;IAEhB,IAAI,CAAC,KAAa;QACjB,MAAM,QAAQ,GAAG;YAChB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;SACZ,CAAC;QAEF,QAAQ,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,KAAa;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,KAAU;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;CACD;AA9CD,+BA8CC"}
@@ -0,0 +1,78 @@
1
+ import { IAuthOptions } from "../types/auth-type";
2
+ import { Request } from "express";
3
+ import * as client from "openid-client";
4
+ import { TokenEndpointResponse } from "openid-client";
5
+ export default class AuthorizationClient {
6
+ static readonly CALLBACK_URL_PATH = "/callback";
7
+ static getFullAccessToken(authState: ReturnType<typeof AuthorizationClient["getAuthorizationSession"]>): string;
8
+ static get AUTH_SESSION_KEY(): string;
9
+ static get LOGOUT_URL_PATH(): string;
10
+ static get POST_LOGOUT_URL_PATH(): string;
11
+ /**
12
+ * @description Возвращает данные хранимые в сессии пользователя связанные с авторизацией.
13
+ * @param request
14
+ * @private
15
+ */
16
+ static getAuthorizationSession(request: Request): {
17
+ state: any;
18
+ codeVerifier: string;
19
+ tokens: client.TokenEndpointResponse;
20
+ version: number;
21
+ expired: number;
22
+ external: string;
23
+ };
24
+ static initSession(request: Request): void;
25
+ static updateSessionKey(request: Request, sessionKey: "codeVerifier" | "state" | "tokens" | "expired" | "external", value: any): void;
26
+ /**
27
+ * @description Конфигурация клиента openid
28
+ */
29
+ config: client.Configuration;
30
+ /**
31
+ * @description URL на котором находится ID сервер
32
+ */
33
+ issuerBaseURL: string;
34
+ /**
35
+ * @description URL на котором находится WEB-server.
36
+ */
37
+ baseURL: string;
38
+ /**
39
+ * @description Уникальный идентификатор openid клиента, от которого будет общаться web-server
40
+ */
41
+ clientId: string;
42
+ /**
43
+ * @description Секретный ключ для клиента. Выдаётся вместе с clientId на AppServer.
44
+ */
45
+ clientSecret: string;
46
+ /**
47
+ * @description Scopes в которых будет работать текущий пользователь
48
+ */
49
+ scope: string;
50
+ constructor(options: IAuthOptions);
51
+ /**
52
+ * @description Значение URL, куда будет перенаправляться пользователь при авторизации с полученным auth_code.
53
+ * @constructor
54
+ */
55
+ get REDIRECT_URL(): string;
56
+ /**
57
+ * @description Инициализация текущего клиента.
58
+ */
59
+ initialize(): Promise<void>;
60
+ private cleanAuthorizationSession;
61
+ createMiddlewareRouter(): import("express-serve-static-core").Router;
62
+ private isExpires;
63
+ /**
64
+ * @description Метод для установки tokens. Также получает claims и устанавливает их в expire и external поля.
65
+ * @param request
66
+ * @param tokens Набор токенов и helper для работы с claims.
67
+ * @private
68
+ */
69
+ private setTokens;
70
+ private static reloadSession;
71
+ /**
72
+ * @description Функция отвечает за пошаговое обновление набора токенов. Используется механанизм для обработки
73
+ * двух одновременных запросов, используя переключатель и обновление сессии.
74
+ */
75
+ authProcess(request: Request): Promise<void>;
76
+ private refresh;
77
+ }
78
+ //# sourceMappingURL=authorization-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization-client.d.ts","sourceRoot":"","sources":["../../src/auth/authorization-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AASxC,OAAO,EAAC,qBAAqB,EAA+B,MAAM,eAAe,CAAC;AAQlF,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAEvC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,eAAc;IAE/C,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAItG,MAAM,KAAK,gBAAgB,WAE1B;IACD,MAAM,KAAK,eAAe,WAEzB;IACD,MAAM,KAAK,oBAAoB,WAE9B;IACD;;;;OAIG;IACH,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO;eAGrC,GAAG;sBACI,MAAM;gBACZ,4BAA4B;iBAC3B,MAAM;iBACN,MAAM;kBACL,MAAM;;IAOnB,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO;IAMnC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,EAAE,KAAK,EAAE,GAAG;IAW9H;;OAEG;IACH,MAAM,EAAG,MAAM,CAAC,aAAa,CAAA;IAC7B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;gBAED,OAAO,EAAE,YAAY;IAQjC;;;OAGG;IACH,IAAI,YAAY,WAEf;IAED;;OAEG;IACG,UAAU;IAkBhB,OAAO,CAAC,yBAAyB;IAK1B,sBAAsB;IAoH7B,OAAO,CAAC,SAAS;IAQjB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO;YA8CpB,OAAO;CAgCrB"}
@@ -0,0 +1,315 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const express_1 = __importDefault(require("express"));
39
+ const client = __importStar(require("openid-client"));
40
+ const use_logger_1 = require("../logger/use-logger");
41
+ const render_response_template_1 = require("../utils/render-response-template");
42
+ const dto_template_render_error_1 = __importDefault(require("../dtos/dto-template-render-error"));
43
+ const constants_1 = require("../constants");
44
+ const url_1 = require("url");
45
+ const Server_1 = __importDefault(require("../Server"));
46
+ const auth_error_1 = __importDefault(require("../errors/auth-error"));
47
+ const debug_1 = __importDefault(require("debug"));
48
+ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
49
+ const async_manager_1 = __importDefault(require("./async-manager"));
50
+ const debug = (0, debug_1.default)("eservices-core:auth");
51
+ const asyncManager = new async_manager_1.default();
52
+ class AuthorizationClient {
53
+ static getFullAccessToken(authState) {
54
+ return [authState.tokens.token_type, authState.tokens.access_token].join(' ');
55
+ }
56
+ static get AUTH_SESSION_KEY() {
57
+ return Server_1.default.instance.params.oidc.sessionKey || constants_1.AUTH_SESSION_KEY;
58
+ }
59
+ static get LOGOUT_URL_PATH() {
60
+ return Server_1.default.instance.params.oidc.logoutURLPathname || constants_1.AUTH_LOGOUT_URI;
61
+ }
62
+ static get POST_LOGOUT_URL_PATH() {
63
+ return Server_1.default.instance.params.oidc.postLogoutURLPathname || constants_1.AUTH_POST_LOGOUT_URI;
64
+ }
65
+ /**
66
+ * @description Возвращает данные хранимые в сессии пользователя связанные с авторизацией.
67
+ * @param request
68
+ * @private
69
+ */
70
+ static getAuthorizationSession(request) {
71
+ try {
72
+ return request.session[AuthorizationClient.AUTH_SESSION_KEY];
73
+ }
74
+ catch (e) {
75
+ return undefined;
76
+ }
77
+ }
78
+ static initSession(request) {
79
+ request.session[AuthorizationClient.AUTH_SESSION_KEY] = {
80
+ version: 1
81
+ };
82
+ }
83
+ static updateSessionKey(request, sessionKey, value) {
84
+ let session = AuthorizationClient.getAuthorizationSession(request);
85
+ if (!session)
86
+ AuthorizationClient.initSession(request);
87
+ session = AuthorizationClient.getAuthorizationSession(request);
88
+ if (!session)
89
+ throw auth_error_1.default.AuthorizationSessionNotFound();
90
+ // @ts-ignore
91
+ session[sessionKey] = value;
92
+ }
93
+ constructor(options) {
94
+ this.clientId = options.clientId;
95
+ this.clientSecret = options.clientSecret;
96
+ this.issuerBaseURL = options.issuerBaseURL;
97
+ this.baseURL = options.baseURL;
98
+ this.scope = options.scope;
99
+ }
100
+ /**
101
+ * @description Значение URL, куда будет перенаправляться пользователь при авторизации с полученным auth_code.
102
+ * @constructor
103
+ */
104
+ get REDIRECT_URL() {
105
+ return this.baseURL + AuthorizationClient.CALLBACK_URL_PATH;
106
+ }
107
+ /**
108
+ * @description Инициализация текущего клиента.
109
+ */
110
+ initialize() {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ use_logger_1.Logger.info("Attempt to read OIDC issuer: %s", this.issuerBaseURL);
113
+ this.config = yield client.discovery(new URL(this.issuerBaseURL), this.clientId, {
114
+ client_secret: this.clientSecret,
115
+ // Используется для компенсации возможной рассинхронизации часов между системами.
116
+ [client.clockTolerance]: 30,
117
+ });
118
+ use_logger_1.Logger.info(`SSO client was created successful!`);
119
+ });
120
+ }
121
+ cleanAuthorizationSession(request) {
122
+ return new Promise(resolve => request.session.destroy(resolve));
123
+ }
124
+ createMiddlewareRouter() {
125
+ const router = express_1.default.Router();
126
+ router.get(AuthorizationClient.CALLBACK_URL_PATH, (request, res) => __awaiter(this, void 0, void 0, function* () {
127
+ try {
128
+ debug("/callback handler");
129
+ const currentURL = new URL(request.url, this.baseURL);
130
+ const { codeVerifier, state } = AuthorizationClient.getAuthorizationSession(request);
131
+ let tokens = yield client.authorizationCodeGrant(this.config, currentURL, {
132
+ pkceCodeVerifier: codeVerifier,
133
+ expectedState: state,
134
+ });
135
+ this.setTokens(request, tokens);
136
+ const parsedState = JSON.parse(state);
137
+ debug("/callback handler redirect %s", (parsedState === null || parsedState === void 0 ? void 0 : parsedState.redirectTo) || this.baseURL);
138
+ res.redirect((parsedState === null || parsedState === void 0 ? void 0 : parsedState.redirectTo) || this.baseURL);
139
+ }
140
+ catch (e) {
141
+ use_logger_1.Logger.error('Callback middleware error %o.', e);
142
+ (0, render_response_template_1.renderResponseTemplate)(res, 'error', (0, dto_template_render_error_1.default)("Authorization failed", constants_1.DEFAULT_ERROR_MESSAGE, "Callback failed"));
143
+ }
144
+ }));
145
+ router.get(AuthorizationClient.LOGOUT_URL_PATH, (request, res, next) => __awaiter(this, void 0, void 0, function* () {
146
+ try {
147
+ const authState = AuthorizationClient.getAuthorizationSession(request);
148
+ let redirectTo = client.buildEndSessionUrl(this.config, {
149
+ post_logout_redirect_uri: this.baseURL,
150
+ id_token_hint: authState === null || authState === void 0 ? void 0 : authState.tokens.id_token,
151
+ });
152
+ yield this.cleanAuthorizationSession(request);
153
+ res.redirect(redirectTo.toString());
154
+ }
155
+ catch (e) {
156
+ use_logger_1.Logger.debug("Logout was rejected with error ", e);
157
+ res.redirect(this.baseURL);
158
+ }
159
+ }));
160
+ router.post(AuthorizationClient.POST_LOGOUT_URL_PATH, (request, res, next) => {
161
+ try {
162
+ use_logger_1.Logger.info('Post logout Detected.');
163
+ use_logger_1.Logger.debug(`Post Logout Detected.`);
164
+ this.cleanAuthorizationSession(request);
165
+ }
166
+ catch (e) { }
167
+ });
168
+ router.use((request, res, next) => __awaiter(this, void 0, void 0, function* () {
169
+ try {
170
+ debug("authorization %s", request.url);
171
+ if (!client)
172
+ return (0, render_response_template_1.renderResponseTemplate)(res, 'error', (0, dto_template_render_error_1.default)('Please try again later', `Authentication provider is not ready yet`));
173
+ try {
174
+ yield this.authProcess(request);
175
+ debug("Next");
176
+ return next();
177
+ }
178
+ catch (e) {
179
+ debug('Упс, тихая авторизация закончилась ошибкой! Необходимо перенаправить на identity server.');
180
+ }
181
+ /**
182
+ * PKCE: The following MUST be generated for every redirect to the
183
+ * authorization_endpoint. You must store the code_verifier and state in the
184
+ * end-user session such that it can be recovered as the user gets redirected
185
+ * from the authorization server back to your application.
186
+ */
187
+ let code_verifier = client.randomPKCECodeVerifier();
188
+ AuthorizationClient.updateSessionKey(request, "codeVerifier", code_verifier);
189
+ let code_challenge = yield client.calculatePKCECodeChallenge(code_verifier);
190
+ let state;
191
+ let parameters = {
192
+ redirect_uri: this.REDIRECT_URL,
193
+ scope: this.scope,
194
+ code_challenge,
195
+ code_challenge_method: 'S256',
196
+ };
197
+ if (!this.config.serverMetadata().supportsPKCE()) {
198
+ /**
199
+ * We cannot be sure the server supports PKCE so we're going to use state too.
200
+ * Use of PKCE is backwards compatible even if the AS doesn't support it which
201
+ * is why we're using it regardless. Like PKCE, random state must be generated
202
+ * for every redirect to the authorization_endpoint.
203
+ */
204
+ state = client.randomState();
205
+ }
206
+ else {
207
+ state = JSON.stringify({
208
+ redirectTo: this.baseURL + (0, url_1.parse)(request.url).path
209
+ });
210
+ }
211
+ parameters.state = state;
212
+ AuthorizationClient.updateSessionKey(request, "state", state);
213
+ let redirectTo = client.buildAuthorizationUrl(this.config, parameters);
214
+ return res.redirect(redirectTo.toString());
215
+ }
216
+ catch (e) {
217
+ use_logger_1.Logger.error(e);
218
+ res.redirect(this.baseURL);
219
+ }
220
+ }));
221
+ return router;
222
+ }
223
+ isExpires(seconds) {
224
+ if (!(typeof seconds === 'number' && Number.isInteger(seconds)))
225
+ return true;
226
+ const dateNow = new Date();
227
+ const currentSeconds = (dateNow.getTime() / 1000);
228
+ return currentSeconds > seconds;
229
+ }
230
+ /**
231
+ * @description Метод для установки tokens. Также получает claims и устанавливает их в expire и external поля.
232
+ * @param request
233
+ * @param tokens Набор токенов и helper для работы с claims.
234
+ * @private
235
+ */
236
+ setTokens(request, tokens) {
237
+ AuthorizationClient.updateSessionKey(request, "tokens", tokens);
238
+ const claims = tokens.claims();
239
+ tokens.expiresIn();
240
+ const decoded = jsonwebtoken_1.default.decode(tokens.access_token);
241
+ AuthorizationClient.updateSessionKey(request, "expired", decoded.exp);
242
+ AuthorizationClient.updateSessionKey(request, "external", claims.sub);
243
+ }
244
+ static reloadSession(request) {
245
+ return new Promise(resolve => request.session.reload(resolve));
246
+ }
247
+ /**
248
+ * @description Функция отвечает за пошаговое обновление набора токенов. Используется механанизм для обработки
249
+ * двух одновременных запросов, используя переключатель и обновление сессии.
250
+ */
251
+ authProcess(request) {
252
+ return __awaiter(this, void 0, void 0, function* () {
253
+ // Самый дебильный участок кода.
254
+ // Постольку мы используем socket, нам необходимо заботиться о том, что сессия находится в валидном состоянии.
255
+ // await AuthorizationClient.reloadSession(request);
256
+ let authState = AuthorizationClient.getAuthorizationSession(request);
257
+ if (!authState) {
258
+ debug("Session not found.");
259
+ throw auth_error_1.default.UserIsNotAuthorize();
260
+ }
261
+ const expTime = authState.expired;
262
+ if (!this.isExpires(expTime))
263
+ return;
264
+ debug("processing...");
265
+ const refreshToken = authState.tokens.refresh_token;
266
+ debug("Auth processing with %s", refreshToken);
267
+ if (!refreshToken)
268
+ throw auth_error_1.default.RefreshNotAvailableOrSessionOutOfDate();
269
+ const lock = asyncManager.has(refreshToken);
270
+ if (lock) {
271
+ debug("Найдена блокировка %s", refreshToken);
272
+ yield lock;
273
+ debug("Блокировка снята. Обновляем сессию.");
274
+ yield AuthorizationClient.reloadSession(request);
275
+ return;
276
+ }
277
+ const tokens = yield this.refresh(request);
278
+ this.setTokens(request, tokens);
279
+ debug("Блокировка снята %s -> %s", refreshToken, tokens.refresh_token);
280
+ debug("Токены успешно обновлены и сохранены в сессию.");
281
+ request.session.save();
282
+ asyncManager.unlock(refreshToken);
283
+ });
284
+ }
285
+ refresh(request) {
286
+ return __awaiter(this, void 0, void 0, function* () {
287
+ debug("Refreshing");
288
+ const authState = AuthorizationClient.getAuthorizationSession(request);
289
+ const refreshToken = authState.tokens.refresh_token;
290
+ try {
291
+ debug("Создана блокировка %s", refreshToken);
292
+ asyncManager.lock(refreshToken);
293
+ const tokens = yield client.refreshTokenGrant(this.config, authState.tokens.refresh_token, {
294
+ scope: this.scope,
295
+ });
296
+ return tokens;
297
+ }
298
+ catch (err) {
299
+ /**
300
+ * if (error.response?.data.error === 'invalid_grant') {
301
+ * // Переходим к полной аутентификации
302
+ * window.location.href = '/login';
303
+ * }
304
+ *
305
+ * Пользователя необходимо отправить на логин
306
+ */
307
+ use_logger_1.Logger.error("%o", err);
308
+ throw auth_error_1.default.RefreshNotAvailableOrSessionOutOfDate();
309
+ }
310
+ });
311
+ }
312
+ }
313
+ AuthorizationClient.CALLBACK_URL_PATH = "/callback";
314
+ exports.default = AuthorizationClient;
315
+ //# sourceMappingURL=authorization-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization-client.js","sourceRoot":"","sources":["../../src/auth/authorization-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export default class LockerEmulation {
2
+ /**
3
+ * @description Хранилище мьютексов/семафоров/тумблеров. Как угодно это можете называть. Используется
4
+ * для того, чтобы блокировать параллельные запроса на обновление tokens.
5
+ */
6
+ store: Map<string, [Promise<any>, Function, Function]>;
7
+ lock(token: string): void;
8
+ unlock(token: string): void;
9
+ isLocked(token: string): false | Promise<any>;
10
+ }
11
+ //# sourceMappingURL=locker-emulation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locker-emulation.d.ts","sourceRoot":"","sources":["../../src/auth/locker-emulation.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,eAAe;IAEnC;;;OAGG;IACH,KAAK,kDAAwD;IAE7D,IAAI,CAAC,KAAK,EAAE,MAAM;IAOlB,MAAM,CAAC,KAAK,EAAE,MAAM;IAMpB,QAAQ,CAAC,KAAK,EAAE,MAAM;CAItB"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class LockerEmulation {
4
+ constructor() {
5
+ /**
6
+ * @description Хранилище мьютексов/семафоров/тумблеров. Как угодно это можете называть. Используется
7
+ * для того, чтобы блокировать параллельные запроса на обновление tokens.
8
+ */
9
+ this.store = new Map();
10
+ }
11
+ lock(token) {
12
+ // Создаём новый promise. Сохраняем функции его зварешения в хранилище.
13
+ const promise = new Promise((resolve, reject) => {
14
+ this.store.set(token, [promise, resolve, reject]);
15
+ });
16
+ }
17
+ unlock(token) {
18
+ const unlockers = this.store.get(token);
19
+ if (!unlockers)
20
+ throw new Error("Locker emulation, can't found saved unlockers.");
21
+ unlockers[1]();
22
+ }
23
+ isLocked(token) {
24
+ return (this.store.has(token)) ? this.store.get(token)[0] : false;
25
+ }
26
+ }
27
+ exports.default = LockerEmulation;
28
+ //# sourceMappingURL=locker-emulation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locker-emulation.js","sourceRoot":"","sources":["../../src/auth/locker-emulation.ts"],"names":[],"mappings":";;AAAA,MAAqB,eAAe;IAApC;QAEC;;;WAGG;QACH,UAAK,GAAG,IAAI,GAAG,EAA8C,CAAA;IAmB9D,CAAC;IAjBA,IAAI,CAAC,KAAa;QACjB,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACjF,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,KAAa;QACrB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;CAED;AAzBD,kCAyBC"}
@@ -1,20 +1,4 @@
1
1
  import { Request } from "express";
2
- import { IAuthOptions } from "../types/auth-type";
3
- import { getAuthStateFormRequest } from "./get-auth-state-form-request";
4
- /**
5
- * @description Функция обёртка для подключения к ID server. Возвращает middleware для стандартного http подключения. А
6
- * также для WS.
7
- */
8
- export default function useAuth(options: IAuthOptions): {
9
- client: import("openid-client").BaseClient;
10
- useAuthMiddleware: () => import("express-serve-static-core").Router;
11
- useWSAuthMiddleware: (req: Request) => Promise<void>;
12
- silentLogout: (req: Request) => void;
13
- getAuthStateFormRequest: typeof getAuthStateFormRequest;
14
- getFullAccessToken: typeof getFullAccessToken;
15
- endSessionURL: () => string;
16
- authorizationUrl: () => string;
17
- };
18
2
  export declare function getFullAccessToken(request: Request): string;
19
3
  /**
20
4
  * @description Функция возвращает идентификатор текущего пользователя(UserID) из запроса.
@@ -1 +1 @@
1
- {"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../src/auth/use-auth.ts"],"names":[],"mappings":"AACA,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAGzC,OAAO,EAAmB,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAUlE,OAAO,EAAC,uBAAuB,EAAC,MAAM,+BAA+B,CAAC;AAYtE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,EAAE,YAAY;;;+BAiKZ,OAAO;wBAwDpB,OAAO;;;;;EAuBlC;AA+DD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,UAIlD;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,UAExD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,UAE1D"}
1
+ {"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../src/auth/use-auth.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAwUzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,UAIlD;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,UAExD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,UAE1D"}