@antasphere/chassis-server 1.2.0 → 1.4.0
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/app.d.ts.map +1 -1
- package/dist/app.js +11 -5
- package/dist/app.js.map +1 -1
- package/dist/boot.d.ts.map +1 -1
- package/dist/boot.js +5 -0
- package/dist/boot.js.map +1 -1
- package/dist/identity/hub-grant.d.ts +70 -0
- package/dist/identity/hub-grant.d.ts.map +1 -1
- package/dist/identity/hub-grant.js +119 -14
- package/dist/identity/hub-grant.js.map +1 -1
- package/dist/identity/index.d.ts +1 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +1 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/middleware/index.d.ts +1 -0
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +1 -0
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/static-assets.d.ts +63 -0
- package/dist/middleware/static-assets.d.ts.map +1 -0
- package/dist/middleware/static-assets.js +125 -0
- package/dist/middleware/static-assets.js.map +1 -0
- package/package.json +3 -3
- package/src/app.ts +17 -4
- package/src/boot.ts +5 -0
- package/src/identity/hub-grant.ts +187 -15
- package/src/identity/index.ts +6 -1
- package/src/middleware/index.ts +11 -0
- package/src/middleware/static-assets.ts +144 -0
- package/test/integration/hub-grant.test.ts +97 -0
- package/test/unit/hub-grant-refusal.test.ts +29 -0
- package/test/unit/hub-grant-sweep.test.ts +151 -0
- package/test/unit/static-assets.test.ts +227 -0
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAYpD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,GAAG,EAAE,WAAW,CAAC;IACjB,sDAAsD;IACtD,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,iEAAiE;IACjE,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAChC,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC/C,qGAAqG;IACrG,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,sHAAsH;IACtH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIpE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,EAC9B,MAAM,EACN,KAAK,EACL,SAAS,EACT,WAAW,EACX,GAAG,EACH,GAAG,EACH,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,WAAW,EACX,SAAS,EACV,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4IzB"}
|
package/dist/app.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { HTTPException } from 'hono/http-exception';
|
|
3
|
-
import { serveStatic } from '@hono/node-server/serve-static';
|
|
4
3
|
import { readFile } from 'node:fs/promises';
|
|
5
4
|
import { join } from 'node:path';
|
|
6
5
|
import { requestId } from './middleware/index.js';
|
|
7
|
-
import { buildCsp, inlineScriptHashes, securityHeaders } from './middleware/index.js';
|
|
6
|
+
import { REVALIDATE_CACHE_CONTROL, buildCsp, inlineScriptHashes, loadSpaFallback, securityHeaders, staticAssets } from './middleware/index.js';
|
|
8
7
|
import { healthRoutes } from './routes/index.js';
|
|
9
8
|
/**
|
|
10
9
|
* The SQLSTATE of a thrown Postgres error, when it is one. node-postgres puts
|
|
@@ -130,10 +129,17 @@ export async function createApp({ logger, state, publicDir, displayName, api, mc
|
|
|
130
129
|
// static assets and the SPA fallback, after every credentialed surface.
|
|
131
130
|
if (publicRoutes)
|
|
132
131
|
app.route('/', publicRoutes);
|
|
133
|
-
|
|
132
|
+
// The dashboard build: hashed assets cached for a year, everything else
|
|
133
|
+
// revalidated, precompressed siblings served when accepted (PRDCT-3584).
|
|
134
|
+
app.use('*', staticAssets({ publicDir }));
|
|
135
|
+
// The SPA fallback is the application's HTML under any route: kept by the
|
|
136
|
+
// browser but revalidated on every use (a strong ETag, a 304 when it still
|
|
137
|
+
// holds), precompressed when the build wrote the sibling.
|
|
138
|
+
const fallback = indexHtml ? await loadSpaFallback(publicDir, indexHtml) : null;
|
|
134
139
|
app.get('*', (c) => {
|
|
135
|
-
if (
|
|
136
|
-
return
|
|
140
|
+
if (fallback)
|
|
141
|
+
return fallback.respond(c);
|
|
142
|
+
c.header('Cache-Control', REVALIDATE_CACHE_CONTROL);
|
|
137
143
|
return c.html(`<!doctype html><title>${displayName}</title><h1>${displayName} API is running</h1>` +
|
|
138
144
|
'<p>No dashboard build found. API health: <a href="/healthz">/healthz</a></p>');
|
|
139
145
|
});
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/boot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0D7B,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,UAAU,EAGf,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,wBAAsB,YAAY,CAChC,SAAS,SAAS,CAAC,CAAC,WAAW,EAC/B,OAAO,EACP,QAAQ,SAAS,MAAM,EACvB,OAAO,EACP,cAAc,EAEd,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,EAC3E,MAAM,GAAE,MAAM,CAAC,UAAwB,EACvC,SAAS,GAAE,aAAa,CAAC,cAAc,CAAM,GAC5C,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0D7B,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,UAAU,EAGf,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,wBAAsB,YAAY,CAChC,SAAS,SAAS,CAAC,CAAC,WAAW,EAC/B,OAAO,EACP,QAAQ,SAAS,MAAM,EACvB,OAAO,EACP,cAAc,EAEd,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,EAC3E,MAAM,GAAE,MAAM,CAAC,UAAwB,EACvC,SAAS,GAAE,aAAa,CAAC,cAAc,CAAM,GAC5C,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAs5BlD"}
|
package/dist/boot.js
CHANGED
|
@@ -498,6 +498,11 @@ export async function bootPlatform(tool, source = process.env, overrides = {}) {
|
|
|
498
498
|
}
|
|
499
499
|
})
|
|
500
500
|
: undefined;
|
|
501
|
+
// The grants of the people this replica saw in the last hour are renewed
|
|
502
|
+
// in the background before they expire (PRDCT-3584), so a request never
|
|
503
|
+
// waits on the hub's token endpoint when the sweep got there first. The
|
|
504
|
+
// timer never holds the process open and pauses while draining.
|
|
505
|
+
hubGrant?.startSweep({ isDraining: () => state.draining });
|
|
501
506
|
// RP-initiated logout against the hub (SL-2, cloud only): builds the
|
|
502
507
|
// end-session URL /sso/logout returns. Same key seam as the grant store
|
|
503
508
|
// (it only decrypts if a future Better Auth starts encrypting id_tokens);
|
package/dist/boot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,36 @@ export interface HubGrantDials {
|
|
|
15
15
|
lockWatchdogMs: number;
|
|
16
16
|
}
|
|
17
17
|
export declare const DEFAULT_GRANT_DIALS: HubGrantDials;
|
|
18
|
+
/**
|
|
19
|
+
* The background renewal of grants about to expire (PRDCT-3584). Hub access
|
|
20
|
+
* tokens live 15 minutes, so a person who comes back to a tool after a
|
|
21
|
+
* coffee met the token endpoint INSIDE their first request: the refresh
|
|
22
|
+
* (the hub's rotation and the row write) stood between the click and the
|
|
23
|
+
* page. The sweep renews, off any request, the token of every person seen
|
|
24
|
+
* on this replica within `activeWithinMs` whose cached token expires within
|
|
25
|
+
* `renewAheadMs`; a person not seen for an hour is forgotten and renews on
|
|
26
|
+
* demand as before. It goes through `renew()`, the same acquisition as a
|
|
27
|
+
* request's (the single-flight, the advisory lock, the re-read and the
|
|
28
|
+
* presentation ledger stay the only writers of the refresh chain), with two
|
|
29
|
+
* differences the verifier of 18 October 2026 asked for: the cached token is
|
|
30
|
+
* served until the rotation's result is known, and a sibling replica's
|
|
31
|
+
* fresh token is adopted instead of rotated again. The timer never holds
|
|
32
|
+
* the process open and skips while the replica drains.
|
|
33
|
+
*/
|
|
34
|
+
export interface GrantSweepDials {
|
|
35
|
+
/** How often the sweep runs. */
|
|
36
|
+
intervalMs: number;
|
|
37
|
+
/** Renew a cached token this long before it expires. */
|
|
38
|
+
renewAheadMs: number;
|
|
39
|
+
/** Only people seen on this replica within this window are renewed. */
|
|
40
|
+
activeWithinMs: number;
|
|
41
|
+
}
|
|
42
|
+
export declare const DEFAULT_GRANT_SWEEP_DIALS: GrantSweepDials;
|
|
43
|
+
/** What `startSweep` hands back: the timer (never holding the process open) and its stop. */
|
|
44
|
+
export interface GrantSweepHandle {
|
|
45
|
+
timer: NodeJS.Timeout;
|
|
46
|
+
stop(): void;
|
|
47
|
+
}
|
|
18
48
|
/**
|
|
19
49
|
* One answer about a user's hub access.
|
|
20
50
|
* - 'ok': a hub-callable access token.
|
|
@@ -72,11 +102,26 @@ export interface HubGrantServiceOptions {
|
|
|
72
102
|
* tolerant rule. Re-verify on any Better Auth bump.
|
|
73
103
|
*/
|
|
74
104
|
export declare function isLikelyEncrypted(token: string): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* What the hub said when it refused: the RFC 6749 `error_description` and
|
|
107
|
+
* the HTTP status, kept for the log line and nothing else (PRDCT-3584). A
|
|
108
|
+
* refusal read as `invalid_grant` has four different causes at the pinned
|
|
109
|
+
* plugin (an unknown token, an expired one, a rotated-out one, a refresh
|
|
110
|
+
* the pre-flight refused), and only this sentence tells them apart.
|
|
111
|
+
*/
|
|
112
|
+
export interface RefusalReason {
|
|
113
|
+
status: number;
|
|
114
|
+
description: string | null;
|
|
115
|
+
}
|
|
116
|
+
/** The `error_description` of an RFC 6749 error payload, when it is a non-empty string. */
|
|
117
|
+
export declare function refusalDescription(payload: unknown): string | null;
|
|
75
118
|
export declare class HubGrantService {
|
|
76
119
|
private readonly opts;
|
|
77
120
|
/** userId → fresh access token (in-memory only; the row is the durable store). */
|
|
78
121
|
private readonly cache;
|
|
79
122
|
private readonly inFlight;
|
|
123
|
+
/** userId → when this replica last read a token for them (the sweep's population). */
|
|
124
|
+
private readonly lastSeen;
|
|
80
125
|
private readonly tokenUrl;
|
|
81
126
|
private readonly introspectUrl;
|
|
82
127
|
private readonly fetchImpl;
|
|
@@ -132,6 +177,31 @@ export declare class HubGrantService {
|
|
|
132
177
|
* re-read-after-lock still guarantee at most one live rotation.
|
|
133
178
|
*/
|
|
134
179
|
refresh(userId: string): Promise<GrantAccess>;
|
|
180
|
+
private markSeen;
|
|
181
|
+
/**
|
|
182
|
+
* One pass of the background renewal (GrantSweepDials): renew the cached
|
|
183
|
+
* token of every recently seen person whose token expires within the
|
|
184
|
+
* window, one at a time, through `renew()`. Answers how many renewals
|
|
185
|
+
* were attempted. Never throws: a failed renewal is the next request's
|
|
186
|
+
* on-demand refresh, exactly as before the sweep existed.
|
|
187
|
+
*/
|
|
188
|
+
sweepExpiring(dials?: Omit<GrantSweepDials, 'intervalMs'>): Promise<number>;
|
|
189
|
+
/**
|
|
190
|
+
* Run the sweep on a timer that never holds the process open and skips
|
|
191
|
+
* while the replica drains. Returns the function that stops it.
|
|
192
|
+
*/
|
|
193
|
+
startSweep(options?: {
|
|
194
|
+
isDraining?: () => boolean;
|
|
195
|
+
dials?: Partial<GrantSweepDials>;
|
|
196
|
+
}): GrantSweepHandle;
|
|
197
|
+
/**
|
|
198
|
+
* Renew the grant in the background (the sweep's path, PRDCT-3584): the
|
|
199
|
+
* cached token keeps being served until the rotation's result is known
|
|
200
|
+
* (nothing is evicted up front, unlike `refresh()`), and a token a sibling
|
|
201
|
+
* replica stored with at least `minLeftMs` of life left is adopted instead
|
|
202
|
+
* of rotating a second time. Joins an acquisition already in flight.
|
|
203
|
+
*/
|
|
204
|
+
renew(userId: string, minLeftMs?: number): Promise<GrantAccess>;
|
|
135
205
|
private acquire;
|
|
136
206
|
private doAcquire;
|
|
137
207
|
/** The user's hub account link, tokens as stored (possibly encrypted). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-grant.d.ts","sourceRoot":"","sources":["../../src/identity/hub-grant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAkC,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA6E3C,qGAAqG;AACrG,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,EAAE,aAOjC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AAE7B,2EAA2E;AAC3E,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,EAAE,CAAC;IACP,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,GAAG,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtC,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAeD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGxD;
|
|
1
|
+
{"version":3,"file":"hub-grant.d.ts","sourceRoot":"","sources":["../../src/identity/hub-grant.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,13 @@ export const DEFAULT_GRANT_DIALS = {
|
|
|
87
87
|
// constructor clamps anything smaller (see there).
|
|
88
88
|
lockWatchdogMs: 12_000
|
|
89
89
|
};
|
|
90
|
+
export const DEFAULT_GRANT_SWEEP_DIALS = {
|
|
91
|
+
intervalMs: 60_000,
|
|
92
|
+
renewAheadMs: 3 * 60_000,
|
|
93
|
+
activeWithinMs: 60 * 60_000
|
|
94
|
+
};
|
|
95
|
+
/** Bound the seen-map — a user-id flood must never balloon memory. */
|
|
96
|
+
const MAX_SEEN_USERS = 10_000;
|
|
90
97
|
/**
|
|
91
98
|
* Mirror of Better Auth 1.6.15's `isLikelyEncrypted` (dist/oauth2/utils.mjs):
|
|
92
99
|
* its decrypt path passes LEGACY PLAINTEXT tokens through untouched, and so
|
|
@@ -99,11 +106,18 @@ export function isLikelyEncrypted(token) {
|
|
|
99
106
|
return true;
|
|
100
107
|
return token.length % 2 === 0 && /^[0-9a-f]+$/i.test(token);
|
|
101
108
|
}
|
|
109
|
+
/** The `error_description` of an RFC 6749 error payload, when it is a non-empty string. */
|
|
110
|
+
export function refusalDescription(payload) {
|
|
111
|
+
const d = payload?.error_description;
|
|
112
|
+
return typeof d === 'string' && d.trim() ? d.trim().slice(0, 300) : null;
|
|
113
|
+
}
|
|
102
114
|
export class HubGrantService {
|
|
103
115
|
opts;
|
|
104
116
|
/** userId → fresh access token (in-memory only; the row is the durable store). */
|
|
105
117
|
cache = new Map();
|
|
106
118
|
inFlight = new Map();
|
|
119
|
+
/** userId → when this replica last read a token for them (the sweep's population). */
|
|
120
|
+
lastSeen = new Map();
|
|
107
121
|
tokenUrl;
|
|
108
122
|
introspectUrl;
|
|
109
123
|
fetchImpl;
|
|
@@ -209,11 +223,12 @@ export class HubGrantService {
|
|
|
209
223
|
}
|
|
210
224
|
/** A hub-callable access token for the user, refresh-on-demand. */
|
|
211
225
|
async accessToken(userId) {
|
|
226
|
+
this.markSeen(userId);
|
|
212
227
|
const cached = this.cache.get(userId);
|
|
213
228
|
if (cached && cached.expiresAtMs - this.now() > this.dials.accessSkewMs) {
|
|
214
229
|
return { kind: 'ok', accessToken: cached.token };
|
|
215
230
|
}
|
|
216
|
-
return this.acquire(userId,
|
|
231
|
+
return this.acquire(userId, 'demand');
|
|
217
232
|
}
|
|
218
233
|
/**
|
|
219
234
|
* Force a refresh (the caller saw the hub refuse the current token).
|
|
@@ -225,12 +240,85 @@ export class HubGrantService {
|
|
|
225
240
|
const existing = this.inFlight.get(userId);
|
|
226
241
|
if (existing)
|
|
227
242
|
await existing.catch(() => { });
|
|
228
|
-
return this.acquire(userId,
|
|
243
|
+
return this.acquire(userId, 'force');
|
|
244
|
+
}
|
|
245
|
+
markSeen(userId) {
|
|
246
|
+
if (!this.lastSeen.has(userId) && this.lastSeen.size >= MAX_SEEN_USERS) {
|
|
247
|
+
// Drop the oldest entry (Map keeps insertion order); a re-seen user is
|
|
248
|
+
// re-inserted at the end below.
|
|
249
|
+
const oldest = this.lastSeen.keys().next().value;
|
|
250
|
+
if (oldest !== undefined)
|
|
251
|
+
this.lastSeen.delete(oldest);
|
|
252
|
+
}
|
|
253
|
+
this.lastSeen.delete(userId);
|
|
254
|
+
this.lastSeen.set(userId, this.now());
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* One pass of the background renewal (GrantSweepDials): renew the cached
|
|
258
|
+
* token of every recently seen person whose token expires within the
|
|
259
|
+
* window, one at a time, through `renew()`. Answers how many renewals
|
|
260
|
+
* were attempted. Never throws: a failed renewal is the next request's
|
|
261
|
+
* on-demand refresh, exactly as before the sweep existed.
|
|
262
|
+
*/
|
|
263
|
+
async sweepExpiring(dials = DEFAULT_GRANT_SWEEP_DIALS) {
|
|
264
|
+
const now = this.now();
|
|
265
|
+
let attempted = 0;
|
|
266
|
+
for (const [userId, seenAt] of [...this.lastSeen]) {
|
|
267
|
+
if (now - seenAt > dials.activeWithinMs) {
|
|
268
|
+
this.lastSeen.delete(userId);
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
const cached = this.cache.get(userId);
|
|
272
|
+
if (!cached || cached.expiresAtMs - now > dials.renewAheadMs)
|
|
273
|
+
continue;
|
|
274
|
+
if (this.inFlight.has(userId))
|
|
275
|
+
continue;
|
|
276
|
+
attempted += 1;
|
|
277
|
+
try {
|
|
278
|
+
const out = await this.renew(userId, dials.renewAheadMs);
|
|
279
|
+
if (out.kind !== 'ok') {
|
|
280
|
+
this.opts.logger.info({ userId, outcome: out.kind }, 'hub grant: background renewal did not renew');
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
catch (err) {
|
|
284
|
+
this.opts.logger.warn({ err, userId }, 'hub grant: background renewal failed — the next request refreshes on demand');
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return attempted;
|
|
229
288
|
}
|
|
230
|
-
|
|
289
|
+
/**
|
|
290
|
+
* Run the sweep on a timer that never holds the process open and skips
|
|
291
|
+
* while the replica drains. Returns the function that stops it.
|
|
292
|
+
*/
|
|
293
|
+
startSweep(options = {}) {
|
|
294
|
+
const dials = { ...DEFAULT_GRANT_SWEEP_DIALS, ...options.dials };
|
|
295
|
+
let running = false;
|
|
296
|
+
const timer = setInterval(() => {
|
|
297
|
+
// One pass at a time: a slow hub must never stack passes.
|
|
298
|
+
if (running || options.isDraining?.())
|
|
299
|
+
return;
|
|
300
|
+
running = true;
|
|
301
|
+
void this.sweepExpiring(dials).finally(() => {
|
|
302
|
+
running = false;
|
|
303
|
+
});
|
|
304
|
+
}, dials.intervalMs);
|
|
305
|
+
timer.unref();
|
|
306
|
+
return { timer, stop: () => clearInterval(timer) };
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Renew the grant in the background (the sweep's path, PRDCT-3584): the
|
|
310
|
+
* cached token keeps being served until the rotation's result is known
|
|
311
|
+
* (nothing is evicted up front, unlike `refresh()`), and a token a sibling
|
|
312
|
+
* replica stored with at least `minLeftMs` of life left is adopted instead
|
|
313
|
+
* of rotating a second time. Joins an acquisition already in flight.
|
|
314
|
+
*/
|
|
315
|
+
async renew(userId, minLeftMs = DEFAULT_GRANT_SWEEP_DIALS.renewAheadMs) {
|
|
316
|
+
return this.acquire(userId, 'renew', minLeftMs);
|
|
317
|
+
}
|
|
318
|
+
acquire(userId, mode, minLeftMs) {
|
|
231
319
|
let flight = this.inFlight.get(userId);
|
|
232
320
|
if (!flight) {
|
|
233
|
-
flight = this.doAcquire(userId,
|
|
321
|
+
flight = this.doAcquire(userId, mode, minLeftMs).finally(() => {
|
|
234
322
|
if (this.inFlight.get(userId) === flight)
|
|
235
323
|
this.inFlight.delete(userId);
|
|
236
324
|
});
|
|
@@ -238,18 +326,26 @@ export class HubGrantService {
|
|
|
238
326
|
}
|
|
239
327
|
return flight;
|
|
240
328
|
}
|
|
241
|
-
async doAcquire(userId,
|
|
329
|
+
async doAcquire(userId, mode, minLeftMs) {
|
|
242
330
|
try {
|
|
243
331
|
const first = await this.readRow(userId);
|
|
244
332
|
if (!first)
|
|
245
333
|
return { kind: 'no_link' };
|
|
246
334
|
if (!first.refreshToken)
|
|
247
335
|
return { kind: 'grant_dead' };
|
|
248
|
-
if (
|
|
336
|
+
if (mode === 'demand') {
|
|
249
337
|
const stored = await this.storedAccess(userId, first);
|
|
250
338
|
if (stored)
|
|
251
339
|
return { kind: 'ok', accessToken: stored };
|
|
252
340
|
}
|
|
341
|
+
else if (mode === 'renew') {
|
|
342
|
+
// A sibling replica (or a login) already renewed: adopt its token
|
|
343
|
+
// without taking the lock (verifier round 6: the common case on
|
|
344
|
+
// several replicas was paying a dedicated connection for nothing).
|
|
345
|
+
const stored = await this.storedAccess(userId, first, minLeftMs);
|
|
346
|
+
if (stored)
|
|
347
|
+
return { kind: 'ok', accessToken: stored };
|
|
348
|
+
}
|
|
253
349
|
// Slow path: rotate under the cross-replica lock.
|
|
254
350
|
const lock = await this.acquireLock(userId);
|
|
255
351
|
try {
|
|
@@ -263,11 +359,19 @@ export class HubGrantService {
|
|
|
263
359
|
return { kind: 'no_link' };
|
|
264
360
|
if (!row.refreshToken)
|
|
265
361
|
return { kind: 'grant_dead' };
|
|
266
|
-
if (
|
|
362
|
+
if (mode === 'demand' || row.refreshToken !== first.refreshToken) {
|
|
267
363
|
const stored = await this.storedAccess(userId, row);
|
|
268
364
|
if (stored)
|
|
269
365
|
return { kind: 'ok', accessToken: stored };
|
|
270
366
|
}
|
|
367
|
+
else if (mode === 'renew') {
|
|
368
|
+
// A renewal rotates only what is about to expire: a stored token
|
|
369
|
+
// with more life than the renewal window is a sibling replica's
|
|
370
|
+
// fresh one (or a login's), adopted rather than rotated again.
|
|
371
|
+
const stored = await this.storedAccess(userId, row, minLeftMs);
|
|
372
|
+
if (stored)
|
|
373
|
+
return { kind: 'ok', accessToken: stored };
|
|
374
|
+
}
|
|
271
375
|
let refreshToken;
|
|
272
376
|
try {
|
|
273
377
|
refreshToken = await this.decrypt(row.refreshToken);
|
|
@@ -317,7 +421,7 @@ export class HubGrantService {
|
|
|
317
421
|
await this.clearPresentation(row.id);
|
|
318
422
|
this.cache.delete(userId);
|
|
319
423
|
this.refreshes.inc({ outcome: 'invalid_grant' });
|
|
320
|
-
this.opts.logger.warn({ userId }, 'hub grant: token endpoint answered invalid_grant — grant marked dead; a browser SSO login heals it');
|
|
424
|
+
this.opts.logger.warn({ userId, status: outcome.status, reason: outcome.description }, 'hub grant: token endpoint answered invalid_grant — grant marked dead; a browser SSO login heals it');
|
|
321
425
|
return { kind: 'grant_dead' };
|
|
322
426
|
}
|
|
323
427
|
if (outcome.kind === 'invalid_client') {
|
|
@@ -327,7 +431,7 @@ export class HubGrantService {
|
|
|
327
431
|
// is cleared, not kept.
|
|
328
432
|
await this.clearPresentation(row.id);
|
|
329
433
|
this.refreshes.inc({ outcome: 'invalid_client' });
|
|
330
|
-
this.opts.logger.error('hub grant: token endpoint answered invalid_client — HUB_CLIENT_ID/HUB_CLIENT_SECRET are broken; ' +
|
|
434
|
+
this.opts.logger.error({ status: outcome.status, reason: outcome.description }, 'hub grant: token endpoint answered invalid_client — HUB_CLIENT_ID/HUB_CLIENT_SECRET are broken; ' +
|
|
331
435
|
'refreshes are failing transient (grants are NOT being killed); fix the client credentials');
|
|
332
436
|
return { kind: 'inconclusive' };
|
|
333
437
|
}
|
|
@@ -453,11 +557,11 @@ export class HubGrantService {
|
|
|
453
557
|
return row ?? null;
|
|
454
558
|
}
|
|
455
559
|
/** Decrypt-and-cache the row's access token when it is still fresh. */
|
|
456
|
-
async storedAccess(userId, row) {
|
|
560
|
+
async storedAccess(userId, row, minLeftMs = this.dials.accessSkewMs) {
|
|
457
561
|
if (!row.accessToken || !row.accessTokenExpiresAt)
|
|
458
562
|
return null;
|
|
459
563
|
const expiresAtMs = row.accessTokenExpiresAt.getTime();
|
|
460
|
-
if (expiresAtMs - this.now() <=
|
|
564
|
+
if (expiresAtMs - this.now() <= minLeftMs)
|
|
461
565
|
return null;
|
|
462
566
|
try {
|
|
463
567
|
const token = await this.decrypt(row.accessToken);
|
|
@@ -546,11 +650,12 @@ export class HubGrantService {
|
|
|
546
650
|
// RFC 6749 errors ride 400/401; anything else (5xx…) is transient.
|
|
547
651
|
if (res.status === 400 || res.status === 401) {
|
|
548
652
|
const error = payload?.error;
|
|
653
|
+
const description = refusalDescription(payload);
|
|
549
654
|
if (error === 'invalid_grant')
|
|
550
|
-
return { kind: 'invalid_grant' };
|
|
655
|
+
return { kind: 'invalid_grant', status: res.status, description };
|
|
551
656
|
if (error === 'invalid_client')
|
|
552
|
-
return { kind: 'invalid_client' };
|
|
553
|
-
this.opts.logger.warn({ status: res.status, error }, 'hub grant: unrecognized token-endpoint error');
|
|
657
|
+
return { kind: 'invalid_client', status: res.status, description };
|
|
658
|
+
this.opts.logger.warn({ status: res.status, error, description }, 'hub grant: unrecognized token-endpoint error');
|
|
554
659
|
return { kind: 'transient' };
|
|
555
660
|
}
|
|
556
661
|
this.opts.logger.warn({ status: res.status }, 'hub grant: token endpoint answered non-2xx');
|