@rudderjs/session 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -143,7 +143,7 @@ Session data is JSON-serialised, base64url-encoded, and signed with HMAC-SHA256.
143
143
 
144
144
  ### `redis`
145
145
 
146
- Session ID is stored in the cookie; data lives in Redis under `{prefix}{id}`. Requires `ioredis`.
146
+ The cookie holds the HMAC-signed session ID; the data lives in Redis under `{prefix}{id}`. Requires `ioredis`.
147
147
 
148
148
  ```ts
149
149
  {
@@ -155,6 +155,18 @@ Session ID is stored in the cookie; data lives in Redis under `{prefix}{id}`. Re
155
155
  }
156
156
  ```
157
157
 
158
+ ### Driver tradeoffs
159
+
160
+ | | cookie | redis |
161
+ | --- | --- | --- |
162
+ | Server-side store | none — payload lives in the cookie | required |
163
+ | Max size | ~4 KB | bounded by Redis |
164
+ | `regenerate()` invalidates the old cookie | **no** — old signed cookie remains valid until its `Max-Age` | yes — old key is deleted from Redis |
165
+ | `destroy()` after logout | no-op (statelessness is the tradeoff) | actual delete |
166
+ | Survives a redis outage | n/a | sessions become unreadable |
167
+
168
+ If you need true post-logout invalidation, a stolen-cookie kill switch, or full session-fixation defense beyond rotating the ID on login, **use the redis driver**. The cookie driver is the right choice when statelessness is the goal and the data fits — flash messages, CSRF tokens, simple "is logged in" markers — and you can accept that revocation only happens at TTL.
169
+
158
170
  ---
159
171
 
160
172
  ## Notes
package/dist/index.d.ts CHANGED
@@ -57,6 +57,17 @@ export declare class SessionInstance {
57
57
  has(key: string): boolean;
58
58
  all(): Record<string, unknown>;
59
59
  id(): string;
60
+ /**
61
+ * Mint a fresh session id and best-effort destroy the prior one server-side.
62
+ *
63
+ * **Cookie driver caveat (`session.driver = 'cookie'`):** the previous
64
+ * cookie remains valid until its `Max-Age` expires. The cookie driver is
65
+ * stateless — there is no server-side store to delete from — so a stolen
66
+ * pre-regenerate cookie can still be replayed within its TTL. Apps that
67
+ * need true post-logout invalidation (or fixation defense beyond
68
+ * "rotate the id on login") must use the redis driver, where `destroy()`
69
+ * actually removes the key. See README "Sessions" → "Driver tradeoffs".
70
+ */
60
71
  regenerate(): Promise<void>;
61
72
  /** Whether the session data has been modified since loading. */
62
73
  isDirty(): boolean;
@@ -79,11 +90,40 @@ export declare class Session {
79
90
  static all(): Record<string, unknown>;
80
91
  static regenerate(): Promise<void>;
81
92
  }
93
+ /**
94
+ * Test-only — run `fn` inside a session ALS context populated by `session`.
95
+ * Lets unit tests in other packages exercise code paths that go through the
96
+ * `Session` static facade (e.g. CSRF helpers, OAuth state) without standing
97
+ * up the full request middleware. NOT for production code.
98
+ *
99
+ * @internal
100
+ */
101
+ export declare function _runWithSession<T>(session: SessionInstance, fn: () => T): T;
102
+ /** @internal Exported for tests; not part of the public API. */
103
+ export declare class RedisDriver implements InternalDriver {
104
+ private readonly redisConfig;
105
+ private readonly secret;
106
+ private clientPromise;
107
+ private readonly prefix;
108
+ constructor(redisConfig: NonNullable<SessionConfig['redis']>, secret: string);
109
+ private getClient;
110
+ private key;
111
+ load(cookieValue: string | undefined): Promise<SessionPayload>;
112
+ persist(payload: SessionPayload, ttl: number): Promise<string>;
113
+ destroy(id: string): Promise<void>;
114
+ private empty;
115
+ }
82
116
  export declare function sessionMiddleware(config: SessionConfig): MiddlewareHandler;
83
117
  /**
84
118
  * Session middleware that reads its config from the DI container.
85
119
  * Requires session() provider to be registered in bootstrap/providers.ts.
86
120
  *
121
+ * Resolves the singleton middleware bound by `SessionProvider.boot()` to
122
+ * `session.middleware`, so per-route opt-ins on api routes share the same
123
+ * driver — and the same redis connection — as the auto-installed web group
124
+ * middleware. Constructing a fresh `sessionMiddleware(cfg)` per call would
125
+ * spin up a new RedisDriver (and a new ioredis connection) per route.
126
+ *
87
127
  * Usage in routes:
88
128
  * import { SessionMiddleware } from '@rudderjs/session'
89
129
  * Route.get('/path', handler, [SessionMiddleware()])
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createHmac, randomUUID } from 'node:crypto';
1
+ import { createHmac, randomUUID, timingSafeEqual } from 'node:crypto';
2
2
  import { AsyncLocalStorage } from 'node:async_hooks';
3
3
  import { ServiceProvider, app, config, appendToGroup } from '@rudderjs/core';
4
4
  // ─── SessionInstance ───────────────────────────────────────
@@ -11,14 +11,19 @@ export class SessionInstance {
11
11
  _driver;
12
12
  _config;
13
13
  constructor(payload, driver, config) {
14
+ // Default missing fields rather than trusting the shape — legacy and
15
+ // corrupt redis entries (or third-party writes) may omit flash_next or
16
+ // data entirely, and crashing the constructor takes the whole request
17
+ // down on every load.
18
+ const flashPrev = payload.flash_next ?? {};
14
19
  this._id = payload.id;
15
- this._data = { ...payload.data };
16
- this._flash = { ...payload.flash_next }; // prev flash_next → current flash
20
+ this._data = { ...(payload.data ?? {}) };
21
+ this._flash = { ...flashPrev }; // prev flash_next → current flash
17
22
  this._flashNext = {};
18
23
  this._driver = driver;
19
24
  this._config = config;
20
25
  // Flash data was consumed — mark dirty so save() clears it from the cookie
21
- if (Object.keys(payload.flash_next).length > 0)
26
+ if (Object.keys(flashPrev).length > 0)
22
27
  this._dirty = true;
23
28
  }
24
29
  get(key, fallback) {
@@ -54,6 +59,17 @@ export class SessionInstance {
54
59
  id() {
55
60
  return this._id;
56
61
  }
62
+ /**
63
+ * Mint a fresh session id and best-effort destroy the prior one server-side.
64
+ *
65
+ * **Cookie driver caveat (`session.driver = 'cookie'`):** the previous
66
+ * cookie remains valid until its `Max-Age` expires. The cookie driver is
67
+ * stateless — there is no server-side store to delete from — so a stolen
68
+ * pre-regenerate cookie can still be replayed within its TTL. Apps that
69
+ * need true post-logout invalidation (or fixation defense beyond
70
+ * "rotate the id on login") must use the redis driver, where `destroy()`
71
+ * actually removes the key. See README "Sessions" → "Driver tradeoffs".
72
+ */
57
73
  async regenerate() {
58
74
  await this._driver.destroy(this._id);
59
75
  this._id = randomUUID();
@@ -129,27 +145,46 @@ export class Session {
129
145
  return this.current().regenerate();
130
146
  }
131
147
  }
132
- // ─── Cookie Driver ─────────────────────────────────────────
133
- function signPayload(payload, secret) {
134
- const b64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
135
- const hmac = createHmac('sha256', secret).update(b64).digest('base64url');
136
- return `${b64}.${hmac}`;
148
+ /**
149
+ * Test-only — run `fn` inside a session ALS context populated by `session`.
150
+ * Lets unit tests in other packages exercise code paths that go through the
151
+ * `Session` static facade (e.g. CSRF helpers, OAuth state) without standing
152
+ * up the full request middleware. NOT for production code.
153
+ *
154
+ * @internal
155
+ */
156
+ export function _runWithSession(session, fn) {
157
+ return _als.run(session, fn);
137
158
  }
138
- function verifyPayload(cookieValue, secret) {
139
- const dotIdx = cookieValue.lastIndexOf('.');
159
+ // ─── Sign / Verify primitives ──────────────────────────────
160
+ // Generic HMAC-SHA256 sign+verify shared by both drivers. Cookie driver signs
161
+ // the base64url-encoded JSON payload; redis driver signs the session ID alone
162
+ // so a stolen UUID can't be replayed and an attacker-supplied ID can't fixate
163
+ // onto a victim's session.
164
+ function sign(value, secret) {
165
+ const hmac = createHmac('sha256', secret).update(value).digest('base64url');
166
+ return `${value}.${hmac}`;
167
+ }
168
+ function verify(signed, secret) {
169
+ const dotIdx = signed.lastIndexOf('.');
140
170
  if (dotIdx === -1)
141
171
  return null;
142
- const b64 = cookieValue.slice(0, dotIdx);
143
- const hmac = cookieValue.slice(dotIdx + 1);
144
- const expected = createHmac('sha256', secret).update(b64).digest('base64url');
145
- // Constant-time comparison
146
- if (expected.length !== hmac.length)
172
+ const value = signed.slice(0, dotIdx);
173
+ const hmac = signed.slice(dotIdx + 1);
174
+ const expected = createHmac('sha256', secret).update(value).digest('base64url');
175
+ const expectedBuf = Buffer.from(expected, 'base64url');
176
+ const hmacBuf = Buffer.from(hmac, 'base64url');
177
+ if (expectedBuf.length !== hmacBuf.length)
147
178
  return null;
148
- let mismatch = 0;
149
- for (let i = 0; i < expected.length; i++) {
150
- mismatch |= (expected.codePointAt(i) ?? 0) ^ (hmac.codePointAt(i) ?? 0);
151
- }
152
- if (mismatch !== 0)
179
+ return timingSafeEqual(expectedBuf, hmacBuf) ? value : null;
180
+ }
181
+ // ─── Cookie Driver ─────────────────────────────────────────
182
+ function signPayload(payload, secret) {
183
+ return sign(Buffer.from(JSON.stringify(payload)).toString('base64url'), secret);
184
+ }
185
+ function verifyPayload(cookieValue, secret) {
186
+ const b64 = verify(cookieValue, secret);
187
+ if (b64 === null)
153
188
  return null;
154
189
  try {
155
190
  return JSON.parse(Buffer.from(b64, 'base64url').toString('utf8'));
@@ -172,44 +207,67 @@ class CookieDriver {
172
207
  return signPayload(payload, this.secret);
173
208
  }
174
209
  async destroy(_id) {
175
- // Cookie driver: nothing to destroy server-side
210
+ // Cookie driver is stateless there is no server-side store to delete
211
+ // from. The pre-regenerate cookie therefore remains valid until its
212
+ // Max-Age expires; this is documented on `SessionInstance.regenerate()`.
213
+ // Apps that need true post-logout invalidation must use the redis driver.
176
214
  }
177
215
  empty() {
178
216
  return { id: randomUUID(), data: {}, flash_next: {} };
179
217
  }
180
218
  }
181
- // ─── Redis Driver ──────────────────────────────────────────
182
- class RedisDriver {
183
- config;
184
- client;
219
+ /** @internal Exported for tests; not part of the public API. */
220
+ export class RedisDriver {
221
+ redisConfig;
222
+ secret;
223
+ // Cache the *promise* of a client, not the client itself. With a raw
224
+ // `if (!this.client)` guard, two concurrent first-request callers would
225
+ // both fall through and each construct a new ioredis instance — the
226
+ // second overwrites the first, leaking the first connection's FD and
227
+ // its retry timer. Caching the promise means concurrent callers all
228
+ // await the same in-flight connect.
229
+ clientPromise = null;
185
230
  prefix;
186
- constructor(config) {
187
- this.config = config;
188
- this.prefix = config.prefix ?? 'session:';
189
- }
190
- async getClient() {
191
- if (!this.client) {
192
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
193
- const { Redis } = await import('ioredis');
194
- this.client = this.config.url
195
- ? new Redis(this.config.url)
196
- : new Redis({
197
- host: this.config.host ?? '127.0.0.1',
198
- port: this.config.port ?? 6379,
199
- password: this.config.password,
200
- });
231
+ constructor(redisConfig, secret) {
232
+ this.redisConfig = redisConfig;
233
+ this.secret = secret;
234
+ this.prefix = redisConfig.prefix ?? 'session:';
235
+ }
236
+ getClient() {
237
+ if (!this.clientPromise) {
238
+ this.clientPromise = (async () => {
239
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
240
+ const { Redis } = await import('ioredis');
241
+ return this.redisConfig.url
242
+ ? new Redis(this.redisConfig.url)
243
+ : new Redis({
244
+ host: this.redisConfig.host ?? '127.0.0.1',
245
+ port: this.redisConfig.port ?? 6379,
246
+ password: this.redisConfig.password,
247
+ });
248
+ })();
249
+ // If the import or constructor throws, drop the rejected promise so
250
+ // the next call retries instead of permanently caching the failure.
251
+ this.clientPromise.catch(() => { this.clientPromise = null; });
201
252
  }
202
- return this.client;
253
+ return this.clientPromise;
203
254
  }
204
255
  key(id) { return `${this.prefix}${id}`; }
205
256
  async load(cookieValue) {
206
257
  if (!cookieValue)
207
258
  return this.empty();
259
+ // Verify HMAC before touching redis. An attacker who plants an unsigned
260
+ // ID — or guesses one — never reaches the redis lookup, and a cache miss
261
+ // on a valid signature still creates a fresh ID rather than fixating on
262
+ // the cookie-supplied value.
263
+ const id = verify(cookieValue, this.secret);
264
+ if (id === null)
265
+ return this.empty();
208
266
  try {
209
267
  const client = await this.getClient();
210
- const raw = await client.get(this.key(cookieValue));
268
+ const raw = await client.get(this.key(id));
211
269
  if (!raw)
212
- return this.emptyWithId(cookieValue);
270
+ return this.empty();
213
271
  return JSON.parse(raw);
214
272
  }
215
273
  catch {
@@ -219,7 +277,7 @@ class RedisDriver {
219
277
  async persist(payload, ttl) {
220
278
  const client = await this.getClient();
221
279
  await client.set(this.key(payload.id), JSON.stringify(payload), 'EX', ttl);
222
- return payload.id;
280
+ return sign(payload.id, this.secret);
223
281
  }
224
282
  async destroy(id) {
225
283
  try {
@@ -233,9 +291,6 @@ class RedisDriver {
233
291
  empty() {
234
292
  return { id: randomUUID(), data: {}, flash_next: {} };
235
293
  }
236
- emptyWithId(id) {
237
- return { id, data: {}, flash_next: {} };
238
- }
239
294
  }
240
295
  // ─── Helpers ───────────────────────────────────────────────
241
296
  function parseCookie(header, name) {
@@ -264,7 +319,7 @@ function buildCookieHeader(name, value, config) {
264
319
  }
265
320
  function makeDriver(config) {
266
321
  if (config.driver === 'redis')
267
- return new RedisDriver(config.redis ?? {});
322
+ return new RedisDriver(config.redis ?? {}, config.secret);
268
323
  return new CookieDriver(config.secret);
269
324
  }
270
325
  // ─── Session Middleware ────────────────────────────────────
@@ -279,8 +334,30 @@ export function sessionMiddleware(config) {
279
334
  if (!cookieValue)
280
335
  session.markDirty();
281
336
  req.raw['__rjs_session'] = session;
282
- await _als.run(session, next);
283
- await session.save(res);
337
+ // Persist regardless of whether next() throws — flash messages on error
338
+ // redirects, new sessions on error responses, and regenerate() must
339
+ // survive a thrown handler. Save errors only surface when next() did not
340
+ // already throw, so the original exception isn't masked by a redis blip.
341
+ let nextErrored = false;
342
+ let nextErr;
343
+ try {
344
+ await _als.run(session, next);
345
+ }
346
+ catch (err) {
347
+ nextErrored = true;
348
+ nextErr = err;
349
+ }
350
+ try {
351
+ await session.save(res);
352
+ }
353
+ catch (saveErr) {
354
+ if (!nextErrored) {
355
+ nextErrored = true;
356
+ nextErr = saveErr;
357
+ }
358
+ }
359
+ if (nextErrored)
360
+ throw nextErr;
284
361
  };
285
362
  }
286
363
  // ─── Zero-config middleware (reads config from DI) ─────────
@@ -288,13 +365,18 @@ export function sessionMiddleware(config) {
288
365
  * Session middleware that reads its config from the DI container.
289
366
  * Requires session() provider to be registered in bootstrap/providers.ts.
290
367
  *
368
+ * Resolves the singleton middleware bound by `SessionProvider.boot()` to
369
+ * `session.middleware`, so per-route opt-ins on api routes share the same
370
+ * driver — and the same redis connection — as the auto-installed web group
371
+ * middleware. Constructing a fresh `sessionMiddleware(cfg)` per call would
372
+ * spin up a new RedisDriver (and a new ioredis connection) per route.
373
+ *
291
374
  * Usage in routes:
292
375
  * import { SessionMiddleware } from '@rudderjs/session'
293
376
  * Route.get('/path', handler, [SessionMiddleware()])
294
377
  */
295
378
  export function SessionMiddleware() {
296
- const config = app().make('session.config');
297
- return sessionMiddleware(config);
379
+ return app().make('session.middleware');
298
380
  }
299
381
  // ─── Service Provider Factory ──────────────────────────────
300
382
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudderjs/session",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "rudderjs": {
5
5
  "provider": "SessionProvider",
6
6
  "stage": "infrastructure"
@@ -25,8 +25,8 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@rudderjs/contracts": "^1.2.0",
29
- "@rudderjs/core": "^1.1.2"
28
+ "@rudderjs/contracts": "^1.4.0",
29
+ "@rudderjs/core": "^1.1.3"
30
30
  },
31
31
  "optionalDependencies": {
32
32
  "ioredis": "^5.3.0"