@acorex-platform/framework-server 0.0.33 → 0.0.38

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 (207) hide show
  1. package/background-job/src/lib/schedule/background-job-schedule-scanner.service.d.ts.map +1 -1
  2. package/background-job/src/lib/schedule/background-job-schedule-scanner.service.js +29 -2
  3. package/background-job/src/lib/schedule/background-job-schedule-scanner.service.js.map +1 -1
  4. package/core/src/lib/runtime/runtime-authz.guard.d.ts +3 -2
  5. package/core/src/lib/runtime/runtime-authz.guard.d.ts.map +1 -1
  6. package/core/src/lib/runtime/runtime-authz.guard.js +7 -6
  7. package/core/src/lib/runtime/runtime-authz.guard.js.map +1 -1
  8. package/domain/seed/src/lib/category-companion-entity.builder.d.ts +1 -1
  9. package/domain/seed/src/lib/category-companion-entity.builder.d.ts.map +1 -1
  10. package/domain/seed/src/lib/category-companion-entity.builder.js +64 -0
  11. package/domain/seed/src/lib/category-companion-entity.builder.js.map +1 -1
  12. package/jql/schema/src/lib/generated/widget-data-types.bootstrap.js +1 -1
  13. package/jql/schema/src/lib/generated/widget-data-types.bootstrap.js.map +1 -1
  14. package/package.json +2 -2
  15. package/realtime/src/lib/auth/auth-security-alert-realtime.listener.d.ts +18 -0
  16. package/realtime/src/lib/auth/auth-security-alert-realtime.listener.d.ts.map +1 -0
  17. package/realtime/src/lib/auth/auth-security-alert-realtime.listener.js +90 -0
  18. package/realtime/src/lib/auth/auth-security-alert-realtime.listener.js.map +1 -0
  19. package/realtime/src/lib/delivery/socket-io-realtime.delivery.d.ts.map +1 -1
  20. package/realtime/src/lib/delivery/socket-io-realtime.delivery.js +9 -4
  21. package/realtime/src/lib/delivery/socket-io-realtime.delivery.js.map +1 -1
  22. package/realtime/src/lib/gateway/realtime-ws-auth.d.ts +1 -1
  23. package/realtime/src/lib/gateway/realtime-ws-auth.d.ts.map +1 -1
  24. package/realtime/src/lib/gateway/realtime-ws-auth.js +4 -2
  25. package/realtime/src/lib/gateway/realtime-ws-auth.js.map +1 -1
  26. package/realtime/src/lib/gateway/realtime.gateway.d.ts +1 -0
  27. package/realtime/src/lib/gateway/realtime.gateway.d.ts.map +1 -1
  28. package/realtime/src/lib/gateway/realtime.gateway.js +9 -2
  29. package/realtime/src/lib/gateway/realtime.gateway.js.map +1 -1
  30. package/realtime/src/lib/realtime.module.d.ts.map +1 -1
  31. package/realtime/src/lib/realtime.module.js +2 -0
  32. package/realtime/src/lib/realtime.module.js.map +1 -1
  33. package/realtime/src/lib/rooms/realtime-rooms.util.d.ts +8 -0
  34. package/realtime/src/lib/rooms/realtime-rooms.util.d.ts.map +1 -1
  35. package/realtime/src/lib/rooms/realtime-rooms.util.js +22 -0
  36. package/realtime/src/lib/rooms/realtime-rooms.util.js.map +1 -1
  37. package/realtime/src/lib/services/realtime-publisher.service.d.ts.map +1 -1
  38. package/realtime/src/lib/services/realtime-publisher.service.js +7 -1
  39. package/realtime/src/lib/services/realtime-publisher.service.js.map +1 -1
  40. package/realtime/src/lib/topics/realtime-topics.d.ts +1 -0
  41. package/realtime/src/lib/topics/realtime-topics.d.ts.map +1 -1
  42. package/realtime/src/lib/topics/realtime-topics.js +2 -1
  43. package/realtime/src/lib/topics/realtime-topics.js.map +1 -1
  44. package/realtime/src/lib/types/realtime.types.d.ts +19 -0
  45. package/realtime/src/lib/types/realtime.types.d.ts.map +1 -1
  46. package/realtime/src/lib/types/realtime.types.js.map +1 -1
  47. package/security/src/index.d.ts +4 -0
  48. package/security/src/index.d.ts.map +1 -1
  49. package/security/src/index.js +5 -0
  50. package/security/src/index.js.map +1 -1
  51. package/security/src/lib/auth/auth-cookie-response.util.d.ts.map +1 -1
  52. package/security/src/lib/auth/auth-cookie-response.util.js +4 -1
  53. package/security/src/lib/auth/auth-cookie-response.util.js.map +1 -1
  54. package/security/src/lib/auth/auth-cookie.service.d.ts +2 -0
  55. package/security/src/lib/auth/auth-cookie.service.d.ts.map +1 -1
  56. package/security/src/lib/auth/auth-cookie.service.js +17 -0
  57. package/security/src/lib/auth/auth-cookie.service.js.map +1 -1
  58. package/security/src/lib/auth/auth-csrf.middleware.d.ts +14 -0
  59. package/security/src/lib/auth/auth-csrf.middleware.d.ts.map +1 -0
  60. package/security/src/lib/auth/auth-csrf.middleware.js +60 -0
  61. package/security/src/lib/auth/auth-csrf.middleware.js.map +1 -0
  62. package/security/src/lib/auth/auth-identity-provider.source.d.ts +11 -0
  63. package/security/src/lib/auth/auth-identity-provider.source.d.ts.map +1 -1
  64. package/security/src/lib/auth/auth-identity-provider.source.js +6 -1
  65. package/security/src/lib/auth/auth-identity-provider.source.js.map +1 -1
  66. package/security/src/lib/auth/auth-local-credentials.service.d.ts +8 -0
  67. package/security/src/lib/auth/auth-local-credentials.service.d.ts.map +1 -1
  68. package/security/src/lib/auth/auth-local-credentials.service.js +41 -16
  69. package/security/src/lib/auth/auth-local-credentials.service.js.map +1 -1
  70. package/security/src/lib/auth/auth-max-device-sessions-policy.d.ts +14 -0
  71. package/security/src/lib/auth/auth-max-device-sessions-policy.d.ts.map +1 -0
  72. package/security/src/lib/auth/auth-max-device-sessions-policy.js +48 -0
  73. package/security/src/lib/auth/auth-max-device-sessions-policy.js.map +1 -0
  74. package/security/src/lib/auth/auth-runtime.handlers.d.ts +15 -3
  75. package/security/src/lib/auth/auth-runtime.handlers.d.ts.map +1 -1
  76. package/security/src/lib/auth/auth-runtime.handlers.js +51 -3
  77. package/security/src/lib/auth/auth-runtime.handlers.js.map +1 -1
  78. package/security/src/lib/auth/auth.config.d.ts +7 -0
  79. package/security/src/lib/auth/auth.config.d.ts.map +1 -1
  80. package/security/src/lib/auth/auth.config.js +8 -1
  81. package/security/src/lib/auth/auth.config.js.map +1 -1
  82. package/security/src/lib/auth/auth.events.d.ts +22 -0
  83. package/security/src/lib/auth/auth.events.d.ts.map +1 -1
  84. package/security/src/lib/auth/auth.events.js +3 -1
  85. package/security/src/lib/auth/auth.events.js.map +1 -1
  86. package/security/src/lib/auth/auth.service.d.ts +65 -5
  87. package/security/src/lib/auth/auth.service.d.ts.map +1 -1
  88. package/security/src/lib/auth/auth.service.js +311 -10
  89. package/security/src/lib/auth/auth.service.js.map +1 -1
  90. package/security/src/lib/auth/auth.types.d.ts +36 -0
  91. package/security/src/lib/auth/auth.types.d.ts.map +1 -1
  92. package/security/src/lib/auth/auth.types.js.map +1 -1
  93. package/security/src/lib/auth/device-session.service.d.ts +59 -1
  94. package/security/src/lib/auth/device-session.service.d.ts.map +1 -1
  95. package/security/src/lib/auth/device-session.service.js +299 -28
  96. package/security/src/lib/auth/device-session.service.js.map +1 -1
  97. package/security/src/lib/auth/jwt-auth.guard.d.ts +2 -1
  98. package/security/src/lib/auth/jwt-auth.guard.d.ts.map +1 -1
  99. package/security/src/lib/auth/jwt-auth.guard.js +4 -2
  100. package/security/src/lib/auth/jwt-auth.guard.js.map +1 -1
  101. package/security/src/lib/auth/login-attempt.service.d.ts +14 -3
  102. package/security/src/lib/auth/login-attempt.service.d.ts.map +1 -1
  103. package/security/src/lib/auth/login-attempt.service.js +35 -10
  104. package/security/src/lib/auth/login-attempt.service.js.map +1 -1
  105. package/security/src/lib/auth/request-meta.util.js +64 -11
  106. package/security/src/lib/auth/request-meta.util.js.map +1 -1
  107. package/security/src/lib/auth/token-revocation.constants.d.ts +9 -0
  108. package/security/src/lib/auth/token-revocation.constants.d.ts.map +1 -0
  109. package/security/src/lib/auth/token-revocation.constants.js +14 -0
  110. package/security/src/lib/auth/token-revocation.constants.js.map +1 -0
  111. package/security/src/lib/auth/token.service.d.ts +26 -1
  112. package/security/src/lib/auth/token.service.d.ts.map +1 -1
  113. package/security/src/lib/auth/token.service.js +105 -4
  114. package/security/src/lib/auth/token.service.js.map +1 -1
  115. package/security/src/lib/oauth/connect.controller.d.ts +81 -7
  116. package/security/src/lib/oauth/connect.controller.d.ts.map +1 -1
  117. package/security/src/lib/oauth/connect.controller.js +264 -36
  118. package/security/src/lib/oauth/connect.controller.js.map +1 -1
  119. package/security/src/lib/oauth/oauth-bff.util.d.ts +9 -0
  120. package/security/src/lib/oauth/oauth-bff.util.d.ts.map +1 -0
  121. package/security/src/lib/oauth/oauth-bff.util.js +30 -0
  122. package/security/src/lib/oauth/oauth-bff.util.js.map +1 -0
  123. package/security/src/lib/oauth/oauth-claims.util.d.ts +6 -0
  124. package/security/src/lib/oauth/oauth-claims.util.d.ts.map +1 -0
  125. package/security/src/lib/oauth/oauth-claims.util.js +36 -0
  126. package/security/src/lib/oauth/oauth-claims.util.js.map +1 -0
  127. package/security/src/lib/oauth/oauth-client-registry.service.d.ts +25 -0
  128. package/security/src/lib/oauth/oauth-client-registry.service.d.ts.map +1 -0
  129. package/security/src/lib/oauth/oauth-client-registry.service.js +201 -0
  130. package/security/src/lib/oauth/oauth-client-registry.service.js.map +1 -0
  131. package/security/src/lib/oauth/oauth-connect.exception-filter.d.ts +10 -0
  132. package/security/src/lib/oauth/oauth-connect.exception-filter.d.ts.map +1 -0
  133. package/security/src/lib/oauth/oauth-connect.exception-filter.js +59 -0
  134. package/security/src/lib/oauth/oauth-connect.exception-filter.js.map +1 -0
  135. package/security/src/lib/oauth/oauth-error.util.d.ts +23 -0
  136. package/security/src/lib/oauth/oauth-error.util.d.ts.map +1 -0
  137. package/security/src/lib/oauth/oauth-error.util.js +114 -0
  138. package/security/src/lib/oauth/oauth-error.util.js.map +1 -0
  139. package/security/src/lib/oauth/oauth-grant-store.interface.d.ts +16 -0
  140. package/security/src/lib/oauth/oauth-grant-store.interface.d.ts.map +1 -0
  141. package/security/src/lib/oauth/oauth-grant-store.interface.js +14 -0
  142. package/security/src/lib/oauth/oauth-grant-store.interface.js.map +1 -0
  143. package/security/src/lib/oauth/oauth-issuer.util.d.ts +7 -0
  144. package/security/src/lib/oauth/oauth-issuer.util.d.ts.map +1 -0
  145. package/security/src/lib/oauth/oauth-issuer.util.js +25 -0
  146. package/security/src/lib/oauth/oauth-issuer.util.js.map +1 -0
  147. package/security/src/lib/oauth/oauth-op.service.d.ts +35 -0
  148. package/security/src/lib/oauth/oauth-op.service.d.ts.map +1 -0
  149. package/security/src/lib/oauth/oauth-op.service.js +152 -0
  150. package/security/src/lib/oauth/oauth-op.service.js.map +1 -0
  151. package/security/src/lib/oauth/oauth-op.types.d.ts +73 -0
  152. package/security/src/lib/oauth/oauth-op.types.d.ts.map +1 -0
  153. package/security/src/lib/oauth/oauth-op.types.js +5 -0
  154. package/security/src/lib/oauth/oauth-op.types.js.map +1 -0
  155. package/security/src/lib/oauth/oauth-provider-hint.util.d.ts +8 -0
  156. package/security/src/lib/oauth/oauth-provider-hint.util.d.ts.map +1 -0
  157. package/security/src/lib/oauth/oauth-provider-hint.util.js +24 -0
  158. package/security/src/lib/oauth/oauth-provider-hint.util.js.map +1 -0
  159. package/security/src/lib/oauth/oauth-redis-oidc-adapter.d.ts +27 -0
  160. package/security/src/lib/oauth/oauth-redis-oidc-adapter.d.ts.map +1 -0
  161. package/security/src/lib/oauth/oauth-redis-oidc-adapter.js +159 -0
  162. package/security/src/lib/oauth/oauth-redis-oidc-adapter.js.map +1 -0
  163. package/security/src/lib/oauth/oauth-rp.service.d.ts +53 -0
  164. package/security/src/lib/oauth/oauth-rp.service.d.ts.map +1 -0
  165. package/security/src/lib/oauth/oauth-rp.service.js +371 -0
  166. package/security/src/lib/oauth/oauth-rp.service.js.map +1 -0
  167. package/security/src/lib/oauth/oauth-rp.types.d.ts +25 -0
  168. package/security/src/lib/oauth/oauth-rp.types.d.ts.map +1 -0
  169. package/security/src/lib/oauth/oauth-rp.types.js +5 -0
  170. package/security/src/lib/oauth/oauth-rp.types.js.map +1 -0
  171. package/security/src/lib/oauth/oidc-provider-engine.service.d.ts +25 -0
  172. package/security/src/lib/oauth/oidc-provider-engine.service.d.ts.map +1 -0
  173. package/security/src/lib/oauth/oidc-provider-engine.service.js +208 -0
  174. package/security/src/lib/oauth/oidc-provider-engine.service.js.map +1 -0
  175. package/security/src/lib/oauth/platform-oauth.service.d.ts +43 -14
  176. package/security/src/lib/oauth/platform-oauth.service.d.ts.map +1 -1
  177. package/security/src/lib/oauth/platform-oauth.service.js +177 -170
  178. package/security/src/lib/oauth/platform-oauth.service.js.map +1 -1
  179. package/security/src/lib/oauth/platform-oauth.types.d.ts +11 -3
  180. package/security/src/lib/oauth/platform-oauth.types.d.ts.map +1 -1
  181. package/security/src/lib/oauth/platform-oauth.types.js.map +1 -1
  182. package/security/src/lib/oauth/redis-oauth-grant-store.service.d.ts +22 -0
  183. package/security/src/lib/oauth/redis-oauth-grant-store.service.d.ts.map +1 -0
  184. package/security/src/lib/oauth/redis-oauth-grant-store.service.js +132 -0
  185. package/security/src/lib/oauth/redis-oauth-grant-store.service.js.map +1 -0
  186. package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.d.ts +14 -0
  187. package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.d.ts.map +1 -0
  188. package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.js +46 -0
  189. package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.js.map +1 -0
  190. package/security/src/lib/oauth/testing/jest-empty-module.d.ts +4 -0
  191. package/security/src/lib/oauth/testing/jest-empty-module.d.ts.map +1 -0
  192. package/security/src/lib/oauth/testing/jest-empty-module.js +11 -0
  193. package/security/src/lib/oauth/testing/jest-empty-module.js.map +1 -0
  194. package/security/src/lib/oauth/testing/mock-oidc-provider.d.ts +49 -0
  195. package/security/src/lib/oauth/testing/mock-oidc-provider.d.ts.map +1 -0
  196. package/security/src/lib/oauth/testing/mock-oidc-provider.js +158 -0
  197. package/security/src/lib/oauth/testing/mock-oidc-provider.js.map +1 -0
  198. package/security/src/lib/security.module.d.ts.map +1 -1
  199. package/security/src/lib/security.module.js +31 -0
  200. package/security/src/lib/security.module.js.map +1 -1
  201. package/security/src/lib/session/backend-session.types.d.ts +2 -0
  202. package/security/src/lib/session/backend-session.types.d.ts.map +1 -1
  203. package/security/src/lib/session/backend-session.types.js.map +1 -1
  204. package/security/src/lib/session/optional-jwt-session.middleware.d.ts +6 -4
  205. package/security/src/lib/session/optional-jwt-session.middleware.d.ts.map +1 -1
  206. package/security/src/lib/session/optional-jwt-session.middleware.js +18 -7
  207. package/security/src/lib/session/optional-jwt-session.middleware.js.map +1 -1
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var RedisOAuthGrantStore_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RedisOAuthGrantStore = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const ioredis_1 = tslib_1.__importDefault(require("ioredis"));
8
+ const oauth_grant_store_interface_1 = require("./oauth-grant-store.interface");
9
+ function resolveOauthRedisConnection() {
10
+ const url = process.env['REDIS_URL']?.trim();
11
+ if (url) {
12
+ return { url };
13
+ }
14
+ const host = process.env['REDIS_HOST']?.trim();
15
+ const portRaw = Number(process.env['REDIS_PORT'] ?? 6379);
16
+ if (host) {
17
+ return { host, port: Number.isFinite(portRaw) ? portRaw : 6379 };
18
+ }
19
+ return null;
20
+ }
21
+ /**
22
+ * Atomic "GET then DEL" (GETDEL) semantics.
23
+ * Some Redis versions may not support GETDEL, so we emulate it via a Lua script.
24
+ */
25
+ const GETDEL_SCRIPT = `
26
+ local v = redis.call('GET', KEYS[1])
27
+ if v then
28
+ redis.call('DEL', KEYS[1])
29
+ end
30
+ return v
31
+ `;
32
+ let RedisOAuthGrantStore = RedisOAuthGrantStore_1 = class RedisOAuthGrantStore extends oauth_grant_store_interface_1.OAuthGrantStore {
33
+ constructor() {
34
+ super();
35
+ this.logger = new common_1.Logger(RedisOAuthGrantStore_1.name);
36
+ this.localCodes = new Map();
37
+ this.localStates = new Map();
38
+ this.localPkceVerifiers = new Map();
39
+ const connection = resolveOauthRedisConnection();
40
+ if (!connection) {
41
+ this.logger.warn('Redis not configured; OAuth grant store falls back to in-process Map (single instance only).');
42
+ this.redis = null;
43
+ return;
44
+ }
45
+ this.redis =
46
+ 'url' in connection
47
+ ? new ioredis_1.default(connection.url, { maxRetriesPerRequest: null, lazyConnect: true })
48
+ : new ioredis_1.default({ ...connection, maxRetriesPerRequest: null, lazyConnect: true });
49
+ }
50
+ keyForCode(code) {
51
+ return `axp:oauth:code:${code}`;
52
+ }
53
+ keyForState(state) {
54
+ return `axp:oauth:state:${state}`;
55
+ }
56
+ keyForPkceVerifier(codeChallenge) {
57
+ return `axp:oauth:pkce:${codeChallenge}`;
58
+ }
59
+ async saveCode(code, record, ttlMs) {
60
+ const key = this.keyForCode(code);
61
+ const value = JSON.stringify(record);
62
+ if (!this.redis) {
63
+ this.localCodes.set(key, value);
64
+ return;
65
+ }
66
+ await this.redis.set(key, value, 'PX', ttlMs);
67
+ }
68
+ async consumeCode(code) {
69
+ const key = this.keyForCode(code);
70
+ if (!this.redis) {
71
+ const raw = this.localCodes.get(key) ?? null;
72
+ this.localCodes.delete(key);
73
+ return raw ? JSON.parse(raw) : null;
74
+ }
75
+ const raw = (await this.redis.eval(GETDEL_SCRIPT, 1, key));
76
+ if (!raw) {
77
+ return null;
78
+ }
79
+ return JSON.parse(raw);
80
+ }
81
+ async saveState(state, record, ttlMs) {
82
+ const key = this.keyForState(state);
83
+ const value = JSON.stringify(record);
84
+ if (!this.redis) {
85
+ this.localStates.set(key, value);
86
+ return;
87
+ }
88
+ await this.redis.set(key, value, 'PX', ttlMs);
89
+ }
90
+ async consumeState(state) {
91
+ const key = this.keyForState(state);
92
+ if (!this.redis) {
93
+ const raw = this.localStates.get(key) ?? null;
94
+ this.localStates.delete(key);
95
+ return raw ? JSON.parse(raw) : null;
96
+ }
97
+ const raw = (await this.redis.eval(GETDEL_SCRIPT, 1, key));
98
+ if (!raw) {
99
+ return null;
100
+ }
101
+ return JSON.parse(raw);
102
+ }
103
+ async savePkceVerifier(codeChallenge, codeVerifier, ttlMs) {
104
+ const key = this.keyForPkceVerifier(codeChallenge);
105
+ if (!this.redis) {
106
+ this.localPkceVerifiers.set(key, codeVerifier);
107
+ return;
108
+ }
109
+ await this.redis.set(key, codeVerifier, 'PX', ttlMs);
110
+ }
111
+ async consumePkceVerifier(codeChallenge) {
112
+ const key = this.keyForPkceVerifier(codeChallenge);
113
+ if (!this.redis) {
114
+ const value = this.localPkceVerifiers.get(key) ?? null;
115
+ this.localPkceVerifiers.delete(key);
116
+ return value;
117
+ }
118
+ return (await this.redis.eval(GETDEL_SCRIPT, 1, key));
119
+ }
120
+ async onModuleDestroy() {
121
+ if (this.redis) {
122
+ await this.redis.quit().catch(() => this.redis?.disconnect());
123
+ }
124
+ }
125
+ };
126
+ exports.RedisOAuthGrantStore = RedisOAuthGrantStore;
127
+ exports.RedisOAuthGrantStore = RedisOAuthGrantStore = RedisOAuthGrantStore_1 = tslib_1.__decorate([
128
+ (0, common_1.Injectable)(),
129
+ tslib_1.__metadata("design:paramtypes", [])
130
+ ], RedisOAuthGrantStore);
131
+ //#endregion
132
+ //# sourceMappingURL=redis-oauth-grant-store.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-oauth-grant-store.service.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/oauth/redis-oauth-grant-store.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { OAuthCodeRecord, OAuthExternalStateRecord } from '../oauth-op.types';
2
+ import { OAuthGrantStore } from '../oauth-grant-store.interface';
3
+ export declare class InMemoryOAuthGrantStore extends OAuthGrantStore {
4
+ private readonly codes;
5
+ private readonly states;
6
+ private readonly pkceVerifiers;
7
+ saveCode(code: string, record: OAuthCodeRecord, _ttlMs: number): Promise<void>;
8
+ consumeCode(code: string): Promise<OAuthCodeRecord | null>;
9
+ saveState(state: string, record: OAuthExternalStateRecord, _ttlMs: number): Promise<void>;
10
+ consumeState(state: string): Promise<OAuthExternalStateRecord | null>;
11
+ savePkceVerifier(codeChallenge: string, codeVerifier: string, _ttlMs: number): Promise<void>;
12
+ consumePkceVerifier(codeChallenge: string): Promise<string | null>;
13
+ }
14
+ //# sourceMappingURL=in-memory-oauth-grant-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-oauth-grant-store.d.ts","sourceRoot":"","sources":["../../../../../../../../../libs/framework/server/security/src/lib/oauth/testing/in-memory-oauth-grant-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,qBAAa,uBAAwB,SAAQ,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAErD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAQ1D,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAQrE,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5F,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAOzE"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ //#region ---- In-memory OAuth grant store (tests only) ----
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.InMemoryOAuthGrantStore = void 0;
5
+ const oauth_grant_store_interface_1 = require("../oauth-grant-store.interface");
6
+ class InMemoryOAuthGrantStore extends oauth_grant_store_interface_1.OAuthGrantStore {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.codes = new Map();
10
+ this.states = new Map();
11
+ this.pkceVerifiers = new Map();
12
+ }
13
+ async saveCode(code, record, _ttlMs) {
14
+ this.codes.set(code, record);
15
+ }
16
+ async consumeCode(code) {
17
+ const record = this.codes.get(code) ?? null;
18
+ if (record) {
19
+ this.codes.delete(code);
20
+ }
21
+ return record;
22
+ }
23
+ async saveState(state, record, _ttlMs) {
24
+ this.states.set(state, record);
25
+ }
26
+ async consumeState(state) {
27
+ const record = this.states.get(state) ?? null;
28
+ if (record) {
29
+ this.states.delete(state);
30
+ }
31
+ return record;
32
+ }
33
+ async savePkceVerifier(codeChallenge, codeVerifier, _ttlMs) {
34
+ this.pkceVerifiers.set(codeChallenge, codeVerifier);
35
+ }
36
+ async consumePkceVerifier(codeChallenge) {
37
+ const verifier = this.pkceVerifiers.get(codeChallenge) ?? null;
38
+ if (verifier) {
39
+ this.pkceVerifiers.delete(codeChallenge);
40
+ }
41
+ return verifier;
42
+ }
43
+ }
44
+ exports.InMemoryOAuthGrantStore = InMemoryOAuthGrantStore;
45
+ //#endregion
46
+ //# sourceMappingURL=in-memory-oauth-grant-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-oauth-grant-store.js","sourceRoot":"","sources":["../../../../../../../../../libs/framework/server/security/src/lib/oauth/testing/in-memory-oauth-grant-store.ts"],"names":[],"mappings":";AAAA,4DAA4D;;;AAG5D,gFAAiE;AAEjE,MAAa,uBAAwB,SAAQ,6CAAe;IAA5D;;QACmB,UAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;QAC3C,WAAM,GAAG,IAAI,GAAG,EAAoC,CAAC;QACrD,kBAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAqC7D,CAAC;IAnCC,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,MAAuB,EAAE,MAAc;QAClE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,MAAgC,EAAE,MAAc;QAC7E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,aAAqB,EAAE,YAAoB,EAAE,MAAc;QAChF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,aAAqB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;QAC/D,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAxCD,0DAwCC;AAED,YAAY"}
@@ -0,0 +1,4 @@
1
+ export declare class EntityStorageMiddlewareService {
2
+ }
3
+ export declare function bypassAllEntityVisibilityFilters<T>(query: T): T;
4
+ //# sourceMappingURL=jest-empty-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-empty-module.d.ts","sourceRoot":"","sources":["../../../../../../../../../libs/framework/server/security/src/lib/oauth/testing/jest-empty-module.ts"],"names":[],"mappings":"AAAA,qBAAa,8BAA8B;CAAG;AAE9C,wBAAgB,gCAAgC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAE/D"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityStorageMiddlewareService = void 0;
4
+ exports.bypassAllEntityVisibilityFilters = bypassAllEntityVisibilityFilters;
5
+ class EntityStorageMiddlewareService {
6
+ }
7
+ exports.EntityStorageMiddlewareService = EntityStorageMiddlewareService;
8
+ function bypassAllEntityVisibilityFilters(query) {
9
+ return query;
10
+ }
11
+ //# sourceMappingURL=jest-empty-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-empty-module.js","sourceRoot":"","sources":["../../../../../../../../../libs/framework/server/security/src/lib/oauth/testing/jest-empty-module.ts"],"names":[],"mappings":";;;AAEA,4EAEC;AAJD,MAAa,8BAA8B;CAAG;AAA9C,wEAA8C;AAE9C,SAAgB,gCAAgC,CAAI,KAAQ;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,49 @@
1
+ export type MockOidcProviderOptions = {
2
+ issuer: string;
3
+ audience?: string;
4
+ invalidSignature?: boolean;
5
+ wrongIssuer?: string;
6
+ wrongAudience?: string;
7
+ expired?: boolean;
8
+ wrongNonce?: string;
9
+ };
10
+ export declare class MockOidcProvider {
11
+ readonly issuer: string;
12
+ readonly clientId = "mock-client";
13
+ readonly clientSecret = "mock-secret";
14
+ readonly authorizationUrl: string;
15
+ readonly tokenUrl: string;
16
+ readonly userInfoUrl: string;
17
+ private readonly privateKeyPem;
18
+ private readonly publicJwk;
19
+ private readonly kid;
20
+ private server;
21
+ private port;
22
+ private options;
23
+ constructor(options?: Partial<MockOidcProviderOptions>);
24
+ start(): Promise<void>;
25
+ stop(): Promise<void>;
26
+ get runningIssuer(): string;
27
+ getBrokerConfig(): {
28
+ key: string;
29
+ enabled: boolean;
30
+ clientId: string;
31
+ clientSecret: string;
32
+ authorizationUrl: string;
33
+ tokenUrl: string;
34
+ userInfoUrl: string;
35
+ scopes: string;
36
+ };
37
+ signIdToken(input: {
38
+ sub: string;
39
+ email?: string;
40
+ emailVerified?: boolean;
41
+ name?: string;
42
+ nonce?: string;
43
+ overrideOptions?: Partial<MockOidcProviderOptions>;
44
+ }): string;
45
+ private baseUrl;
46
+ private sendJson;
47
+ private readBody;
48
+ }
49
+ //# sourceMappingURL=mock-oidc-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-oidc-provider.d.ts","sourceRoot":"","sources":["../../../../../../../../../libs/framework/server/security/src/lib/oauth/testing/mock-oidc-provider.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,iBAAiB;IAClC,QAAQ,CAAC,YAAY,iBAAiB;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,OAAO,CAA0B;gBAE7B,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAwBhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,eAAe;;;;;;;;;;IAcf,WAAW,CAAC,KAAK,EAAE;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;KACpD,GAAG,MAAM;IAgCV,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,QAAQ;CAQjB"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ //#region ---- Mock OIDC Provider (tests only) ----
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MockOidcProvider = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const http_1 = require("http");
7
+ const crypto_1 = require("crypto");
8
+ const jwt = tslib_1.__importStar(require("jsonwebtoken"));
9
+ class MockOidcProvider {
10
+ constructor(options) {
11
+ this.clientId = 'mock-client';
12
+ this.clientSecret = 'mock-secret';
13
+ this.server = null;
14
+ this.port = 0;
15
+ this.issuer = (options?.issuer ?? 'http://127.0.0.1:0/mock-issuer').replace(/\/$/, '');
16
+ this.options = {
17
+ issuer: this.issuer,
18
+ audience: options?.audience ?? this.clientId,
19
+ ...options,
20
+ };
21
+ const generated = (0, crypto_1.generateKeyPairSync)('rsa', {
22
+ modulusLength: 2048,
23
+ publicKeyEncoding: { type: 'spki', format: 'pem' },
24
+ privateKeyEncoding: { type: 'pkcs8', format: 'pem' },
25
+ });
26
+ this.privateKeyPem = generated.privateKey;
27
+ const publicKeyObject = (0, crypto_1.createPublicKey)(generated.publicKey);
28
+ this.publicJwk = publicKeyObject.export({ format: 'jwk' });
29
+ this.kid = (0, crypto_1.createHash)('sha256').update(generated.publicKey).digest('base64url');
30
+ this.authorizationUrl = `${this.issuer}/authorize`;
31
+ this.tokenUrl = `${this.issuer}/token`;
32
+ this.userInfoUrl = `${this.issuer}/userinfo`;
33
+ }
34
+ async start() {
35
+ if (this.server) {
36
+ return;
37
+ }
38
+ this.server = (0, http_1.createServer)(async (req, res) => {
39
+ const url = new URL(req.url ?? '/', this.baseUrl());
40
+ if (url.pathname === '/.well-known/openid-configuration') {
41
+ this.sendJson(res, 200, {
42
+ issuer: this.runningIssuer,
43
+ authorization_endpoint: `${this.runningIssuer}/authorize`,
44
+ token_endpoint: `${this.runningIssuer}/token`,
45
+ userinfo_endpoint: `${this.runningIssuer}/userinfo`,
46
+ jwks_uri: `${this.runningIssuer}/.well-known/jwks.json`,
47
+ });
48
+ return;
49
+ }
50
+ if (url.pathname === '/.well-known/jwks.json') {
51
+ this.sendJson(res, 200, {
52
+ keys: [{ ...this.publicJwk, use: 'sig', alg: 'RS256', kid: this.kid }],
53
+ });
54
+ return;
55
+ }
56
+ if (url.pathname === '/token' && req.method === 'POST') {
57
+ const body = await this.readBody(req);
58
+ const params = new URLSearchParams(body);
59
+ const code = params.get('code') ?? 'mock-code';
60
+ const idToken = this.signIdToken({
61
+ sub: 'external-subject-1',
62
+ email: 'verified@example.com',
63
+ emailVerified: true,
64
+ name: 'Verified User',
65
+ nonce: params.get('nonce') ?? undefined,
66
+ });
67
+ this.sendJson(res, 200, {
68
+ access_token: `mock-access-${code}`,
69
+ id_token: idToken,
70
+ token_type: 'Bearer',
71
+ expires_in: 3600,
72
+ });
73
+ return;
74
+ }
75
+ res.statusCode = 404;
76
+ res.end('not found');
77
+ });
78
+ await new Promise((resolve) => {
79
+ this.server.listen(0, '127.0.0.1', () => {
80
+ const address = this.server.address();
81
+ this.port = typeof address === 'object' && address ? address.port : 0;
82
+ this.options = {
83
+ ...this.options,
84
+ issuer: `http://127.0.0.1:${this.port}`,
85
+ };
86
+ resolve();
87
+ });
88
+ });
89
+ }
90
+ async stop() {
91
+ if (!this.server) {
92
+ return;
93
+ }
94
+ await new Promise((resolve, reject) => {
95
+ this.server.close((error) => (error ? reject(error) : resolve()));
96
+ });
97
+ this.server = null;
98
+ }
99
+ get runningIssuer() {
100
+ return `http://127.0.0.1:${this.port}`;
101
+ }
102
+ getBrokerConfig() {
103
+ const issuer = this.runningIssuer;
104
+ return {
105
+ key: 'mock',
106
+ enabled: true,
107
+ clientId: this.clientId,
108
+ clientSecret: this.clientSecret,
109
+ authorizationUrl: `${issuer}/authorize`,
110
+ tokenUrl: `${issuer}/token`,
111
+ userInfoUrl: `${issuer}/userinfo`,
112
+ scopes: 'openid profile email',
113
+ };
114
+ }
115
+ signIdToken(input) {
116
+ const opts = { ...this.options, ...input.overrideOptions };
117
+ const issuer = opts.wrongIssuer ?? this.runningIssuer;
118
+ const audience = opts.wrongAudience ?? opts.audience ?? this.clientId;
119
+ const expiresIn = opts.expired ? -60 : 3600;
120
+ const nonce = opts.wrongNonce ?? input.nonce;
121
+ const token = jwt.sign({
122
+ sub: input.sub,
123
+ email: input.email,
124
+ email_verified: input.emailVerified,
125
+ name: input.name,
126
+ ...(nonce ? { nonce } : {}),
127
+ }, this.privateKeyPem, {
128
+ algorithm: 'RS256',
129
+ keyid: this.kid,
130
+ issuer,
131
+ audience,
132
+ expiresIn,
133
+ });
134
+ if (opts.invalidSignature) {
135
+ return `${token}x`;
136
+ }
137
+ return token;
138
+ }
139
+ baseUrl() {
140
+ return `http://127.0.0.1:${this.port}`;
141
+ }
142
+ sendJson(res, status, body) {
143
+ res.statusCode = status;
144
+ res.setHeader('content-type', 'application/json');
145
+ res.end(JSON.stringify(body));
146
+ }
147
+ readBody(req) {
148
+ return new Promise((resolve, reject) => {
149
+ const chunks = [];
150
+ req.on('data', (chunk) => chunks.push(Buffer.from(chunk)));
151
+ req.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
152
+ req.on('error', reject);
153
+ });
154
+ }
155
+ }
156
+ exports.MockOidcProvider = MockOidcProvider;
157
+ //#endregion
158
+ //# sourceMappingURL=mock-oidc-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-oidc-provider.js","sourceRoot":"","sources":["../../../../../../../../../libs/framework/server/security/src/lib/oauth/testing/mock-oidc-provider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"security.module.d.ts","sourceRoot":"","sources":["../../../../../../../libs/framework/server/security/src/lib/security.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,kBAAkB,EAAU,UAAU,EAAgC,MAAM,gBAAgB,CAAC;AA4B9G;;;GAGG;AACH,qBAuDa,cAAe,YAAW,UAAU;IAC/C,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;CAK9C"}
1
+ {"version":3,"file":"security.module.d.ts","sourceRoot":"","sources":["../../../../../../../libs/framework/server/security/src/lib/security.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,kBAAkB,EAAU,UAAU,EAAgC,MAAM,gBAAgB,CAAC;AAmC9G;;;GAGG;AACH,qBA6Ea,cAAe,YAAW,UAAU;IAC/C,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;CAY9C"}
@@ -17,6 +17,13 @@ const jwt_auth_guard_1 = require("./auth/jwt-auth.guard");
17
17
  const local_strategy_1 = require("./auth/strategies/local.strategy");
18
18
  const connect_controller_1 = require("./oauth/connect.controller");
19
19
  const platform_oauth_service_1 = require("./oauth/platform-oauth.service");
20
+ const oauth_op_service_1 = require("./oauth/oauth-op.service");
21
+ const oauth_rp_service_1 = require("./oauth/oauth-rp.service");
22
+ const oauth_client_registry_service_1 = require("./oauth/oauth-client-registry.service");
23
+ const oidc_provider_engine_service_1 = require("./oauth/oidc-provider-engine.service");
24
+ const redis_oauth_grant_store_service_1 = require("./oauth/redis-oauth-grant-store.service");
25
+ const oauth_grant_store_interface_1 = require("./oauth/oauth-grant-store.interface");
26
+ const auth_csrf_middleware_1 = require("./auth/auth-csrf.middleware");
20
27
  const saml_sp_service_1 = require("./auth/saml/saml-sp.service");
21
28
  const entity_access_policy_loader_1 = require("./entity-storage/entity-access-policy.loader");
22
29
  const policy_enforce_middleware_1 = require("./entity-storage/policy-enforce.middleware");
@@ -34,6 +41,9 @@ const auth_runtime_handlers_1 = require("./auth/auth-runtime.handlers");
34
41
  */
35
42
  let SecurityModule = class SecurityModule {
36
43
  configure(consumer) {
44
+ consumer
45
+ .apply(auth_csrf_middleware_1.AuthCsrfMiddleware)
46
+ .forRoutes({ path: 'connect/token', method: common_1.RequestMethod.POST }, { path: 'connect/revocation', method: common_1.RequestMethod.POST });
37
47
  consumer
38
48
  .apply(optional_jwt_session_middleware_1.OptionalJwtSessionMiddleware)
39
49
  .forRoutes({ path: '*splat', method: common_1.RequestMethod.ALL });
@@ -48,6 +58,11 @@ exports.SecurityModule = SecurityModule = tslib_1.__decorate([
48
58
  providers: [
49
59
  auth_service_1.AuthService,
50
60
  platform_oauth_service_1.PlatformOAuthService,
61
+ oauth_rp_service_1.OAuthRpService,
62
+ oauth_op_service_1.OAuthOpService,
63
+ oauth_client_registry_service_1.OAuthClientRegistryService,
64
+ oidc_provider_engine_service_1.OidcProviderEngineService,
65
+ redis_oauth_grant_store_service_1.RedisOAuthGrantStore,
51
66
  saml_sp_service_1.SamlSpService,
52
67
  auth_local_credentials_service_1.AuthLocalCredentialsService,
53
68
  login_attempt_service_1.LoginAttemptService,
@@ -61,11 +76,21 @@ exports.SecurityModule = SecurityModule = tslib_1.__decorate([
61
76
  session_context_service_1.SessionContextService,
62
77
  jwt_auth_guard_1.JwtAuthGuard,
63
78
  optional_jwt_session_middleware_1.OptionalJwtSessionMiddleware,
79
+ auth_csrf_middleware_1.AuthCsrfMiddleware,
64
80
  visibility_filter_middleware_1.VisibilityFilterMiddleware,
65
81
  policy_enforce_middleware_1.PolicyEnforceMiddleware,
66
82
  security_entity_storage_bootstrap_1.SecurityEntityStorageBootstrap,
67
83
  entity_access_policy_loader_1.EntityAccessPolicyLoader,
68
84
  runtime_permission_service_1.RuntimePermissionService,
85
+ {
86
+ provide: oauth_grant_store_interface_1.OAuthGrantStore,
87
+ useExisting: redis_oauth_grant_store_service_1.RedisOAuthGrantStore,
88
+ },
89
+ {
90
+ provide: 'AUTH_ENTITY_API_REQUIRE_AUTH',
91
+ useValue: process.env['AUTH_ENTITY_API_REQUIRE_AUTH']?.trim()?.toLowerCase() === 'true' ||
92
+ process.env['NODE_ENV']?.trim()?.toLowerCase() === 'production',
93
+ },
69
94
  ...auth_runtime_handlers_1.AUTH_RUNTIME_COMMANDS,
70
95
  ...auth_runtime_handlers_1.AUTH_RUNTIME_QUERIES,
71
96
  {
@@ -83,6 +108,7 @@ exports.SecurityModule = SecurityModule = tslib_1.__decorate([
83
108
  auth_service_1.AuthService,
84
109
  token_service_1.TokenService,
85
110
  token_resolver_service_1.TokenResolverService,
111
+ device_session_service_1.DeviceSessionService,
86
112
  auth_cookie_service_1.AuthCookieService,
87
113
  saml_sp_service_1.SamlSpService,
88
114
  machine_token_service_1.MachineTokenService,
@@ -93,6 +119,11 @@ exports.SecurityModule = SecurityModule = tslib_1.__decorate([
93
119
  policy_enforce_middleware_1.PolicyEnforceMiddleware,
94
120
  entity_access_policy_loader_1.EntityAccessPolicyLoader,
95
121
  runtime_permission_service_1.RuntimePermissionService,
122
+ oauth_rp_service_1.OAuthRpService,
123
+ oauth_op_service_1.OAuthOpService,
124
+ oauth_client_registry_service_1.OAuthClientRegistryService,
125
+ oidc_provider_engine_service_1.OidcProviderEngineService,
126
+ redis_oauth_grant_store_service_1.RedisOAuthGrantStore,
96
127
  core_1.ENTITY_STORAGE_MIDDLEWARE,
97
128
  ],
98
129
  })
@@ -1 +1 @@
1
- {"version":3,"file":"security.module.js","sourceRoot":"","sources":["../../../../../../../libs/framework/server/security/src/lib/security.module.ts"],"names":[],"mappings":";;;;AAAA,2CAA8G;AAC9G,+CAAkD;AAClD,iEAAwG;AACxG,oEAA+D;AAC/D,0FAAoF;AACpF,sDAAkD;AAClD,0EAAqE;AACrE,wEAAmE;AACnE,wEAAmE;AACnE,0EAAqE;AACrE,wDAAoD;AACpD,0DAAqD;AACrD,qEAAiE;AACjE,mEAA+D;AAC/D,2EAAsE;AACtE,iEAA4D;AAC5D,8FAAwF;AACxF,0FAAqF;AACrF,0GAAoG;AACpG,gGAA2F;AAC3F,+EAA0E;AAC1E,+FAAyF;AACzF,+EAA0E;AAC1E,qFAAgF;AAChF,wEAA2F;AAE3F,4CAA4C;AAE5C;;;GAGG;AAwDI,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,SAAS,CAAC,QAA4B;QACpC,QAAQ;aACL,KAAK,CAAC,8DAA4B,CAAC;aACnC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,sBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AANY,wCAAc;yBAAd,cAAc;IAvD1B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,0BAAmB,EAAE,yBAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,WAAW,EAAE,CAAC,sCAAiB,CAAC;QAChC,SAAS,EAAE;YACT,0BAAW;YACX,6CAAoB;YACpB,+BAAa;YACb,4DAA2B;YAC3B,2CAAmB;YACnB,4BAAY;YACZ,6CAAoB;YACpB,uCAAiB;YACjB,6CAAoB;YACpB,8BAAa;YACb,2CAAmB;YACnB,+CAAqB;YACrB,+CAAqB;YACrB,6BAAY;YACZ,8DAA4B;YAC5B,yDAA0B;YAC1B,mDAAuB;YACvB,kEAA8B;YAC9B,sDAAwB;YACxB,qDAAwB;YACxB,GAAG,6CAAqB;YACxB,GAAG,4CAAoB;YACvB;gBACE,OAAO,EAAE,gCAAyB;gBAClC,WAAW,EAAE,yDAA0B;gBACvC,KAAK,EAAE,IAAI;aACA;YACb;gBACE,OAAO,EAAE,gCAAyB;gBAClC,WAAW,EAAE,mDAAuB;gBACpC,KAAK,EAAE,IAAI;aACA;SACd;QACD,OAAO,EAAE;YACP,0BAAW;YACX,4BAAY;YACZ,6CAAoB;YACpB,uCAAiB;YACjB,+BAAa;YACb,2CAAmB;YACnB,+CAAqB;YACrB,+CAAqB;YACrB,6BAAY;YACZ,yDAA0B;YAC1B,mDAAuB;YACvB,sDAAwB;YACxB,qDAAwB;YACxB,gCAAyB;SAC1B;KACF,CAAC;GACW,cAAc,CAM1B;AAED,YAAY"}
1
+ {"version":3,"file":"security.module.js","sourceRoot":"","sources":["../../../../../../../libs/framework/server/security/src/lib/security.module.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,7 @@ export interface BackendRequestSession {
4
4
  username: string;
5
5
  tenantId?: string;
6
6
  applicationId?: string;
7
+ /** Login/session id from access-token `sid` (device session matching). */
8
+ sid?: string;
7
9
  }
8
10
  //# sourceMappingURL=backend-session.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend-session.types.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/session/backend-session.types.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"backend-session.types.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/session/backend-session.types.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"backend-session.types.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/session/backend-session.types.ts"],"names":[],"mappings":";AAAA,2CAA2C;;AAU3C,YAAY"}
1
+ {"version":3,"file":"backend-session.types.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/session/backend-session.types.ts"],"names":[],"mappings":";AAAA,2CAA2C;;AAY3C,YAAY"}
@@ -11,16 +11,18 @@ type RequestWithSession = Request & {
11
11
  /**
12
12
  * Populates {@link CURRENT_SESSION_KEY} when a valid access token is present.
13
13
  * Routes stay public when no token is sent (entity storage, optional auth reads).
14
- * Invalid or expired tokens are ignored here so unauthenticated flows (e.g. token
15
- * refresh) still work; routes needing enforcement use {@link JwtAuthGuard}.
14
+ * Invalid, expired, or OD-09-revoked tokens are ignored here so unauthenticated
15
+ * flows (e.g. token refresh) still work; routes needing enforcement use
16
+ * {@link JwtAuthGuard}.
16
17
  */
17
18
  export declare class OptionalJwtSessionMiddleware implements NestMiddleware {
19
+ private readonly requireEntityApiAuth;
18
20
  private readonly authService;
19
21
  private readonly machineTokenService;
20
22
  private readonly tokenResolver;
21
23
  private readonly logger;
22
- constructor(authService: AuthService, machineTokenService: MachineTokenService, tokenResolver: TokenResolverService);
23
- use(req: RequestWithSession, _res: Response, next: NextFunction): void;
24
+ constructor(requireEntityApiAuth: boolean, authService: AuthService, machineTokenService: MachineTokenService, tokenResolver: TokenResolverService);
25
+ use(req: RequestWithSession, _res: Response, next: NextFunction): Promise<void>;
24
26
  }
25
27
  export {};
26
28
  //# sourceMappingURL=optional-jwt-session.middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"optional-jwt-session.middleware.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/session/optional-jwt-session.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIrE,KAAK,kBAAkB,GAAG,OAAO,GAAG;IAClC,CAAC,mBAAmB,CAAC,CAAC,EAAE,qBAAqB,CAAC;CAC/C,CAAC;AAEF;;;;;GAKG;AACH,qBACa,4BAA6B,YAAW,cAAc;IAI/D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa;IALhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiD;gBAGrD,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,aAAa,EAAE,oBAAoB;IAGtD,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;CAoCvE"}
1
+ {"version":3,"file":"optional-jwt-session.middleware.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/session/optional-jwt-session.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,cAAc,EAAyB,MAAM,gBAAgB,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIrE,KAAK,kBAAkB,GAAG,OAAO,GAAG;IAClC,CAAC,mBAAmB,CAAC,CAAC,EAAE,qBAAqB,CAAC;CAC/C,CAAC;AAEF;;;;;;GAMG;AACH,qBACa,4BAA6B,YAAW,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAC7E,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa;IANhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiD;gBAGb,oBAAoB,EAAE,OAAO,EACrE,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,aAAa,EAAE,oBAAoB;IAGhD,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CA+CtF"}