@c9up/transit 0.1.1 → 0.1.3
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/TransitProvider.d.ts +3 -0
- package/dist/TransitProvider.d.ts.map +1 -1
- package/dist/TransitProvider.js +17 -2
- package/dist/TransitProvider.js.map +1 -1
- package/dist/augmentations.d.ts +24 -0
- package/dist/augmentations.d.ts.map +1 -0
- package/dist/augmentations.js +18 -0
- package/dist/augmentations.js.map +1 -0
- package/dist/ber.d.ts +9 -0
- package/dist/ber.d.ts.map +1 -1
- package/dist/ber.js +16 -1
- package/dist/ber.js.map +1 -1
- package/dist/drivers/OidcDriver.js +1 -1
- package/dist/drivers/OidcDriver.js.map +1 -1
- package/dist/drivers/SamlDriver.d.ts.map +1 -1
- package/dist/drivers/SamlDriver.js +6 -1
- package/dist/drivers/SamlDriver.js.map +1 -1
- package/dist/dsig.d.ts.map +1 -1
- package/dist/dsig.js +17 -11
- package/dist/dsig.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/jwt.d.ts.map +1 -1
- package/dist/jwt.js +18 -2
- package/dist/jwt.js.map +1 -1
- package/dist/ldap.d.ts.map +1 -1
- package/dist/ldap.js +13 -1
- package/dist/ldap.js.map +1 -1
- package/dist/quasar.d.ts +7 -8
- package/dist/quasar.d.ts.map +1 -1
- package/dist/quasar.js +15 -35
- package/dist/quasar.js.map +1 -1
- package/dist/services/main.d.ts +10 -1
- package/dist/services/main.d.ts.map +1 -1
- package/dist/services/main.js +12 -1
- package/dist/services/main.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +19 -1
- package/dist/types.js.map +1 -1
- package/dist/vendor/nodeEnv.d.ts +5 -0
- package/dist/vendor/nodeEnv.d.ts.map +1 -0
- package/dist/{nodeEnv.js → vendor/nodeEnv.js} +13 -8
- package/dist/vendor/nodeEnv.js.map +1 -0
- package/dist/vendor/quasarConnection.d.ts +35 -0
- package/dist/vendor/quasarConnection.d.ts.map +1 -0
- package/dist/vendor/quasarConnection.js +62 -0
- package/dist/vendor/quasarConnection.js.map +1 -0
- package/dist/xml.d.ts +20 -1
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +43 -5
- package/dist/xml.js.map +1 -1
- package/package.json +9 -4
- package/src/TransitProvider.ts +20 -4
- package/src/augmentations.ts +28 -0
- package/src/ber.ts +19 -1
- package/src/drivers/OidcDriver.ts +2 -2
- package/src/drivers/SamlDriver.ts +6 -1
- package/src/dsig.ts +26 -15
- package/src/index.ts +2 -0
- package/src/jwt.ts +21 -3
- package/src/ldap.ts +17 -0
- package/src/quasar.ts +15 -52
- package/src/services/main.ts +13 -1
- package/src/types.ts +20 -1
- package/src/{nodeEnv.ts → vendor/nodeEnv.ts} +14 -8
- package/src/vendor/quasarConnection.ts +129 -0
- package/src/xml.ts +74 -5
- package/dist/nodeEnv.d.ts +0 -17
- package/dist/nodeEnv.d.ts.map +0 -1
- package/dist/nodeEnv.js.map +0 -1
package/dist/xml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c9up/transit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Transit — federated sign-in for the Ream framework: SAML 2.0, LDAP, OpenID Connect, OAuth1, OAuth2",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -37,14 +37,19 @@
|
|
|
37
37
|
"@types/node": "^22.19.15",
|
|
38
38
|
"@vitest/coverage-v8": "^4.1.5",
|
|
39
39
|
"typescript": "^6.0.2",
|
|
40
|
-
"vitest": "^4.1.2"
|
|
40
|
+
"vitest": "^4.1.2",
|
|
41
|
+
"@c9up/ream": "^0.2.0"
|
|
41
42
|
},
|
|
42
43
|
"peerDependencies": {
|
|
43
|
-
"@c9up/quasar": "^0.1.0"
|
|
44
|
+
"@c9up/quasar": "^0.1.0",
|
|
45
|
+
"@c9up/ream": "^0.2.0"
|
|
44
46
|
},
|
|
45
47
|
"peerDependenciesMeta": {
|
|
46
48
|
"@c9up/quasar": {
|
|
47
49
|
"optional": true
|
|
50
|
+
},
|
|
51
|
+
"@c9up/ream": {
|
|
52
|
+
"optional": true
|
|
48
53
|
}
|
|
49
54
|
},
|
|
50
55
|
"engines": {
|
|
@@ -66,7 +71,7 @@
|
|
|
66
71
|
"scripts": {
|
|
67
72
|
"build": "tsc -p tsconfig.build.json",
|
|
68
73
|
"test": "vitest run",
|
|
69
|
-
"lint": "biome check src/",
|
|
74
|
+
"lint": "biome check src/ tests/",
|
|
70
75
|
"test:coverage": "vitest run --coverage",
|
|
71
76
|
"typecheck": "tsc --noEmit"
|
|
72
77
|
}
|
package/src/TransitProvider.ts
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* usable from a host that is not Ream.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import "./augmentations.js";
|
|
9
10
|
import type { TransitConfig } from "./config.js";
|
|
10
|
-
import { setTransit } from "./services/main.js";
|
|
11
|
+
import { clearTransit, getTransit, setTransit } from "./services/main.js";
|
|
11
12
|
import { TransitManager } from "./TransitManager.js";
|
|
12
13
|
|
|
13
14
|
interface TransitContainer {
|
|
@@ -25,6 +26,9 @@ export interface TransitAppContext {
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export default class TransitProvider {
|
|
29
|
+
/** The manager this provider seated, so shutdown only clears its own. */
|
|
30
|
+
#manager: TransitManager | undefined;
|
|
31
|
+
|
|
28
32
|
constructor(protected app: TransitAppContext) {}
|
|
29
33
|
|
|
30
34
|
register(): void {
|
|
@@ -44,8 +48,20 @@ export default class TransitProvider {
|
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
async boot(): Promise<void> {
|
|
47
|
-
|
|
48
|
-
await this.app.container.resolve<TransitManager>(TransitManager)
|
|
49
|
-
|
|
51
|
+
const manager =
|
|
52
|
+
await this.app.container.resolve<TransitManager>(TransitManager);
|
|
53
|
+
this.#manager = manager;
|
|
54
|
+
setTransit(manager);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async shutdown(): Promise<void> {
|
|
58
|
+
// Release the module-level singleton, while it is still ours. A stopped
|
|
59
|
+
// application left a dead TransitManager reachable through
|
|
60
|
+
// `services/main` — and this one holds the SSO providers, so a stale one
|
|
61
|
+
// answers sign-ins for an application that no longer exists.
|
|
62
|
+
if (this.#manager !== undefined && getTransit() === this.#manager) {
|
|
63
|
+
clearTransit();
|
|
64
|
+
}
|
|
65
|
+
this.#manager = undefined;
|
|
50
66
|
}
|
|
51
67
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teach ream's `ContainerBindings` what `container.make(...)` returns for the
|
|
3
|
+
* tokens transit binds.
|
|
4
|
+
*
|
|
5
|
+
* ream declares that interface open on purpose: it registers its own entries
|
|
6
|
+
* and expects each package to contribute the ones it owns. Nothing filled
|
|
7
|
+
* these in, so resolving by the string token answered `unknown` and every call
|
|
8
|
+
* site had to assert a type it could not prove.
|
|
9
|
+
*
|
|
10
|
+
* Loaded from the package barrel, so importing Transit anywhere in the
|
|
11
|
+
* application is enough — nobody writes a `declare module` of their own.
|
|
12
|
+
*
|
|
13
|
+
* Type-only, and ream stays an OPTIONAL peer: nothing here reaches a runtime
|
|
14
|
+
* import, and a `declare module` for a specifier that does not resolve is
|
|
15
|
+
* simply inert.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
// Referenced so the augmentation below resolves the module it augments.
|
|
19
|
+
import type {} from "@c9up/ream/types";
|
|
20
|
+
|
|
21
|
+
import type { TransitManager } from "./TransitManager.js";
|
|
22
|
+
|
|
23
|
+
declare module "@c9up/ream/types" {
|
|
24
|
+
interface ContainerBindings {
|
|
25
|
+
/** The SSO manager, bound by `TransitProvider`. */
|
|
26
|
+
transit: TransitManager;
|
|
27
|
+
}
|
|
28
|
+
}
|
package/src/ber.ts
CHANGED
|
@@ -116,6 +116,16 @@ export function decodeString(value: Buffer): string {
|
|
|
116
116
|
return value.toString("utf8");
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
+
/**
|
|
120
|
+
* The largest message this will agree to assemble.
|
|
121
|
+
*
|
|
122
|
+
* A four-byte length header can declare 4 GiB, and the declaration arrives
|
|
123
|
+
* before any of the bytes do — so a five-byte reply could make the client sit
|
|
124
|
+
* on a growing buffer until the process died. A directory response is
|
|
125
|
+
* kilobytes; 8 MiB is generous for a paged search and still bounded.
|
|
126
|
+
*/
|
|
127
|
+
export const MAX_MESSAGE_BYTES = 8 * 1024 * 1024;
|
|
128
|
+
|
|
119
129
|
/**
|
|
120
130
|
* How many bytes a whole message occupies, or `undefined` while it is still
|
|
121
131
|
* arriving. LDAP runs over a stream, so a read can stop anywhere.
|
|
@@ -133,7 +143,15 @@ export function messageLength(buffer: Buffer): number | undefined {
|
|
|
133
143
|
for (let i = 0; i < count; i += 1) {
|
|
134
144
|
length = length * 256 + (buffer[2 + i] as number);
|
|
135
145
|
}
|
|
136
|
-
|
|
146
|
+
const total = 2 + count + length;
|
|
147
|
+
// Refused on the DECLARATION, not once the bytes have arrived: the point is
|
|
148
|
+
// never to buffer them.
|
|
149
|
+
if (total > MAX_MESSAGE_BYTES) {
|
|
150
|
+
throw new BerError(
|
|
151
|
+
`a message declares ${total} bytes, over the ${MAX_MESSAGE_BYTES} allowed`,
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
return total;
|
|
137
155
|
}
|
|
138
156
|
|
|
139
157
|
function encodeLength(length: number): Buffer {
|
|
@@ -306,7 +306,7 @@ export class OidcDriver implements TransitDriver {
|
|
|
306
306
|
!metadata.userinfo_endpoint ||
|
|
307
307
|
accessToken === ""
|
|
308
308
|
) {
|
|
309
|
-
return claims
|
|
309
|
+
return { ...claims };
|
|
310
310
|
}
|
|
311
311
|
const info = await this.#userinfo(metadata.userinfo_endpoint, accessToken);
|
|
312
312
|
if (info.sub !== claims.sub) {
|
|
@@ -314,7 +314,7 @@ export class OidcDriver implements TransitDriver {
|
|
|
314
314
|
"[transit] the userinfo response describes a different subject than the id_token",
|
|
315
315
|
);
|
|
316
316
|
}
|
|
317
|
-
return { ...
|
|
317
|
+
return { ...claims, ...info };
|
|
318
318
|
}
|
|
319
319
|
|
|
320
320
|
async #userinfo(
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
import { randomUUID } from "node:crypto";
|
|
15
15
|
import { deflateRawSync } from "node:zlib";
|
|
16
16
|
import { verifyXmlSignature } from "../dsig.js";
|
|
17
|
-
import { inProduction } from "../nodeEnv.js";
|
|
18
17
|
import {
|
|
19
18
|
type AssertionReplayStore,
|
|
20
19
|
MemoryAssertionReplayStore,
|
|
@@ -33,6 +32,7 @@ import type {
|
|
|
33
32
|
TransitUser,
|
|
34
33
|
} from "../types.js";
|
|
35
34
|
import { assertOAuthState } from "../types.js";
|
|
35
|
+
import { inProduction } from "../vendor/nodeEnv.js";
|
|
36
36
|
import { parseXml } from "../xml.js";
|
|
37
37
|
|
|
38
38
|
const PROTOCOL_NS = "urn:oasis:names:tc:SAML:2.0:protocol";
|
|
@@ -188,6 +188,11 @@ export class SamlDriver implements TransitDriver {
|
|
|
188
188
|
);
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
+
// Parsed before anything is verified, because the signature is INSIDE the
|
|
192
|
+
// document — so these are bytes an unauthenticated caller chose, and the
|
|
193
|
+
// parser's limits (length, depth, node and attribute counts) are what
|
|
194
|
+
// stands between a POST and the heap or the stack. The defaults are sized
|
|
195
|
+
// for SAML: a large response is tens of kilobytes.
|
|
191
196
|
const document = parseXml(decode(code));
|
|
192
197
|
if (
|
|
193
198
|
document.namespaceUri !== PROTOCOL_NS ||
|
package/src/dsig.ts
CHANGED
|
@@ -164,12 +164,15 @@ export function verifyXmlSignature(
|
|
|
164
164
|
"base64",
|
|
165
165
|
);
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
167
|
+
// `some` stops at the first key that holds. Any of the provider's listed
|
|
168
|
+
// certificates is an acceptable signer; none of them is attacker-supplied.
|
|
169
|
+
const holds = resolveKeys(signature, options.certificates).some((key) =>
|
|
170
|
+
verifySignature(
|
|
171
|
+
spec.hash,
|
|
172
|
+
signedBytes,
|
|
173
|
+
spec.kind === "ec" ? { key, dsaEncoding: "ieee-p1363" } : key,
|
|
174
|
+
signatureValue,
|
|
175
|
+
),
|
|
173
176
|
);
|
|
174
177
|
if (!holds) {
|
|
175
178
|
throw new SignatureError("the signature does not verify");
|
|
@@ -318,13 +321,23 @@ function readTransforms(
|
|
|
318
321
|
}
|
|
319
322
|
|
|
320
323
|
/**
|
|
321
|
-
* The
|
|
324
|
+
* The keys to verify with — the caller's, from the provider's metadata.
|
|
325
|
+
*
|
|
326
|
+
* When the document carries a certificate it must be one of them, and that one
|
|
327
|
+
* alone is returned. The check gives a clear error instead of an opaque "does
|
|
328
|
+
* not verify" when a provider has rotated and the metadata has not been
|
|
329
|
+
* updated.
|
|
322
330
|
*
|
|
323
|
-
*
|
|
324
|
-
*
|
|
325
|
-
*
|
|
331
|
+
* Without one, every certificate the metadata lists is a candidate. A provider
|
|
332
|
+
* mid-rotation publishes the outgoing and the incoming certificate together and
|
|
333
|
+
* signs with either; trying only the first would reject every assertion signed
|
|
334
|
+
* with the other, for the whole rotation window, under a message blaming the
|
|
335
|
+
* signature. `certificates` is plural for this reason.
|
|
326
336
|
*/
|
|
327
|
-
function
|
|
337
|
+
function resolveKeys(
|
|
338
|
+
signature: XmlElement,
|
|
339
|
+
certificates: string[],
|
|
340
|
+
): KeyObject[] {
|
|
328
341
|
if (certificates.length === 0) {
|
|
329
342
|
throw new SignatureError(
|
|
330
343
|
"no certificate was supplied — the key has to come from the provider's metadata, never from the document itself",
|
|
@@ -339,11 +352,9 @@ function resolveKey(signature: XmlElement, certificates: string[]): KeyObject {
|
|
|
339
352
|
"the document is signed with a certificate the provider's metadata does not list",
|
|
340
353
|
);
|
|
341
354
|
}
|
|
342
|
-
return match.publicKey;
|
|
355
|
+
return [match.publicKey];
|
|
343
356
|
}
|
|
344
|
-
|
|
345
|
-
// the safer of the two cases.
|
|
346
|
-
return (known[0] as X509Certificate).publicKey;
|
|
357
|
+
return known.map((cert) => cert.publicKey);
|
|
347
358
|
}
|
|
348
359
|
|
|
349
360
|
function embeddedCertificate(
|
package/src/index.ts
CHANGED
package/src/jwt.ts
CHANGED
|
@@ -113,7 +113,7 @@ export function verifyJwsSignature(
|
|
|
113
113
|
): boolean {
|
|
114
114
|
const spec = SUPPORTED[alg];
|
|
115
115
|
assertKeyMatchesAlg(jwk, alg);
|
|
116
|
-
const key = createPublicKey({ key: jwk
|
|
116
|
+
const key = createPublicKey({ key: jwk, format: "jwk" });
|
|
117
117
|
|
|
118
118
|
const data = Buffer.from(parts.signingInput, "ascii");
|
|
119
119
|
if (spec.kind === "ec") {
|
|
@@ -173,7 +173,7 @@ export function assertIdTokenClaims(
|
|
|
173
173
|
const now = expected.now ?? Math.floor(Date.now() / 1000);
|
|
174
174
|
|
|
175
175
|
const iss = payload.iss;
|
|
176
|
-
if (iss !== expected.issuer) {
|
|
176
|
+
if (typeof iss !== "string" || iss !== expected.issuer) {
|
|
177
177
|
throw new Error(
|
|
178
178
|
`[transit] id_token issuer mismatch: expected '${expected.issuer}'`,
|
|
179
179
|
);
|
|
@@ -185,6 +185,14 @@ export function assertIdTokenClaims(
|
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
const aud = payload.aud;
|
|
188
|
+
if (!isAudience(aud)) {
|
|
189
|
+
// Checked, not assumed: `includes` below would pass on a list holding the
|
|
190
|
+
// right string among arbitrary junk, and the claim would then be handed
|
|
191
|
+
// on described as a string it is not.
|
|
192
|
+
throw new Error(
|
|
193
|
+
"[transit] id_token audience is not a string or a list of strings",
|
|
194
|
+
);
|
|
195
|
+
}
|
|
188
196
|
const audiences = Array.isArray(aud) ? aud : [aud];
|
|
189
197
|
if (!audiences.includes(expected.audience)) {
|
|
190
198
|
throw new Error(
|
|
@@ -221,7 +229,17 @@ export function assertIdTokenClaims(
|
|
|
221
229
|
throw new Error("[transit] id_token nonce does not match this sign-in");
|
|
222
230
|
}
|
|
223
231
|
|
|
224
|
-
|
|
232
|
+
// Built from the locals each check narrowed, not asserted over the bag it
|
|
233
|
+
// came from. The cast that used to stand here promised `iss`, `sub`, `aud`
|
|
234
|
+
// and `exp` were strings and numbers on the strength of the checks above —
|
|
235
|
+
// and `iss` was never actually type-checked, only compared.
|
|
236
|
+
return { ...payload, iss, sub, aud, exp };
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/** An `aud` claim, in the two shapes the spec allows. */
|
|
240
|
+
function isAudience(value: unknown): value is string | string[] {
|
|
241
|
+
if (typeof value === "string") return true;
|
|
242
|
+
return Array.isArray(value) && value.every((one) => typeof one === "string");
|
|
225
243
|
}
|
|
226
244
|
|
|
227
245
|
function decodeSegment(segment: string, what: string): Record<string, unknown> {
|
package/src/ldap.ts
CHANGED
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
encodeInteger,
|
|
34
34
|
encodeSequence,
|
|
35
35
|
encodeString,
|
|
36
|
+
MAX_MESSAGE_BYTES,
|
|
36
37
|
messageLength,
|
|
37
38
|
OCTET_STRING,
|
|
38
39
|
} from "./ber.js";
|
|
@@ -255,6 +256,22 @@ export class LdapConnection {
|
|
|
255
256
|
|
|
256
257
|
#receive(chunk: Buffer): void {
|
|
257
258
|
this.#buffer = Buffer.concat([this.#buffer, chunk]);
|
|
259
|
+
// A stream that never completes a message must not grow the buffer
|
|
260
|
+
// forever. `messageLength` refuses an oversized DECLARATION, but a peer
|
|
261
|
+
// can also just keep sending bytes that never form one — the length
|
|
262
|
+
// header itself is only read once two bytes are in hand.
|
|
263
|
+
if (this.#buffer.length > MAX_MESSAGE_BYTES) {
|
|
264
|
+
this.#buffer = Buffer.alloc(0);
|
|
265
|
+
// The socket goes too: a peer that behaves this way is not one to keep
|
|
266
|
+
// reading from, and closing it is what stops the flood.
|
|
267
|
+
this.#socket?.destroy();
|
|
268
|
+
this.#failAll(
|
|
269
|
+
new LdapError(
|
|
270
|
+
`the directory sent more than ${MAX_MESSAGE_BYTES} bytes without completing a message`,
|
|
271
|
+
),
|
|
272
|
+
);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
258
275
|
for (;;) {
|
|
259
276
|
const length = messageLength(this.#buffer);
|
|
260
277
|
if (length === undefined || this.#buffer.length < length) return;
|
package/src/quasar.ts
CHANGED
|
@@ -1,64 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolving a Redis connection by name, from `@c9up/quasar`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The loading, the shape check and the messages are the same in every package
|
|
5
|
+
* that offers a Redis-backed option, so they are vendored rather than written
|
|
6
|
+
* again: `src/vendor/quasarConnection.ts`, generated from one source. What is
|
|
7
|
+
* specific stays at the call site — transit has several stores, each issuing
|
|
8
|
+
* its own commands, so unlike its siblings it passes them per call rather than
|
|
9
|
+
* fixing one list here.
|
|
7
10
|
*/
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
connection(name?: string): unknown;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function isConnectionSource(value: unknown): value is ConnectionSource {
|
|
14
|
-
return (
|
|
15
|
-
typeof value === "object" &&
|
|
16
|
-
value !== null &&
|
|
17
|
-
typeof Reflect.get(value, "connection") === "function"
|
|
18
|
-
);
|
|
19
|
-
}
|
|
12
|
+
import { quasarConnection as loadQuasarConnection } from "./vendor/quasarConnection.js";
|
|
20
13
|
|
|
21
|
-
/**
|
|
22
|
-
* The named connection, checked for the commands the caller needs before it is
|
|
23
|
-
* handed over — a connection missing one would fail on the first sign-in, far
|
|
24
|
-
* from the cause.
|
|
25
|
-
*/
|
|
14
|
+
/** The named connection, checked for the commands the caller will issue. */
|
|
26
15
|
export async function quasarConnection<T>(
|
|
27
16
|
name: string | undefined,
|
|
28
17
|
required: readonly string[],
|
|
29
18
|
what: string,
|
|
30
19
|
): Promise<T> {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
{ cause },
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const manager = isConnectionSource(loaded)
|
|
43
|
-
? loaded
|
|
44
|
-
: Reflect.get(Object(loaded), "default");
|
|
45
|
-
if (!isConnectionSource(manager)) {
|
|
46
|
-
throw new Error(
|
|
47
|
-
"[transit] @c9up/quasar/services/main did not expose a connection() manager",
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const connection = manager.connection(name);
|
|
52
|
-
const missing = required.filter(
|
|
53
|
-
(command) =>
|
|
54
|
-
typeof connection !== "object" ||
|
|
55
|
-
connection === null ||
|
|
56
|
-
typeof Reflect.get(connection, command) !== "function",
|
|
57
|
-
);
|
|
58
|
-
if (missing.length > 0) {
|
|
59
|
-
throw new Error(
|
|
60
|
-
`[transit] the quasar connection${name ? ` '${name}'` : ""} is missing ${missing.join(", ")}, which ${what} issues`,
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
return connection as T;
|
|
20
|
+
return loadQuasarConnection<T>({
|
|
21
|
+
pkg: "transit",
|
|
22
|
+
name,
|
|
23
|
+
required,
|
|
24
|
+
what,
|
|
25
|
+
raise: (_reason, message, cause) => new Error(message, { cause }),
|
|
26
|
+
});
|
|
64
27
|
}
|
package/src/services/main.ts
CHANGED
|
@@ -15,7 +15,19 @@ export function setTransit(manager: TransitManager): void {
|
|
|
15
15
|
instance = manager;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
/** @internal
|
|
18
|
+
/** @internal Read the seated manager, if there is one. */
|
|
19
|
+
export function getTransit(): TransitManager | undefined {
|
|
20
|
+
return instance;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @internal Forget the manager — called by the provider on shutdown, and by
|
|
25
|
+
* tests between cases.
|
|
26
|
+
*
|
|
27
|
+
* The caller checks ownership first (`getTransit() === mine`): two applications
|
|
28
|
+
* share this module in one process, and the one shutting down must not clear a
|
|
29
|
+
* manager the other has since seated.
|
|
30
|
+
*/
|
|
19
31
|
export function clearTransit(): void {
|
|
20
32
|
instance = undefined;
|
|
21
33
|
}
|
package/src/types.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* The shapes every provider answers with, whatever protocol it speaks.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
+
import { timingSafeEqual } from "node:crypto";
|
|
5
6
|
export interface OAuthConfig {
|
|
6
7
|
clientId: string;
|
|
7
8
|
clientSecret: string;
|
|
@@ -144,7 +145,25 @@ export function assertOAuthState(
|
|
|
144
145
|
"Store the state given to redirectUrl() in the session and pass it here.",
|
|
145
146
|
);
|
|
146
147
|
}
|
|
147
|
-
if (state
|
|
148
|
+
if (state === undefined || !sameSecret(state, expectedState)) {
|
|
148
149
|
throw new Error("OAuth state mismatch — possible CSRF attack");
|
|
149
150
|
}
|
|
150
151
|
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Compare two states without leaking where they diverge.
|
|
155
|
+
*
|
|
156
|
+
* `!==` on strings stops at the first differing byte, and the state is the only
|
|
157
|
+
* thing standing between an attacker's authorization code and the victim's
|
|
158
|
+
* session. The leak is small against network noise, but every other secret
|
|
159
|
+
* comparison in the framework is already constant-time and this one is the
|
|
160
|
+
* outlier.
|
|
161
|
+
*
|
|
162
|
+
* The lengths are checked first because `timingSafeEqual` throws when they
|
|
163
|
+
* differ. A state's length is not the secret; its content is.
|
|
164
|
+
*/
|
|
165
|
+
function sameSecret(given: string, expected: string): boolean {
|
|
166
|
+
const left = Buffer.from(given, "utf8");
|
|
167
|
+
const right = Buffer.from(expected, "utf8");
|
|
168
|
+
return left.length === right.length && timingSafeEqual(left, right);
|
|
169
|
+
}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
// Generated from scripts/vendor/nodeEnv.ts — do not edit.
|
|
2
|
+
//
|
|
3
|
+
// This package is published and built from its own repository, so the file
|
|
4
|
+
// has to exist here rather than be imported. `pnpm vendor:sync` rewrites it,
|
|
5
|
+
// and `pnpm vendor:check` fails if this copy has drifted from the original.
|
|
6
|
+
|
|
1
7
|
/**
|
|
2
|
-
*
|
|
8
|
+
* `NODE_ENV`, read the way every runtime actually spells it.
|
|
3
9
|
*
|
|
4
|
-
* `NODE_ENV=prod` is ordinary in a Dockerfile or a platform dashboard
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
10
|
+
* `NODE_ENV=prod` is ordinary in a Dockerfile or a platform dashboard, and a
|
|
11
|
+
* bare `=== "production"` answers "not production" for it. What that costs
|
|
12
|
+
* differs per package, so the consequence is stated where the decision is
|
|
13
|
+
* taken, not here.
|
|
8
14
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
15
|
+
* The tables mirror the framework's (`@c9up/ream`, src/env/nodeEnv.ts), which
|
|
16
|
+
* is the origin rather than a peer: it formats to different rules and exposes
|
|
17
|
+
* `currentNodeEnv()` instead of `inProduction()`.
|
|
12
18
|
*/
|
|
13
19
|
|
|
14
20
|
const DEV_ENVS = ["dev", "develop", "development"];
|