@acorex-platform/framework-server 0.0.32 → 0.0.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.
Files changed (213) 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 +46 -13
  3. package/background-job/src/lib/schedule/background-job-schedule-scanner.service.js.map +1 -1
  4. package/background-job/src/lib/store/background-job-schedule-store.service.d.ts +5 -1
  5. package/background-job/src/lib/store/background-job-schedule-store.service.d.ts.map +1 -1
  6. package/background-job/src/lib/store/background-job-schedule-store.service.js +8 -4
  7. package/background-job/src/lib/store/background-job-schedule-store.service.js.map +1 -1
  8. package/background-job/src/lib/store/background-job-store.service.js +2 -2
  9. package/background-job/src/lib/store/background-job-store.service.js.map +1 -1
  10. package/core/src/lib/runtime/runtime-authz.guard.d.ts +3 -2
  11. package/core/src/lib/runtime/runtime-authz.guard.d.ts.map +1 -1
  12. package/core/src/lib/runtime/runtime-authz.guard.js +7 -6
  13. package/core/src/lib/runtime/runtime-authz.guard.js.map +1 -1
  14. package/domain/seed/src/lib/category-companion-entity.builder.d.ts +1 -1
  15. package/domain/seed/src/lib/category-companion-entity.builder.d.ts.map +1 -1
  16. package/domain/seed/src/lib/category-companion-entity.builder.js +64 -0
  17. package/domain/seed/src/lib/category-companion-entity.builder.js.map +1 -1
  18. package/jql/schema/src/lib/generated/widget-data-types.bootstrap.js +1 -1
  19. package/jql/schema/src/lib/generated/widget-data-types.bootstrap.js.map +1 -1
  20. package/package.json +2 -2
  21. package/realtime/src/lib/auth/auth-security-alert-realtime.listener.d.ts +18 -0
  22. package/realtime/src/lib/auth/auth-security-alert-realtime.listener.d.ts.map +1 -0
  23. package/realtime/src/lib/auth/auth-security-alert-realtime.listener.js +90 -0
  24. package/realtime/src/lib/auth/auth-security-alert-realtime.listener.js.map +1 -0
  25. package/realtime/src/lib/delivery/socket-io-realtime.delivery.d.ts.map +1 -1
  26. package/realtime/src/lib/delivery/socket-io-realtime.delivery.js +9 -4
  27. package/realtime/src/lib/delivery/socket-io-realtime.delivery.js.map +1 -1
  28. package/realtime/src/lib/gateway/realtime-ws-auth.d.ts +1 -1
  29. package/realtime/src/lib/gateway/realtime-ws-auth.d.ts.map +1 -1
  30. package/realtime/src/lib/gateway/realtime-ws-auth.js +4 -2
  31. package/realtime/src/lib/gateway/realtime-ws-auth.js.map +1 -1
  32. package/realtime/src/lib/gateway/realtime.gateway.d.ts +1 -0
  33. package/realtime/src/lib/gateway/realtime.gateway.d.ts.map +1 -1
  34. package/realtime/src/lib/gateway/realtime.gateway.js +9 -2
  35. package/realtime/src/lib/gateway/realtime.gateway.js.map +1 -1
  36. package/realtime/src/lib/realtime.module.d.ts.map +1 -1
  37. package/realtime/src/lib/realtime.module.js +2 -0
  38. package/realtime/src/lib/realtime.module.js.map +1 -1
  39. package/realtime/src/lib/rooms/realtime-rooms.util.d.ts +8 -0
  40. package/realtime/src/lib/rooms/realtime-rooms.util.d.ts.map +1 -1
  41. package/realtime/src/lib/rooms/realtime-rooms.util.js +22 -0
  42. package/realtime/src/lib/rooms/realtime-rooms.util.js.map +1 -1
  43. package/realtime/src/lib/services/realtime-publisher.service.d.ts.map +1 -1
  44. package/realtime/src/lib/services/realtime-publisher.service.js +7 -1
  45. package/realtime/src/lib/services/realtime-publisher.service.js.map +1 -1
  46. package/realtime/src/lib/topics/realtime-topics.d.ts +1 -0
  47. package/realtime/src/lib/topics/realtime-topics.d.ts.map +1 -1
  48. package/realtime/src/lib/topics/realtime-topics.js +2 -1
  49. package/realtime/src/lib/topics/realtime-topics.js.map +1 -1
  50. package/realtime/src/lib/types/realtime.types.d.ts +19 -0
  51. package/realtime/src/lib/types/realtime.types.d.ts.map +1 -1
  52. package/realtime/src/lib/types/realtime.types.js.map +1 -1
  53. package/security/src/index.d.ts +4 -0
  54. package/security/src/index.d.ts.map +1 -1
  55. package/security/src/index.js +5 -0
  56. package/security/src/index.js.map +1 -1
  57. package/security/src/lib/auth/auth-cookie-response.util.d.ts.map +1 -1
  58. package/security/src/lib/auth/auth-cookie-response.util.js +4 -1
  59. package/security/src/lib/auth/auth-cookie-response.util.js.map +1 -1
  60. package/security/src/lib/auth/auth-cookie.service.d.ts +2 -0
  61. package/security/src/lib/auth/auth-cookie.service.d.ts.map +1 -1
  62. package/security/src/lib/auth/auth-cookie.service.js +17 -0
  63. package/security/src/lib/auth/auth-cookie.service.js.map +1 -1
  64. package/security/src/lib/auth/auth-csrf.middleware.d.ts +14 -0
  65. package/security/src/lib/auth/auth-csrf.middleware.d.ts.map +1 -0
  66. package/security/src/lib/auth/auth-csrf.middleware.js +60 -0
  67. package/security/src/lib/auth/auth-csrf.middleware.js.map +1 -0
  68. package/security/src/lib/auth/auth-identity-provider.source.d.ts +11 -0
  69. package/security/src/lib/auth/auth-identity-provider.source.d.ts.map +1 -1
  70. package/security/src/lib/auth/auth-identity-provider.source.js +6 -1
  71. package/security/src/lib/auth/auth-identity-provider.source.js.map +1 -1
  72. package/security/src/lib/auth/auth-local-credentials.service.d.ts +8 -0
  73. package/security/src/lib/auth/auth-local-credentials.service.d.ts.map +1 -1
  74. package/security/src/lib/auth/auth-local-credentials.service.js +41 -16
  75. package/security/src/lib/auth/auth-local-credentials.service.js.map +1 -1
  76. package/security/src/lib/auth/auth-max-device-sessions-policy.d.ts +14 -0
  77. package/security/src/lib/auth/auth-max-device-sessions-policy.d.ts.map +1 -0
  78. package/security/src/lib/auth/auth-max-device-sessions-policy.js +48 -0
  79. package/security/src/lib/auth/auth-max-device-sessions-policy.js.map +1 -0
  80. package/security/src/lib/auth/auth-runtime.handlers.d.ts +15 -3
  81. package/security/src/lib/auth/auth-runtime.handlers.d.ts.map +1 -1
  82. package/security/src/lib/auth/auth-runtime.handlers.js +51 -3
  83. package/security/src/lib/auth/auth-runtime.handlers.js.map +1 -1
  84. package/security/src/lib/auth/auth.config.d.ts +7 -0
  85. package/security/src/lib/auth/auth.config.d.ts.map +1 -1
  86. package/security/src/lib/auth/auth.config.js +8 -1
  87. package/security/src/lib/auth/auth.config.js.map +1 -1
  88. package/security/src/lib/auth/auth.events.d.ts +22 -0
  89. package/security/src/lib/auth/auth.events.d.ts.map +1 -1
  90. package/security/src/lib/auth/auth.events.js +3 -1
  91. package/security/src/lib/auth/auth.events.js.map +1 -1
  92. package/security/src/lib/auth/auth.service.d.ts +65 -5
  93. package/security/src/lib/auth/auth.service.d.ts.map +1 -1
  94. package/security/src/lib/auth/auth.service.js +311 -10
  95. package/security/src/lib/auth/auth.service.js.map +1 -1
  96. package/security/src/lib/auth/auth.types.d.ts +36 -0
  97. package/security/src/lib/auth/auth.types.d.ts.map +1 -1
  98. package/security/src/lib/auth/auth.types.js.map +1 -1
  99. package/security/src/lib/auth/device-session.service.d.ts +59 -1
  100. package/security/src/lib/auth/device-session.service.d.ts.map +1 -1
  101. package/security/src/lib/auth/device-session.service.js +299 -28
  102. package/security/src/lib/auth/device-session.service.js.map +1 -1
  103. package/security/src/lib/auth/jwt-auth.guard.d.ts +2 -1
  104. package/security/src/lib/auth/jwt-auth.guard.d.ts.map +1 -1
  105. package/security/src/lib/auth/jwt-auth.guard.js +4 -2
  106. package/security/src/lib/auth/jwt-auth.guard.js.map +1 -1
  107. package/security/src/lib/auth/login-attempt.service.d.ts +14 -3
  108. package/security/src/lib/auth/login-attempt.service.d.ts.map +1 -1
  109. package/security/src/lib/auth/login-attempt.service.js +35 -10
  110. package/security/src/lib/auth/login-attempt.service.js.map +1 -1
  111. package/security/src/lib/auth/request-meta.util.js +64 -11
  112. package/security/src/lib/auth/request-meta.util.js.map +1 -1
  113. package/security/src/lib/auth/token-revocation.constants.d.ts +9 -0
  114. package/security/src/lib/auth/token-revocation.constants.d.ts.map +1 -0
  115. package/security/src/lib/auth/token-revocation.constants.js +14 -0
  116. package/security/src/lib/auth/token-revocation.constants.js.map +1 -0
  117. package/security/src/lib/auth/token.service.d.ts +26 -1
  118. package/security/src/lib/auth/token.service.d.ts.map +1 -1
  119. package/security/src/lib/auth/token.service.js +105 -4
  120. package/security/src/lib/auth/token.service.js.map +1 -1
  121. package/security/src/lib/oauth/connect.controller.d.ts +81 -7
  122. package/security/src/lib/oauth/connect.controller.d.ts.map +1 -1
  123. package/security/src/lib/oauth/connect.controller.js +264 -36
  124. package/security/src/lib/oauth/connect.controller.js.map +1 -1
  125. package/security/src/lib/oauth/oauth-bff.util.d.ts +9 -0
  126. package/security/src/lib/oauth/oauth-bff.util.d.ts.map +1 -0
  127. package/security/src/lib/oauth/oauth-bff.util.js +30 -0
  128. package/security/src/lib/oauth/oauth-bff.util.js.map +1 -0
  129. package/security/src/lib/oauth/oauth-claims.util.d.ts +6 -0
  130. package/security/src/lib/oauth/oauth-claims.util.d.ts.map +1 -0
  131. package/security/src/lib/oauth/oauth-claims.util.js +36 -0
  132. package/security/src/lib/oauth/oauth-claims.util.js.map +1 -0
  133. package/security/src/lib/oauth/oauth-client-registry.service.d.ts +25 -0
  134. package/security/src/lib/oauth/oauth-client-registry.service.d.ts.map +1 -0
  135. package/security/src/lib/oauth/oauth-client-registry.service.js +201 -0
  136. package/security/src/lib/oauth/oauth-client-registry.service.js.map +1 -0
  137. package/security/src/lib/oauth/oauth-connect.exception-filter.d.ts +10 -0
  138. package/security/src/lib/oauth/oauth-connect.exception-filter.d.ts.map +1 -0
  139. package/security/src/lib/oauth/oauth-connect.exception-filter.js +59 -0
  140. package/security/src/lib/oauth/oauth-connect.exception-filter.js.map +1 -0
  141. package/security/src/lib/oauth/oauth-error.util.d.ts +23 -0
  142. package/security/src/lib/oauth/oauth-error.util.d.ts.map +1 -0
  143. package/security/src/lib/oauth/oauth-error.util.js +114 -0
  144. package/security/src/lib/oauth/oauth-error.util.js.map +1 -0
  145. package/security/src/lib/oauth/oauth-grant-store.interface.d.ts +16 -0
  146. package/security/src/lib/oauth/oauth-grant-store.interface.d.ts.map +1 -0
  147. package/security/src/lib/oauth/oauth-grant-store.interface.js +14 -0
  148. package/security/src/lib/oauth/oauth-grant-store.interface.js.map +1 -0
  149. package/security/src/lib/oauth/oauth-issuer.util.d.ts +7 -0
  150. package/security/src/lib/oauth/oauth-issuer.util.d.ts.map +1 -0
  151. package/security/src/lib/oauth/oauth-issuer.util.js +25 -0
  152. package/security/src/lib/oauth/oauth-issuer.util.js.map +1 -0
  153. package/security/src/lib/oauth/oauth-op.service.d.ts +35 -0
  154. package/security/src/lib/oauth/oauth-op.service.d.ts.map +1 -0
  155. package/security/src/lib/oauth/oauth-op.service.js +152 -0
  156. package/security/src/lib/oauth/oauth-op.service.js.map +1 -0
  157. package/security/src/lib/oauth/oauth-op.types.d.ts +73 -0
  158. package/security/src/lib/oauth/oauth-op.types.d.ts.map +1 -0
  159. package/security/src/lib/oauth/oauth-op.types.js +5 -0
  160. package/security/src/lib/oauth/oauth-op.types.js.map +1 -0
  161. package/security/src/lib/oauth/oauth-provider-hint.util.d.ts +8 -0
  162. package/security/src/lib/oauth/oauth-provider-hint.util.d.ts.map +1 -0
  163. package/security/src/lib/oauth/oauth-provider-hint.util.js +24 -0
  164. package/security/src/lib/oauth/oauth-provider-hint.util.js.map +1 -0
  165. package/security/src/lib/oauth/oauth-redis-oidc-adapter.d.ts +27 -0
  166. package/security/src/lib/oauth/oauth-redis-oidc-adapter.d.ts.map +1 -0
  167. package/security/src/lib/oauth/oauth-redis-oidc-adapter.js +159 -0
  168. package/security/src/lib/oauth/oauth-redis-oidc-adapter.js.map +1 -0
  169. package/security/src/lib/oauth/oauth-rp.service.d.ts +53 -0
  170. package/security/src/lib/oauth/oauth-rp.service.d.ts.map +1 -0
  171. package/security/src/lib/oauth/oauth-rp.service.js +371 -0
  172. package/security/src/lib/oauth/oauth-rp.service.js.map +1 -0
  173. package/security/src/lib/oauth/oauth-rp.types.d.ts +25 -0
  174. package/security/src/lib/oauth/oauth-rp.types.d.ts.map +1 -0
  175. package/security/src/lib/oauth/oauth-rp.types.js +5 -0
  176. package/security/src/lib/oauth/oauth-rp.types.js.map +1 -0
  177. package/security/src/lib/oauth/oidc-provider-engine.service.d.ts +25 -0
  178. package/security/src/lib/oauth/oidc-provider-engine.service.d.ts.map +1 -0
  179. package/security/src/lib/oauth/oidc-provider-engine.service.js +208 -0
  180. package/security/src/lib/oauth/oidc-provider-engine.service.js.map +1 -0
  181. package/security/src/lib/oauth/platform-oauth.service.d.ts +43 -14
  182. package/security/src/lib/oauth/platform-oauth.service.d.ts.map +1 -1
  183. package/security/src/lib/oauth/platform-oauth.service.js +177 -170
  184. package/security/src/lib/oauth/platform-oauth.service.js.map +1 -1
  185. package/security/src/lib/oauth/platform-oauth.types.d.ts +11 -3
  186. package/security/src/lib/oauth/platform-oauth.types.d.ts.map +1 -1
  187. package/security/src/lib/oauth/platform-oauth.types.js.map +1 -1
  188. package/security/src/lib/oauth/redis-oauth-grant-store.service.d.ts +22 -0
  189. package/security/src/lib/oauth/redis-oauth-grant-store.service.d.ts.map +1 -0
  190. package/security/src/lib/oauth/redis-oauth-grant-store.service.js +132 -0
  191. package/security/src/lib/oauth/redis-oauth-grant-store.service.js.map +1 -0
  192. package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.d.ts +14 -0
  193. package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.d.ts.map +1 -0
  194. package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.js +46 -0
  195. package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.js.map +1 -0
  196. package/security/src/lib/oauth/testing/jest-empty-module.d.ts +4 -0
  197. package/security/src/lib/oauth/testing/jest-empty-module.d.ts.map +1 -0
  198. package/security/src/lib/oauth/testing/jest-empty-module.js +11 -0
  199. package/security/src/lib/oauth/testing/jest-empty-module.js.map +1 -0
  200. package/security/src/lib/oauth/testing/mock-oidc-provider.d.ts +49 -0
  201. package/security/src/lib/oauth/testing/mock-oidc-provider.d.ts.map +1 -0
  202. package/security/src/lib/oauth/testing/mock-oidc-provider.js +158 -0
  203. package/security/src/lib/oauth/testing/mock-oidc-provider.js.map +1 -0
  204. package/security/src/lib/security.module.d.ts.map +1 -1
  205. package/security/src/lib/security.module.js +31 -0
  206. package/security/src/lib/security.module.js.map +1 -1
  207. package/security/src/lib/session/backend-session.types.d.ts +2 -0
  208. package/security/src/lib/session/backend-session.types.d.ts.map +1 -1
  209. package/security/src/lib/session/backend-session.types.js.map +1 -1
  210. package/security/src/lib/session/optional-jwt-session.middleware.d.ts +6 -4
  211. package/security/src/lib/session/optional-jwt-session.middleware.d.ts.map +1 -1
  212. package/security/src/lib/session/optional-jwt-session.middleware.js +18 -7
  213. package/security/src/lib/session/optional-jwt-session.middleware.js.map +1 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var AuthService_1;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AuthService = exports.SESSION_MEMBERSHIP_DENIED_CODE = void 0;
4
+ exports.AuthService = exports.MAX_ACTIVE_DEVICE_SESSIONS_CODE = exports.SESSION_MEMBERSHIP_DENIED_CODE = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  const common_1 = require("@nestjs/common");
7
7
  const core_1 = require("@acorex-platform/framework-server/core");
@@ -9,12 +9,16 @@ const abstract_1 = require("@acorex-platform/framework-server/jql/abstract");
9
9
  const core_2 = require("@acorex-platform/framework-shared/core");
10
10
  const lodash_es_1 = require("lodash-es");
11
11
  const crypto_1 = require("crypto");
12
+ const ioredis_1 = tslib_1.__importDefault(require("ioredis"));
12
13
  const event_emitter_1 = require("@nestjs/event-emitter");
13
14
  const auth_config_1 = require("./auth.config");
14
15
  const auth_events_1 = require("./auth.events");
15
16
  const auth_local_credentials_service_1 = require("./auth-local-credentials.service");
17
+ const auth_max_device_sessions_policy_1 = require("./auth-max-device-sessions-policy");
16
18
  const device_session_service_1 = require("./device-session.service");
19
+ const request_meta_util_1 = require("./request-meta.util");
17
20
  const token_service_1 = require("./token.service");
21
+ const token_revocation_constants_1 = require("./token-revocation.constants");
18
22
  //#region ---- Auth service ----
19
23
  const USER_ENTITY = 'SecurityManagement.User';
20
24
  const TENANT_ENTITY = 'TenantManagement.Tenant';
@@ -24,6 +28,26 @@ const ALLOWED_ACCESS_STATE = 'allowed';
24
28
  const ACTIVE_MEMBERSHIP_STATUS = 'active';
25
29
  /** Stable client i18n mapping key — not shown raw in UI. */
26
30
  exports.SESSION_MEMBERSHIP_DENIED_CODE = 'SESSION_MEMBERSHIP_DENIED';
31
+ /** Stable client i18n mapping key — tenant max active device sessions exceeded. */
32
+ exports.MAX_ACTIVE_DEVICE_SESSIONS_CODE = 'MAX_ACTIVE_DEVICE_SESSIONS';
33
+ function resolveRefreshReplayRedisConnection() {
34
+ const url = process.env['REDIS_URL']?.trim();
35
+ if (url) {
36
+ return { url };
37
+ }
38
+ const host = process.env['REDIS_HOST']?.trim();
39
+ const portRaw = Number(process.env['REDIS_PORT'] ?? 6379);
40
+ if (host) {
41
+ return { host, port: Number.isFinite(portRaw) ? portRaw : 6379 };
42
+ }
43
+ return null;
44
+ }
45
+ function createRefreshReplayRedisClient(connection) {
46
+ if ('url' in connection) {
47
+ return new ioredis_1.default(connection.url, { maxRetriesPerRequest: 2, lazyConnect: true });
48
+ }
49
+ return new ioredis_1.default({ ...connection, maxRetriesPerRequest: 2, lazyConnect: true });
50
+ }
27
51
  let AuthService = AuthService_1 = class AuthService {
28
52
  constructor(entityStorage, tokenService, localCredentials, deviceSessions, events) {
29
53
  this.entityStorage = entityStorage;
@@ -32,9 +56,17 @@ let AuthService = AuthService_1 = class AuthService {
32
56
  this.deviceSessions = deviceSessions;
33
57
  this.events = events;
34
58
  this.logger = new common_1.Logger(AuthService_1.name);
59
+ const connection = resolveRefreshReplayRedisConnection();
60
+ this.refreshReplayRedis = connection ? createRefreshReplayRedisClient(connection) : null;
35
61
  }
36
- async completeSignIn(user, meta) {
37
- return this.completeAuthentication(this.toAuthUser(user), meta, {});
62
+ async onModuleDestroy() {
63
+ await this.refreshReplayRedis?.quit().catch(() => this.refreshReplayRedis?.disconnect());
64
+ }
65
+ async completeSignIn(user, meta, options) {
66
+ return this.completeAuthentication(this.toAuthUser(user), meta, {
67
+ audience: options?.audience,
68
+ ...(options?.persist !== undefined ? { persist: options.persist } : {}),
69
+ });
38
70
  }
39
71
  assertSupportedSignInStrategy(strategy) {
40
72
  const resolved = strategy ?? auth_config_1.AUTH_STRATEGY_USER_PASS;
@@ -69,13 +101,35 @@ let AuthService = AuthService_1 = class AuthService {
69
101
  });
70
102
  return this.completeAuthentication({ id, name: username, title: displayName, avatar: null }, meta, {});
71
103
  }
72
- async refreshSession(refreshToken, meta) {
104
+ async refreshSession(refreshToken, meta, options) {
73
105
  const payload = this.verifyRefreshToken(refreshToken);
106
+ await this.assertRefreshNotRevoked(payload.jti);
107
+ // Refresh-token reuse detection:
108
+ // If the same refresh token `jti` is replayed, it has already been consumed once.
109
+ // In that case revoke the whole refresh chain (same `sid`) and reject.
110
+ const reuseKey = `${token_revocation_constants_1.OAUTH_REFRESH_REPLAY_KEY_PREFIX}${payload.jti}`;
111
+ const ttlMs = this.refreshTokenMaxAgeMs();
112
+ if (this.refreshReplayRedis) {
113
+ const firstUse = await this.refreshReplayRedis.set(reuseKey, '1', 'PX', ttlMs, 'NX');
114
+ if (firstUse === null) {
115
+ // DB SoT first, then Redis projection (middleware + explicit stamp).
116
+ await this.deviceSessions.revokeBySessionId(payload.sid);
117
+ await this.deviceSessions.revokeByAuthorizationId(payload.jti);
118
+ await this.markSessionRevoked(payload.sid, { required: true });
119
+ throw new common_1.UnauthorizedException('Refresh token reuse detected.');
120
+ }
121
+ }
74
122
  const user = await this.localCredentials.findUserById(payload.sub);
75
123
  if (!user) {
76
124
  throw new common_1.UnauthorizedException('User not found');
77
125
  }
78
- await this.deviceSessions.revokeByAuthorizationId(payload.jti);
126
+ await this.assertSessionAllowed(payload.sid);
127
+ // Do NOT revoke the DeviceSessions row on refresh rotation.
128
+ // revokeByAuthorizationId → status:revoked projects Redis session-revoked:{sid}
129
+ // (device-sessions-token-revoke middleware). Tokens keep the same sid, so the next
130
+ // request would 401 ("logged out after refresh"). Old refresh jti is consumed via
131
+ // the replay key above; real terminates (logout / Active Sessions / reuse) still
132
+ // revoke the row + sid. update-binding below only rotates authorizationId (new jti).
79
133
  await this.assertActiveMembership(user.id, payload.tid, payload.aid);
80
134
  const [tenant, application] = await Promise.all([
81
135
  this.resolveTenantDto(payload.tid),
@@ -87,6 +141,9 @@ let AuthService = AuthService_1 = class AuthService {
87
141
  tenant,
88
142
  application,
89
143
  sessionId: payload.sid,
144
+ audience: options?.audience,
145
+ // Legacy refresh JWTs omit `persist` → keep persistent cookies (prior default).
146
+ persist: payload.persist !== false,
90
147
  }, 'update-binding');
91
148
  }
92
149
  async logout(refreshToken) {
@@ -95,12 +152,22 @@ let AuthService = AuthService_1 = class AuthService {
95
152
  }
96
153
  try {
97
154
  const payload = this.verifyRefreshToken(refreshToken);
155
+ await this.markRefreshRevoked(payload.jti);
156
+ // DeviceSessions SoT, then Redis sid projection.
98
157
  await this.deviceSessions.revokeByAuthorizationId(payload.jti);
158
+ await this.deviceSessions.revokeBySessionId(payload.sid);
159
+ await this.markSessionRevoked(payload.sid, { required: true });
99
160
  this.emitLogoutEvent({
100
161
  userId: payload.sub,
101
162
  tenantId: payload.tid,
102
163
  at: new Date().toISOString(),
103
164
  });
165
+ this.emitSecurityAlert({
166
+ kind: 'logout',
167
+ userId: payload.sub,
168
+ at: new Date().toISOString(),
169
+ actorSessionId: payload.sid,
170
+ });
104
171
  }
105
172
  catch (error) {
106
173
  this.logger.debug(`Logout ignored invalid refresh token: ${String(error)}`);
@@ -108,7 +175,7 @@ let AuthService = AuthService_1 = class AuthService {
108
175
  return { success: true };
109
176
  }
110
177
  async updateSession(currentAccessToken, dto, meta) {
111
- const current = this.verifyAccessToken(currentAccessToken);
178
+ const current = await this.validateAccessToken(currentAccessToken);
112
179
  const user = await this.localCredentials.findUserById(current.sub);
113
180
  if (!user) {
114
181
  throw new common_1.UnauthorizedException('User not found');
@@ -140,14 +207,27 @@ let AuthService = AuthService_1 = class AuthService {
140
207
  sessionId: current.sid,
141
208
  }, 'update-binding');
142
209
  }
143
- verifyAccessToken(token) {
210
+ /**
211
+ * Cryptographic verify only (signature / exp / type / aud).
212
+ * Prefer {@link validateAccessToken} for request auth (OD-09 sid/jti checks).
213
+ */
214
+ verifyAccessToken(token, expectedAudience) {
144
215
  try {
145
- return this.tokenService.verifyAccessToken(token);
216
+ return this.tokenService.verifyAccessToken(token, expectedAudience);
146
217
  }
147
218
  catch {
148
219
  throw new common_1.UnauthorizedException('Invalid or expired access token');
149
220
  }
150
221
  }
222
+ /**
223
+ * OD-09 access-token validation: signature → expiration → `sid` → `jti`.
224
+ */
225
+ async validateAccessToken(token, expectedAudience) {
226
+ const payload = this.verifyAccessToken(token, expectedAudience);
227
+ await this.assertSessionAllowed(payload.sid);
228
+ await this.assertAccessJtiNotRevoked(payload.jti);
229
+ return payload;
230
+ }
151
231
  verifyRefreshToken(token) {
152
232
  try {
153
233
  return this.tokenService.verifyRefreshToken(token);
@@ -162,7 +242,50 @@ let AuthService = AuthService_1 = class AuthService {
162
242
  refreshTokenMaxAgeMs() {
163
243
  return this.tokenService.refreshTokenMaxAgeMs();
164
244
  }
245
+ async revokeSessionById(sessionId) {
246
+ // DB SoT first; entity middleware projects Redis. Explicit stamp covers missing rows.
247
+ await this.deviceSessions.revokeBySessionId(sessionId);
248
+ await this.markSessionRevoked(sessionId, { required: true });
249
+ }
250
+ /**
251
+ * Projects DeviceSessions revoke (SoT) onto Redis for the JWT `sid` family.
252
+ * Request paths check Redis only — this stamp is required for terminate to take effect.
253
+ */
254
+ async invalidateLoginSession(sessionId) {
255
+ await this.markSessionRevoked(sessionId, { required: true });
256
+ }
257
+ /**
258
+ * Realtime kick for a remote DeviceSessions terminate (Active Sessions UI, etc.).
259
+ * Does not change Redis revoke — call after {@link invalidateLoginSession}.
260
+ */
261
+ notifyRemoteSessionTerminated(userId, sessionId) {
262
+ const uid = userId.trim();
263
+ const sid = sessionId.trim();
264
+ if (!uid || !sid) {
265
+ return;
266
+ }
267
+ this.emitSecurityAlert({
268
+ kind: 'session_terminated',
269
+ userId: uid,
270
+ at: new Date().toISOString(),
271
+ targetSessionId: sid,
272
+ });
273
+ }
274
+ decodeIdTokenHint(token) {
275
+ return this.tokenService.decodeIdTokenHint(token);
276
+ }
165
277
  async completeAuthentication(user, meta, context, deviceSessionMode = 'create') {
278
+ if (deviceSessionMode === 'create') {
279
+ await this.assertMaxActiveDeviceSessionsAllowed(user.id, meta, context.tenantId, {
280
+ mode: 'create',
281
+ });
282
+ }
283
+ else {
284
+ await this.assertMaxActiveDeviceSessionsAllowed(user.id, meta, context.tenantId, {
285
+ mode: 'update-binding',
286
+ sessionId: context.sessionId,
287
+ });
288
+ }
166
289
  const tokens = this.tokenService.issueTokenResponse(user, context);
167
290
  const refreshPayload = this.tokenService.verifyRefreshToken(tokens.refreshToken);
168
291
  const sessionId = tokens.sessionId ?? refreshPayload.sid;
@@ -174,7 +297,7 @@ let AuthService = AuthService_1 = class AuthService {
174
297
  applicationId: context.applicationId,
175
298
  });
176
299
  if (!updated) {
177
- await this.deviceSessions.createSession({
300
+ const created = await this.deviceSessions.createSession({
178
301
  user,
179
302
  authorizationId: refreshPayload.jti,
180
303
  sessionId,
@@ -182,10 +305,11 @@ let AuthService = AuthService_1 = class AuthService {
182
305
  tenantId: context.tenantId,
183
306
  applicationId: context.applicationId,
184
307
  });
308
+ await this.revokeReplacedDeviceSessions(created.replacedSessionIds);
185
309
  }
186
310
  }
187
311
  else {
188
- await this.deviceSessions.createSession({
312
+ const created = await this.deviceSessions.createSession({
189
313
  user,
190
314
  authorizationId: refreshPayload.jti,
191
315
  sessionId,
@@ -193,6 +317,14 @@ let AuthService = AuthService_1 = class AuthService {
193
317
  tenantId: context.tenantId,
194
318
  applicationId: context.applicationId,
195
319
  });
320
+ await this.revokeReplacedDeviceSessions(created.replacedSessionIds);
321
+ this.emitSecurityAlert({
322
+ kind: 'login_success',
323
+ userId: user.id,
324
+ at: new Date().toISOString(),
325
+ actorSessionId: sessionId,
326
+ ...this.securityAlertDeviceFields(meta),
327
+ });
196
328
  }
197
329
  try {
198
330
  await this.entityStorage.updateOneAsEngine(USER_ENTITY, user.id, {
@@ -204,6 +336,87 @@ let AuthService = AuthService_1 = class AuthService {
204
336
  }
205
337
  return tokens;
206
338
  }
339
+ /**
340
+ * Tenant setting MaxActiveDeviceSessions — per user + tenant.
341
+ * Enforced when a real tenant is known (tenant chooser bind / auto-bind, or create with tid).
342
+ * Same device upsert (create) and re-bind of the current session to the same tenant are allowed.
343
+ */
344
+ async assertMaxActiveDeviceSessionsAllowed(userId, meta, tenantId, options) {
345
+ const tid = tenantId?.trim();
346
+ if (!tid || (0, device_session_service_1.isUnboundDeviceSessionTenantId)(tid)) {
347
+ return;
348
+ }
349
+ const max = await (0, auth_max_device_sessions_policy_1.resolveAuthMaxDeviceSessions)(tid);
350
+ if (max <= 0) {
351
+ return;
352
+ }
353
+ if (options.mode === 'update-binding' && options.sessionId) {
354
+ const boundTenantId = await this.deviceSessions.getActiveTenantIdForSession(options.sessionId);
355
+ if (boundTenantId === tid) {
356
+ return;
357
+ }
358
+ const activeCount = await this.deviceSessions.countActiveForUserTenant(userId, tid, {
359
+ excludeSessionIds: [options.sessionId],
360
+ });
361
+ if (activeCount >= max) {
362
+ throw new common_1.ForbiddenException({
363
+ code: exports.MAX_ACTIVE_DEVICE_SESSIONS_CODE,
364
+ message: exports.MAX_ACTIVE_DEVICE_SESSIONS_CODE,
365
+ error: exports.MAX_ACTIVE_DEVICE_SESSIONS_CODE,
366
+ });
367
+ }
368
+ return;
369
+ }
370
+ if (await this.deviceSessions.hasActiveDeviceForUser(userId, meta)) {
371
+ return;
372
+ }
373
+ const activeCount = await this.deviceSessions.countActiveForUserTenant(userId, tid);
374
+ if (activeCount >= max) {
375
+ throw new common_1.ForbiddenException({
376
+ code: exports.MAX_ACTIVE_DEVICE_SESSIONS_CODE,
377
+ message: exports.MAX_ACTIVE_DEVICE_SESSIONS_CODE,
378
+ error: exports.MAX_ACTIVE_DEVICE_SESSIONS_CODE,
379
+ });
380
+ }
381
+ }
382
+ /**
383
+ * Active DeviceSessions for the authenticated user in a tenant (session-limit chooser).
384
+ */
385
+ async listOwnActiveDeviceSessions(accessToken, tenantId) {
386
+ const current = await this.validateAccessToken(accessToken);
387
+ const tid = tenantId.trim();
388
+ if (!tid || (0, device_session_service_1.isUnboundDeviceSessionTenantId)(tid)) {
389
+ return [];
390
+ }
391
+ const rows = await this.deviceSessions.listActiveSessionsForUserTenant(current.sub, tid);
392
+ return rows
393
+ .filter((row) => row.sessionId !== current.sid)
394
+ .map((row) => ({
395
+ id: row.id,
396
+ sessionId: row.sessionId,
397
+ tenantId: row.tenantId,
398
+ deviceName: row.deviceName,
399
+ browser: row.browser,
400
+ operatingSystem: row.operatingSystem,
401
+ ipAddress: row.ipAddress,
402
+ lastLoginAt: row.lastLoginAt,
403
+ }));
404
+ }
405
+ /**
406
+ * Terminate one of the caller's DeviceSessions (by entity id) during session-limit recovery.
407
+ */
408
+ async terminateOwnDeviceSession(accessToken, deviceSessionId) {
409
+ const current = await this.validateAccessToken(accessToken);
410
+ const revokedSid = await this.deviceSessions.revokeOwnedSessionById(current.sub, deviceSessionId);
411
+ if (revokedSid == null) {
412
+ throw new common_1.BadRequestException('Device session not found');
413
+ }
414
+ // Engine update skips DeviceSessionsTokenRevokeMiddleware — stamp Redis here.
415
+ if (revokedSid !== '' && revokedSid !== current.sid) {
416
+ await this.markSessionRevoked(revokedSid, { required: true });
417
+ this.notifyRemoteSessionTerminated(current.sub, revokedSid);
418
+ }
419
+ }
207
420
  emitLogoutEvent(payload) {
208
421
  try {
209
422
  this.events?.emit(auth_events_1.AUTH_LOGOUT_EVENT, payload);
@@ -212,6 +425,24 @@ let AuthService = AuthService_1 = class AuthService {
212
425
  this.logger.debug(`Auth logout event emit failed: ${String(error)}`);
213
426
  }
214
427
  }
428
+ emitSecurityAlert(payload) {
429
+ try {
430
+ this.events?.emit(auth_events_1.AUTH_SECURITY_ALERT_EVENT, payload);
431
+ }
432
+ catch (error) {
433
+ this.logger.debug(`Auth security alert emit failed: ${String(error)}`);
434
+ }
435
+ }
436
+ securityAlertDeviceFields(meta) {
437
+ const parsed = (0, request_meta_util_1.parseUserAgent)(meta.userAgent);
438
+ return {
439
+ deviceSummary: `${parsed.deviceName} · ${parsed.browser}`,
440
+ ipAddress: meta.ipAddress,
441
+ browser: parsed.browser,
442
+ deviceName: parsed.deviceName,
443
+ operatingSystem: parsed.operatingSystem,
444
+ };
445
+ }
215
446
  toAuthUser(user) {
216
447
  return {
217
448
  id: user.id,
@@ -377,6 +608,76 @@ let AuthService = AuthService_1 = class AuthService {
377
608
  'default-name';
378
609
  return { id: applicationId, name: routeName, title };
379
610
  }
611
+ async assertRefreshNotRevoked(jti) {
612
+ if (!this.refreshReplayRedis || !jti.trim()) {
613
+ return;
614
+ }
615
+ const revoked = await this.refreshReplayRedis.get(`${token_revocation_constants_1.OAUTH_REFRESH_REVOKED_KEY_PREFIX}${jti}`);
616
+ if (revoked) {
617
+ throw new common_1.UnauthorizedException('Refresh token has been revoked.');
618
+ }
619
+ }
620
+ async markRefreshRevoked(jti) {
621
+ if (!this.refreshReplayRedis || !jti.trim()) {
622
+ return;
623
+ }
624
+ const ttlMs = this.refreshTokenMaxAgeMs();
625
+ await this.refreshReplayRedis.set(`${token_revocation_constants_1.OAUTH_REFRESH_REVOKED_KEY_PREFIX}${jti}`, '1', 'PX', ttlMs);
626
+ }
627
+ async markSessionRevoked(sessionId, options) {
628
+ const sid = sessionId?.trim();
629
+ if (!sid) {
630
+ if (options?.required) {
631
+ throw new common_1.BadRequestException('sessionId is required to invalidate a login session.');
632
+ }
633
+ return;
634
+ }
635
+ if (!this.refreshReplayRedis) {
636
+ const message = 'Session revoke store (Redis) is unavailable; cannot project DeviceSessions revoke.';
637
+ if (options?.required) {
638
+ throw new common_1.ServiceUnavailableException(message);
639
+ }
640
+ this.logger.warn(message);
641
+ return;
642
+ }
643
+ // Cover remaining access-token TTL after logout (refresh TTL is an upper bound).
644
+ const ttlMs = Math.max(this.refreshTokenMaxAgeMs(), this.accessTokenMaxAgeMs());
645
+ await this.refreshReplayRedis.set(`${token_revocation_constants_1.OAUTH_SESSION_REVOKED_KEY_PREFIX}${sid}`, '1', 'PX', ttlMs);
646
+ }
647
+ /** Invalidates prior login families when the same device row is reused (per-device upsert). */
648
+ async revokeReplacedDeviceSessions(sessionIds) {
649
+ for (const sid of sessionIds) {
650
+ await this.markSessionRevoked(sid, { required: true });
651
+ }
652
+ }
653
+ /**
654
+ * OD-09 hot path: Redis projection only. DeviceSessions is SoT on write;
655
+ * do not query Mongo here (see device-session-revocation.mdc).
656
+ */
657
+ async assertSessionAllowed(sessionId) {
658
+ const sid = sessionId?.trim();
659
+ if (!sid) {
660
+ // Legacy access tokens without `sid` — signature/exp only.
661
+ return;
662
+ }
663
+ if (!this.refreshReplayRedis) {
664
+ throw new common_1.ServiceUnavailableException('Session store (Redis) is unavailable.');
665
+ }
666
+ const revoked = await this.refreshReplayRedis.get(`${token_revocation_constants_1.OAUTH_SESSION_REVOKED_KEY_PREFIX}${sid}`);
667
+ if (revoked) {
668
+ throw new common_1.UnauthorizedException('Session has been revoked.');
669
+ }
670
+ }
671
+ async assertAccessJtiNotRevoked(jti) {
672
+ const id = jti?.trim();
673
+ if (!this.refreshReplayRedis || !id) {
674
+ return;
675
+ }
676
+ const revoked = await this.refreshReplayRedis.get(`${token_revocation_constants_1.OAUTH_ACCESS_REVOKED_KEY_PREFIX}${id}`);
677
+ if (revoked) {
678
+ throw new common_1.UnauthorizedException('Access token has been revoked.');
679
+ }
680
+ }
380
681
  };
381
682
  exports.AuthService = AuthService;
382
683
  exports.AuthService = AuthService = AuthService_1 = tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/auth/auth.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/auth/auth.service.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export interface SignInRequestDto {
3
3
  strategy?: string;
4
4
  username: string;
5
5
  password: string;
6
+ /** When true, refresh cookie uses maxAge (survive browser restart). When false, session cookie. */
7
+ rememberMe?: boolean;
6
8
  }
7
9
  export interface RegisterRequestDto {
8
10
  strategy?: string;
@@ -24,6 +26,24 @@ export interface UpdateSessionRequestDto {
24
26
  title?: AXPMultiLanguageString;
25
27
  };
26
28
  }
29
+ /** Device session row for the session-limit chooser (caller’s other devices). */
30
+ export interface AuthOwnDeviceSessionDto {
31
+ id: string;
32
+ sessionId: string;
33
+ tenantId: string;
34
+ deviceName: string;
35
+ browser: string;
36
+ operatingSystem: string;
37
+ ipAddress: string;
38
+ lastLoginAt?: string;
39
+ }
40
+ export interface AuthListOwnDeviceSessionsRequestDto {
41
+ tenantId: string;
42
+ }
43
+ export interface AuthTerminateOwnDeviceSessionRequestDto {
44
+ /** DeviceSessions entity id (not JWT `sid`). */
45
+ id: string;
46
+ }
27
47
  export interface RefreshTokenRequestDto {
28
48
  refreshToken?: string;
29
49
  }
@@ -49,6 +69,12 @@ export interface AuthTokenResponseDto {
49
69
  refreshToken: string;
50
70
  expiresIn: string;
51
71
  sessionId?: string;
72
+ /**
73
+ * When true, browser should set a persistent refresh cookie (maxAge).
74
+ * When false, refresh cookie is session-scoped (cleared on browser close).
75
+ * Omitted / undefined → treat as persistent (backward compatible).
76
+ */
77
+ persist?: boolean;
52
78
  user: AuthUserDto;
53
79
  tenant?: AuthTenantDto | null;
54
80
  application?: AuthApplicationDto | null;
@@ -58,8 +84,15 @@ export interface AccessTokenPayload {
58
84
  username: string;
59
85
  tid?: string;
60
86
  aid?: string;
87
+ /** Session id — OD-09 session-level revoke. */
61
88
  sid?: string;
89
+ /** JWT id — OD-09 token-level revoke (optional on legacy tokens). */
90
+ jti?: string;
62
91
  type: 'access';
92
+ /** RFC 9068 access token type claim when present in JWT payload. */
93
+ typ?: string;
94
+ /** Standard OAuth/JWT audience; Platform OP stamps fixed `platform`. */
95
+ aud?: string | string[];
63
96
  }
64
97
  export interface RefreshTokenPayload {
65
98
  sub: string;
@@ -68,11 +101,14 @@ export interface RefreshTokenPayload {
68
101
  sid: string;
69
102
  tid?: string;
70
103
  aid?: string;
104
+ /** Remember-me: re-apply persistent refresh cookie on rotation. */
105
+ persist?: boolean;
71
106
  }
72
107
  export interface SecurityManagementUserRecord {
73
108
  id: string;
74
109
  username?: string;
75
110
  displayName?: string;
111
+ email?: string;
76
112
  password?: string;
77
113
  avatar?: string | null;
78
114
  accountState?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/auth/auth.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/auth/auth.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.types.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/auth/auth.types.ts"],"names":[],"mappings":";AAAA,8CAA8C;;AAuF9C,YAAY"}
1
+ {"version":3,"file":"auth.types.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/auth/auth.types.ts"],"names":[],"mappings":";AAAA,8CAA8C;;AA8H9C,YAAY"}