@trokky/trokky 2.0.3 → 2.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/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts +5 -1
- package/dist/adapters/filesystem-data/filesystem-data-adapter.d.ts.map +1 -1
- package/dist/adapters/filesystem-data/filesystem-data-adapter.js +83 -0
- package/dist/adapters/filesystem-data/filesystem-data-adapter.js.map +1 -1
- package/dist/adapters/filesystem-data/types.d.ts +2 -0
- package/dist/adapters/filesystem-data/types.d.ts.map +1 -1
- package/dist/adapters/postgres-data/postgres-data-adapter.d.ts +3 -1
- package/dist/adapters/postgres-data/postgres-data-adapter.d.ts.map +1 -1
- package/dist/adapters/postgres-data/postgres-data-adapter.js +53 -7
- package/dist/adapters/postgres-data/postgres-data-adapter.js.map +1 -1
- package/dist/core/core/engine.d.ts.map +1 -1
- package/dist/core/core/engine.js +3 -2
- package/dist/core/core/engine.js.map +1 -1
- package/dist/core/events/event-bus.d.ts.map +1 -1
- package/dist/core/events/event-bus.js +10 -2
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/security/mfa/totp.d.ts.map +1 -1
- package/dist/core/security/mfa/totp.js +6 -2
- package/dist/core/security/mfa/totp.js.map +1 -1
- package/dist/core/services/mfa-service.d.ts +27 -0
- package/dist/core/services/mfa-service.d.ts.map +1 -1
- package/dist/core/services/mfa-service.js +31 -5
- package/dist/core/services/mfa-service.js.map +1 -1
- package/dist/core/types/index.d.ts +10 -1
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/types/storage-adapters.d.ts +57 -1
- package/dist/core/types/storage-adapters.d.ts.map +1 -1
- package/dist/core/utils/logger.d.ts +28 -0
- package/dist/core/utils/logger.d.ts.map +1 -1
- package/dist/core/utils/logger.js +201 -1
- package/dist/core/utils/logger.js.map +1 -1
- package/dist/routes/auth/auth-flow-store.d.ts +45 -0
- package/dist/routes/auth/auth-flow-store.d.ts.map +1 -0
- package/dist/routes/auth/auth-flow-store.js +95 -0
- package/dist/routes/auth/auth-flow-store.js.map +1 -0
- package/dist/routes/auth/oauth.d.ts.map +1 -1
- package/dist/routes/auth/oauth.js +34 -21
- package/dist/routes/auth/oauth.js.map +1 -1
- package/dist/routes/auth/oauth2-server.d.ts.map +1 -1
- package/dist/routes/auth/oauth2-server.js +1 -4
- package/dist/routes/auth/oauth2-server.js.map +1 -1
- package/dist/routes/auth/passkey.d.ts.map +1 -1
- package/dist/routes/auth/passkey.js +46 -19
- package/dist/routes/auth/passkey.js.map +1 -1
- package/dist/routes/auth/password-reset.js +1 -1
- package/dist/routes/auth/password-reset.js.map +1 -1
- package/dist/routes/handlers/config.d.ts.map +1 -1
- package/dist/routes/handlers/config.js +7 -18
- package/dist/routes/handlers/config.js.map +1 -1
- package/dist/routes/handlers/documents.d.ts.map +1 -1
- package/dist/routes/handlers/documents.js +14 -2
- package/dist/routes/handlers/documents.js.map +1 -1
- package/package.json +2 -2
|
@@ -51,6 +51,206 @@ const COLORS = {
|
|
|
51
51
|
gray: '\x1b[90m', // Gray
|
|
52
52
|
bold: '\x1b[1m' // Bold
|
|
53
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Replacement used for redacted values
|
|
56
|
+
*/
|
|
57
|
+
const REDACTED = '[REDACTED]';
|
|
58
|
+
/**
|
|
59
|
+
* Guards against pathological payloads. Logging must never be the thing that
|
|
60
|
+
* takes a request down, so deep or very large structures are truncated rather
|
|
61
|
+
* than followed, and an accessor that throws is reported rather than rethrown.
|
|
62
|
+
*/
|
|
63
|
+
const MAX_DEPTH = 10;
|
|
64
|
+
const MAX_NODES = 5000;
|
|
65
|
+
/**
|
|
66
|
+
* Key names whose values are never written to logs.
|
|
67
|
+
*
|
|
68
|
+
* Keys are normalised before comparison - lowercased, with `-`, `_` and spaces
|
|
69
|
+
* removed - so `setCookie`, `set_cookie` and the wire-format `set-cookie` all
|
|
70
|
+
* match one entry. Matching is still EXACT on that normalised form, never a
|
|
71
|
+
* substring match: substring matching would also redact innocuous fields such
|
|
72
|
+
* as `tokenCount`, `passwordPolicy` or `secretsManagerRegion`, which destroys
|
|
73
|
+
* debuggability and makes redaction unpredictable.
|
|
74
|
+
*
|
|
75
|
+
* A few entries are less obvious. An app token's `tokenHash` is the lookup key
|
|
76
|
+
* accepted by `getAppTokenByHash`, so it is credential-equivalent rather than a
|
|
77
|
+
* mere digest. `userCode`/`deviceCode` are the one-time approval values of the
|
|
78
|
+
* OAuth2 device flow.
|
|
79
|
+
*
|
|
80
|
+
* `auth` and `credential` are deliberately included even though they sometimes
|
|
81
|
+
* hold non-secret values - a route's auth mode, a WebAuthn response. Hiding a
|
|
82
|
+
* diagnostic field is recoverable; printing a credential is not.
|
|
83
|
+
*/
|
|
84
|
+
export const SENSITIVE_KEYS = [
|
|
85
|
+
'secret',
|
|
86
|
+
'secrets',
|
|
87
|
+
'token',
|
|
88
|
+
'tokenHash',
|
|
89
|
+
'accessToken',
|
|
90
|
+
'refreshToken',
|
|
91
|
+
'resetToken',
|
|
92
|
+
'idToken',
|
|
93
|
+
'sessionToken',
|
|
94
|
+
'apiKey',
|
|
95
|
+
'xApiKey',
|
|
96
|
+
'password',
|
|
97
|
+
'passwordHash',
|
|
98
|
+
'newPassword',
|
|
99
|
+
'currentPassword',
|
|
100
|
+
'temporaryPassword',
|
|
101
|
+
'passphrase',
|
|
102
|
+
'authorization',
|
|
103
|
+
'proxyAuthorization',
|
|
104
|
+
'wwwAuthenticate',
|
|
105
|
+
'auth',
|
|
106
|
+
'bearer',
|
|
107
|
+
'cookie',
|
|
108
|
+
'setCookie',
|
|
109
|
+
'connectionString',
|
|
110
|
+
'databaseUrl',
|
|
111
|
+
'privateKey',
|
|
112
|
+
'privateKeyPem',
|
|
113
|
+
'salt',
|
|
114
|
+
'credential',
|
|
115
|
+
'credentials',
|
|
116
|
+
'clientSecret',
|
|
117
|
+
'clientAssertion',
|
|
118
|
+
'userCode',
|
|
119
|
+
'deviceCode',
|
|
120
|
+
'mfaSecret',
|
|
121
|
+
'totpSecret',
|
|
122
|
+
'webhookSecret',
|
|
123
|
+
'jwtSecret',
|
|
124
|
+
'signature'
|
|
125
|
+
];
|
|
126
|
+
/**
|
|
127
|
+
* Collapse the spellings a key arrives in - camelCase, snake_case and the
|
|
128
|
+
* hyphenated wire format used by real HTTP headers - onto one form.
|
|
129
|
+
*/
|
|
130
|
+
function normalizeKey(key) {
|
|
131
|
+
return key.toLowerCase().replace(/[-_\s]/g, '');
|
|
132
|
+
}
|
|
133
|
+
const SENSITIVE_KEY_SET = new Set(SENSITIVE_KEYS.map(normalizeKey));
|
|
134
|
+
/**
|
|
135
|
+
* Read one own property without trusting it.
|
|
136
|
+
*
|
|
137
|
+
* `Object.entries` invokes every enumerable getter, which means a throwing
|
|
138
|
+
* accessor would take down the log call and a side-effecting one would run as
|
|
139
|
+
* a consequence of logging. Descriptors let us see what a property is before
|
|
140
|
+
* deciding whether to touch it - and a getter under a sensitive key is never
|
|
141
|
+
* invoked at all.
|
|
142
|
+
*/
|
|
143
|
+
function readOwnProperty(source, key) {
|
|
144
|
+
const descriptor = Object.getOwnPropertyDescriptor(source, key);
|
|
145
|
+
if (!descriptor)
|
|
146
|
+
return { ok: false };
|
|
147
|
+
if ('value' in descriptor)
|
|
148
|
+
return { ok: true, value: descriptor.value };
|
|
149
|
+
if (typeof descriptor.get !== 'function')
|
|
150
|
+
return { ok: false };
|
|
151
|
+
try {
|
|
152
|
+
return { ok: true, value: descriptor.get.call(source) };
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return { ok: false };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Errors are rebuilt rather than passed through.
|
|
160
|
+
*
|
|
161
|
+
* Returning the Error itself leaked twice over: any attached context survived
|
|
162
|
+
* redaction (`err.config.headers.authorization` is the common shape), and
|
|
163
|
+
* `message`/`stack` are non-enumerable so a JSON serializer rendered the whole
|
|
164
|
+
* thing as `{}`. Rebuilding fixes both - the diagnostic fields are carried
|
|
165
|
+
* explicitly and everything hung off the error is redacted like any payload.
|
|
166
|
+
*/
|
|
167
|
+
function sanitizeError(error, budget, depth) {
|
|
168
|
+
const result = Object.create(null);
|
|
169
|
+
result.name = error.name;
|
|
170
|
+
result.message = error.message;
|
|
171
|
+
if (error.stack)
|
|
172
|
+
result.stack = error.stack;
|
|
173
|
+
for (const key of Object.keys(error)) {
|
|
174
|
+
if (key === 'name' || key === 'message' || key === 'stack')
|
|
175
|
+
continue;
|
|
176
|
+
if (SENSITIVE_KEY_SET.has(normalizeKey(key))) {
|
|
177
|
+
result[key] = REDACTED;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const read = readOwnProperty(error, key);
|
|
181
|
+
result[key] = read.ok ? redactValue(read.value, budget, depth + 1) : '[Unreadable]';
|
|
182
|
+
}
|
|
183
|
+
const cause = error.cause;
|
|
184
|
+
if (cause !== undefined) {
|
|
185
|
+
result.cause = redactValue(cause, budget, depth + 1);
|
|
186
|
+
}
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* `ancestors` tracks only the objects currently being recursed into, so a true
|
|
191
|
+
* cycle is detected while the same object referenced twice in different
|
|
192
|
+
* branches (an acyclic DAG) is still rendered in full.
|
|
193
|
+
*/
|
|
194
|
+
function redactValue(value, budget, depth) {
|
|
195
|
+
// A copied function is not inert: an own `toJSON` would be invoked by the
|
|
196
|
+
// serializer and could hand back the very object we just redacted.
|
|
197
|
+
if (typeof value === 'function')
|
|
198
|
+
return '[Function]';
|
|
199
|
+
if (value === null || typeof value !== 'object')
|
|
200
|
+
return value;
|
|
201
|
+
// Date's toJSON lives on the prototype, is not copied, and yields an ISO
|
|
202
|
+
// string, so dates are safe to pass through untouched.
|
|
203
|
+
if (value instanceof Date)
|
|
204
|
+
return value;
|
|
205
|
+
if (depth > MAX_DEPTH)
|
|
206
|
+
return '[Max depth exceeded]';
|
|
207
|
+
if (budget.nodes >= MAX_NODES)
|
|
208
|
+
return '[Truncated]';
|
|
209
|
+
budget.nodes++;
|
|
210
|
+
if (budget.ancestors.has(value))
|
|
211
|
+
return '[Circular]';
|
|
212
|
+
budget.ancestors.add(value);
|
|
213
|
+
try {
|
|
214
|
+
if (value instanceof Error) {
|
|
215
|
+
return sanitizeError(value, budget, depth);
|
|
216
|
+
}
|
|
217
|
+
// Not traversed: their contents are invisible to JSON anyway, and walking
|
|
218
|
+
// them would add leak surface for no diagnostic gain. Say so plainly
|
|
219
|
+
// instead of rendering a misleading empty object.
|
|
220
|
+
if (value instanceof Map)
|
|
221
|
+
return '[Map]';
|
|
222
|
+
if (value instanceof Set)
|
|
223
|
+
return '[Set]';
|
|
224
|
+
if (Array.isArray(value)) {
|
|
225
|
+
return value.map(item => redactValue(item, budget, depth + 1));
|
|
226
|
+
}
|
|
227
|
+
// Null prototype: an own `__proto__` key copied onto a normal object would
|
|
228
|
+
// otherwise reassign the clone's prototype.
|
|
229
|
+
const result = Object.create(null);
|
|
230
|
+
for (const key of Object.keys(value)) {
|
|
231
|
+
if (SENSITIVE_KEY_SET.has(normalizeKey(key))) {
|
|
232
|
+
result[key] = REDACTED;
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
const read = readOwnProperty(value, key);
|
|
236
|
+
result[key] = read.ok ? redactValue(read.value, budget, depth + 1) : '[Unreadable]';
|
|
237
|
+
}
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
finally {
|
|
241
|
+
budget.ancestors.delete(value);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Recursively replace values held under sensitive keys with '[REDACTED]'.
|
|
246
|
+
*
|
|
247
|
+
* Returns a new structure, leaving the input unmutated. The result is inert:
|
|
248
|
+
* no functions are carried over, so nothing in it can execute during
|
|
249
|
+
* serialization and reintroduce what was removed.
|
|
250
|
+
*/
|
|
251
|
+
export function redactSensitive(value) {
|
|
252
|
+
return redactValue(value, { ancestors: new WeakSet(), nodes: 0 }, 0);
|
|
253
|
+
}
|
|
54
254
|
/**
|
|
55
255
|
* Platform-agnostic logger
|
|
56
256
|
*/
|
|
@@ -72,7 +272,7 @@ export class TrokkyLogger {
|
|
|
72
272
|
context: this.context
|
|
73
273
|
};
|
|
74
274
|
if (data !== undefined) {
|
|
75
|
-
entry.data = data;
|
|
275
|
+
entry.data = redactSensitive(data);
|
|
76
276
|
}
|
|
77
277
|
if (error) {
|
|
78
278
|
entry.error = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage for a sign-in that spans two requests.
|
|
3
|
+
*
|
|
4
|
+
* OAuth login state with its PKCE verifier, and the WebAuthn challenge behind a
|
|
5
|
+
* passkey, are both written when a flow begins and read once when it completes.
|
|
6
|
+
* Held in the server process, a restart between the two halves fails the
|
|
7
|
+
* sign-in and a second replica cannot serve the second half at all.
|
|
8
|
+
*
|
|
9
|
+
* Persists through the data storage adapter when it implements the optional
|
|
10
|
+
* auth flow methods, and falls back to an in-process map when it does not, so
|
|
11
|
+
* an adapter written against the older interface keeps working.
|
|
12
|
+
*/
|
|
13
|
+
import type { DataStorageAdapter, AuthFlowState } from '../../core/types/storage-adapters.js';
|
|
14
|
+
/**
|
|
15
|
+
* Store a pending flow.
|
|
16
|
+
*
|
|
17
|
+
* A failure to persist is raised, not swallowed. Keeping the entry in memory
|
|
18
|
+
* would report a durability the caller does not have and silently reintroduce
|
|
19
|
+
* the bug this store exists to fix: the sign-in would appear to start and then
|
|
20
|
+
* fail at the callback if it landed on another process. Failing here costs one
|
|
21
|
+
* retry and is honest about what happened.
|
|
22
|
+
*/
|
|
23
|
+
export declare function saveAuthFlowState(adapter: DataStorageAdapter | null | undefined, state: AuthFlowState): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Take a pending flow: return it and consume it, or return null.
|
|
26
|
+
*
|
|
27
|
+
* Single use is the security property here - an OAuth state is CSRF protection
|
|
28
|
+
* and a WebAuthn challenge must not be answerable twice - so the adapter is
|
|
29
|
+
* asked to return and delete in one atomic operation rather than being read and
|
|
30
|
+
* then deleted, which would let two concurrent callbacks both succeed.
|
|
31
|
+
*
|
|
32
|
+
* A storage failure propagates: a caller that cannot prove it consumed the
|
|
33
|
+
* state must not continue as though it had.
|
|
34
|
+
*/
|
|
35
|
+
export declare function consumeAuthFlowState(adapter: DataStorageAdapter | null | undefined, id: string, kind: AuthFlowState['kind']): Promise<AuthFlowState | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Drop everything that has expired.
|
|
38
|
+
*
|
|
39
|
+
* Sweeping is best-effort: expired entries are rejected on read regardless, so
|
|
40
|
+
* a failed sweep costs storage rather than correctness.
|
|
41
|
+
*/
|
|
42
|
+
export declare function deleteExpiredAuthFlowStates(adapter: DataStorageAdapter | null | undefined): Promise<void>;
|
|
43
|
+
/** Test seam: drops the in-process entries without touching the adapter. */
|
|
44
|
+
export declare function clearFallbackAuthFlowStates(): void;
|
|
45
|
+
//# sourceMappingURL=auth-flow-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-flow-store.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/auth-flow-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AA4B7F;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC9C,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC9C,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAC1B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAa/B;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,GAC7C,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage for a sign-in that spans two requests.
|
|
3
|
+
*
|
|
4
|
+
* OAuth login state with its PKCE verifier, and the WebAuthn challenge behind a
|
|
5
|
+
* passkey, are both written when a flow begins and read once when it completes.
|
|
6
|
+
* Held in the server process, a restart between the two halves fails the
|
|
7
|
+
* sign-in and a second replica cannot serve the second half at all.
|
|
8
|
+
*
|
|
9
|
+
* Persists through the data storage adapter when it implements the optional
|
|
10
|
+
* auth flow methods, and falls back to an in-process map when it does not, so
|
|
11
|
+
* an adapter written against the older interface keeps working.
|
|
12
|
+
*/
|
|
13
|
+
import { createLogger } from '../../core/utils/logger.js';
|
|
14
|
+
const logger = createLogger('routes', 'AuthFlowStore');
|
|
15
|
+
/** Entries live here only when the adapter cannot store them. */
|
|
16
|
+
const fallbackStore = new Map();
|
|
17
|
+
function adapterSupportsPersistence(adapter) {
|
|
18
|
+
return Boolean(adapter?.saveAuthFlowState && adapter.consumeAuthFlowState);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* An unparseable expiry is treated as expired rather than as "never expires":
|
|
22
|
+
* `NaN < Date.now()` is false, so a naive comparison would accept a corrupt
|
|
23
|
+
* record forever. The boundary is exclusive - a state is dead at its expiry
|
|
24
|
+
* instant, not one millisecond after.
|
|
25
|
+
*/
|
|
26
|
+
function isUsable(state) {
|
|
27
|
+
const expiresAt = new Date(state.expiresAt).getTime();
|
|
28
|
+
return Number.isFinite(expiresAt) && expiresAt > Date.now();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Store a pending flow.
|
|
32
|
+
*
|
|
33
|
+
* A failure to persist is raised, not swallowed. Keeping the entry in memory
|
|
34
|
+
* would report a durability the caller does not have and silently reintroduce
|
|
35
|
+
* the bug this store exists to fix: the sign-in would appear to start and then
|
|
36
|
+
* fail at the callback if it landed on another process. Failing here costs one
|
|
37
|
+
* retry and is honest about what happened.
|
|
38
|
+
*/
|
|
39
|
+
export async function saveAuthFlowState(adapter, state) {
|
|
40
|
+
if (adapterSupportsPersistence(adapter)) {
|
|
41
|
+
await adapter.saveAuthFlowState(state);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
fallbackStore.set(state.id, state);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Take a pending flow: return it and consume it, or return null.
|
|
48
|
+
*
|
|
49
|
+
* Single use is the security property here - an OAuth state is CSRF protection
|
|
50
|
+
* and a WebAuthn challenge must not be answerable twice - so the adapter is
|
|
51
|
+
* asked to return and delete in one atomic operation rather than being read and
|
|
52
|
+
* then deleted, which would let two concurrent callbacks both succeed.
|
|
53
|
+
*
|
|
54
|
+
* A storage failure propagates: a caller that cannot prove it consumed the
|
|
55
|
+
* state must not continue as though it had.
|
|
56
|
+
*/
|
|
57
|
+
export async function consumeAuthFlowState(adapter, id, kind) {
|
|
58
|
+
if (adapterSupportsPersistence(adapter)) {
|
|
59
|
+
const consumed = await adapter.consumeAuthFlowState(id, kind);
|
|
60
|
+
return consumed && isUsable(consumed) ? consumed : null;
|
|
61
|
+
}
|
|
62
|
+
// The fallback map is only reachable on a single process, and there is no
|
|
63
|
+
// await between the read and the delete, so this is atomic by the same
|
|
64
|
+
// argument that made the original in-process map safe.
|
|
65
|
+
const fallback = fallbackStore.get(id);
|
|
66
|
+
fallbackStore.delete(id);
|
|
67
|
+
if (!fallback || fallback.kind !== kind || !isUsable(fallback))
|
|
68
|
+
return null;
|
|
69
|
+
return fallback;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Drop everything that has expired.
|
|
73
|
+
*
|
|
74
|
+
* Sweeping is best-effort: expired entries are rejected on read regardless, so
|
|
75
|
+
* a failed sweep costs storage rather than correctness.
|
|
76
|
+
*/
|
|
77
|
+
export async function deleteExpiredAuthFlowStates(adapter) {
|
|
78
|
+
for (const [id, state] of fallbackStore.entries()) {
|
|
79
|
+
if (!isUsable(state))
|
|
80
|
+
fallbackStore.delete(id);
|
|
81
|
+
}
|
|
82
|
+
if (adapter?.deleteExpiredAuthFlowStates) {
|
|
83
|
+
try {
|
|
84
|
+
await adapter.deleteExpiredAuthFlowStates();
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
logger.error('Failed to sweep expired auth flow states', { error });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** Test seam: drops the in-process entries without touching the adapter. */
|
|
92
|
+
export function clearFallbackAuthFlowStates() {
|
|
93
|
+
fallbackStore.clear();
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=auth-flow-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-flow-store.js","sourceRoot":"","sources":["../../../src/routes/auth/auth-flow-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;AAEtD,iEAAiE;AACjE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAA;AAKtD,SAAS,0BAA0B,CACjC,OAA8C;IAE9C,OAAO,OAAO,CAAC,OAAO,EAAE,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,KAAoB;IACpC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;IACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAC7D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA8C,EAC9C,KAAoB;IAEpB,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,OAAM;IACR,CAAC;IACD,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA8C,EAC9C,EAAU,EACV,IAA2B;IAE3B,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC7D,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IACzD,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACtC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3E,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAA8C;IAE9C,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,2BAA2B,EAAE,CAAA;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,2BAA2B;IACzC,aAAa,CAAC,KAAK,EAAE,CAAA;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/oauth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EACL,UAAU,EAKX,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/oauth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EACL,UAAU,EAKX,MAAM,qBAAqB,CAAA;AAiF5B;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAsFvB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CA+NvB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CA4DvB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC,CAavB"}
|
|
@@ -4,19 +4,27 @@
|
|
|
4
4
|
* API routes for OAuth authentication (Google login and account linking).
|
|
5
5
|
*/
|
|
6
6
|
import { InvalidInputError, createLogger, GoogleOAuthService, } from '../../core/index.js';
|
|
7
|
+
import { saveAuthFlowState, consumeAuthFlowState, deleteExpiredAuthFlowStates, } from './auth-flow-store.js';
|
|
7
8
|
const logger = createLogger('routes', 'OAuth');
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
const oauthStateStore = new Map();
|
|
11
|
-
// Clean up expired states periodically
|
|
9
|
+
const OAUTH_STATE_TTL_MS = 10 * 60 * 1000;
|
|
10
|
+
// Sweep expired states. Reads reject them regardless, so this only reclaims space.
|
|
12
11
|
setInterval(() => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
void deleteExpiredAuthFlowStates(lastKnownAdapter);
|
|
13
|
+
}, 60000);
|
|
14
|
+
/**
|
|
15
|
+
* The sweeper runs on a timer with no request in hand, so it has no core to ask
|
|
16
|
+
* for the adapter. Requests record the one they used.
|
|
17
|
+
*/
|
|
18
|
+
let lastKnownAdapter = null;
|
|
19
|
+
function dataAdapter(core) {
|
|
20
|
+
try {
|
|
21
|
+
lastKnownAdapter = core.getDataStorageAdapter();
|
|
22
|
+
return lastKnownAdapter;
|
|
18
23
|
}
|
|
19
|
-
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
20
28
|
// =============================================================================
|
|
21
29
|
// HELPER FUNCTIONS
|
|
22
30
|
// =============================================================================
|
|
@@ -79,11 +87,15 @@ export async function initGoogleOAuth(core, request) {
|
|
|
79
87
|
const pkce = googleService.generatePKCE();
|
|
80
88
|
const state = googleService.generateState();
|
|
81
89
|
// Store state with PKCE verifier (expires in 10 minutes)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
await saveAuthFlowState(dataAdapter(core), {
|
|
91
|
+
id: state,
|
|
92
|
+
kind: 'oauth',
|
|
93
|
+
data: {
|
|
94
|
+
codeVerifier: pkce.codeVerifier,
|
|
95
|
+
mode,
|
|
96
|
+
userId: request.user?.id,
|
|
97
|
+
},
|
|
98
|
+
expiresAt: new Date(Date.now() + OAUTH_STATE_TTL_MS).toISOString(),
|
|
87
99
|
});
|
|
88
100
|
// Generate authorization URL (mode affects consent screen behavior)
|
|
89
101
|
const authUrl = googleService.getAuthorizationUrl(state, pkce.codeChallenge, mode);
|
|
@@ -155,10 +167,12 @@ export async function handleGoogleOAuthCallback(core, request) {
|
|
|
155
167
|
},
|
|
156
168
|
};
|
|
157
169
|
}
|
|
158
|
-
// Validate state (CSRF protection)
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
170
|
+
// Validate state (CSRF protection). Consuming is atomic and scoped to this
|
|
171
|
+
// flow: a replayed callback finds nothing, and one carrying another flow's
|
|
172
|
+
// id neither receives nor destroys that flow's state. An unknown, expired
|
|
173
|
+
// and wrong-kind state are all the same answer here.
|
|
174
|
+
const storedFlow = await consumeAuthFlowState(dataAdapter(core), state, 'oauth');
|
|
175
|
+
if (!storedFlow) {
|
|
162
176
|
return {
|
|
163
177
|
status: 400,
|
|
164
178
|
headers: {},
|
|
@@ -171,8 +185,7 @@ export async function handleGoogleOAuthCallback(core, request) {
|
|
|
171
185
|
},
|
|
172
186
|
};
|
|
173
187
|
}
|
|
174
|
-
|
|
175
|
-
oauthStateStore.delete(state);
|
|
188
|
+
const storedState = storedFlow.data;
|
|
176
189
|
// Exchange code for tokens
|
|
177
190
|
const tokens = await googleService.exchangeCodeForTokens(code, codeVerifier);
|
|
178
191
|
// Get user info from Google
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/routes/auth/oauth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAEL,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GAEnB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/routes/auth/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2-server.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/oauth2-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAA;AAqC9D;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"oauth2-server.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/oauth2-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAA;AAqC9D;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CA8DvB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CA0GvB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAyHvB;AAMD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAqOvB;AAMD;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CA4HvB;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAkHvB;AAMD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC,CAkBvB"}
|
|
@@ -58,10 +58,7 @@ export async function startDeviceAuthorization(core, request) {
|
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
|
-
logger.info('Started device authorization', {
|
|
62
|
-
clientId,
|
|
63
|
-
userCode: result.response.user_code
|
|
64
|
-
});
|
|
61
|
+
logger.info('Started device authorization', { clientId });
|
|
65
62
|
return {
|
|
66
63
|
status: 200,
|
|
67
64
|
headers: { 'Content-Type': 'application/json' },
|