@c9up/transit 0.1.5 → 0.1.7
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 +24 -1
- package/dist/configure.d.ts +6 -0
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +2 -14
- package/dist/configure.js.map +1 -1
- package/dist/drivers/LdapDirectory.d.ts.map +1 -1
- package/dist/drivers/LdapDirectory.js +3 -1
- package/dist/drivers/LdapDirectory.js.map +1 -1
- package/dist/drivers/SamlDriver.d.ts +17 -0
- package/dist/drivers/SamlDriver.d.ts.map +1 -1
- package/dist/drivers/SamlDriver.js +45 -4
- package/dist/drivers/SamlDriver.js.map +1 -1
- package/dist/ldap.d.ts.map +1 -1
- package/dist/ldap.js +35 -4
- package/dist/ldap.js.map +1 -1
- package/dist/oidc.d.ts.map +1 -1
- package/dist/oidc.js +7 -4
- package/dist/oidc.js.map +1 -1
- package/dist/quasar.d.ts +7 -2
- package/dist/quasar.d.ts.map +1 -1
- package/dist/quasar.js +8 -2
- package/dist/quasar.js.map +1 -1
- package/dist/replay.d.ts +3 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +11 -5
- package/dist/replay.js.map +1 -1
- package/dist/saml.d.ts +9 -1
- package/dist/saml.d.ts.map +1 -1
- package/dist/saml.js +1 -0
- package/dist/saml.js.map +1 -1
- package/dist/stubs.d.ts +14 -0
- package/dist/stubs.d.ts.map +1 -0
- package/dist/stubs.js +15 -0
- package/dist/stubs.js.map +1 -0
- package/dist/vendor/quasarConnection.d.ts +26 -3
- package/dist/vendor/quasarConnection.d.ts.map +1 -1
- package/dist/vendor/quasarConnection.js +44 -23
- package/dist/vendor/quasarConnection.js.map +1 -1
- package/package.json +4 -3
- package/src/configure.ts +9 -17
- package/src/drivers/LdapDirectory.ts +3 -1
- package/src/drivers/SamlDriver.ts +65 -4
- package/src/ldap.ts +39 -4
- package/src/oidc.ts +7 -4
- package/src/quasar.ts +9 -2
- package/src/replay.ts +17 -7
- package/src/saml.ts +10 -1
- package/src/stubs.ts +16 -0
- package/src/vendor/quasarConnection.ts +84 -22
- package/stubs/config/transit.stub +17 -0
package/README.md
CHANGED
|
@@ -100,6 +100,15 @@ password is an anonymous bind, and the directory answers success. And there is
|
|
|
100
100
|
no filter string — a filter is a structure whose values are written as octets,
|
|
101
101
|
so a username cannot become syntax.
|
|
102
102
|
|
|
103
|
+
The search ignores continuation references (Active Directory answers some for
|
|
104
|
+
any search from a domain root) instead of counting them as entries, and never
|
|
105
|
+
follows them.
|
|
106
|
+
|
|
107
|
+
An address read from the directory is reported `verified`: the directory is
|
|
108
|
+
the one you configured and run. If it belongs to someone else — a customer's
|
|
109
|
+
directory — its addresses are that customer's say-so, and linking accounts by
|
|
110
|
+
email across tenants on that basis is not safe.
|
|
111
|
+
|
|
103
112
|
## SAML 2.0
|
|
104
113
|
|
|
105
114
|
```ts
|
|
@@ -118,7 +127,8 @@ export default defineConfig({
|
|
|
118
127
|
The certificates come from the provider's metadata and nowhere else. The
|
|
119
128
|
element the signature covers is the element that is read — nothing is looked up
|
|
120
129
|
in the document afterwards, which is what closes XML Signature Wrapping. An
|
|
121
|
-
assertion is a bearer token, so its id is remembered
|
|
130
|
+
assertion is a bearer token, so its id is remembered for as long as it could
|
|
131
|
+
still be accepted — its later expiry plus `clockSkewSeconds`.
|
|
122
132
|
|
|
123
133
|
That record has to be **shared by every replica**, because it is what stops the
|
|
124
134
|
same assertion being presented twice. The in-process default bounds replay
|
|
@@ -133,6 +143,15 @@ replayStore: replayStores.memory() // a single process, de
|
|
|
133
143
|
Outside production the in-process store remains the default: one dev process is
|
|
134
144
|
the case it is correct for.
|
|
135
145
|
|
|
146
|
+
Whoever administers a SAML provider can assert any address, so an asserted
|
|
147
|
+
address is reported `unsupported` unless the config says the provider is
|
|
148
|
+
authoritative for it:
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
trustEmail: true // your own provider: every address is verified
|
|
152
|
+
trustedEmailDomains: ['acme.test'] // a customer's: only acme.test addresses are verified, others unverified
|
|
153
|
+
```
|
|
154
|
+
|
|
136
155
|
## OpenID Connect
|
|
137
156
|
|
|
138
157
|
One driver for every conforming provider — Keycloak, Auth0, Okta, Entra ID,
|
|
@@ -156,6 +175,10 @@ taken from what the provider **declared** rather than from the token's own
|
|
|
156
175
|
header, and every claim that binds it to this exchange — `iss`, `aud`, `exp`,
|
|
157
176
|
and the `nonce`. Only asymmetric signatures are accepted.
|
|
158
177
|
|
|
178
|
+
The issuer is compared byte for byte with the discovery document's `issuer` and
|
|
179
|
+
with every token's `iss`, so write it exactly as the provider does — Auth0's
|
|
180
|
+
ends with a slash (`https://tenant.auth0.com/`).
|
|
181
|
+
|
|
159
182
|
## Before linking an account by email
|
|
160
183
|
|
|
161
184
|
`user.emailVerificationState` is `verified`, `unverified` or `unsupported`.
|
package/dist/configure.d.ts
CHANGED
|
@@ -12,6 +12,12 @@ interface Codemods {
|
|
|
12
12
|
writeFile(filePath: string, content: string, options?: {
|
|
13
13
|
force?: boolean;
|
|
14
14
|
}): Promise<void>;
|
|
15
|
+
makeUsingStub(stubsRoot: string, stubPath: string, state?: Record<string, string | number | boolean>, options?: {
|
|
16
|
+
force?: boolean;
|
|
17
|
+
}): Promise<{
|
|
18
|
+
path: string;
|
|
19
|
+
contents: string;
|
|
20
|
+
}>;
|
|
15
21
|
}
|
|
16
22
|
export declare function configure(codemods: Codemods): Promise<void>;
|
|
17
23
|
export {};
|
package/dist/configure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,UAAU,QAAQ;IACjB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,CACR,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EACjD,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/C;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjE"}
|
package/dist/configure.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* application wants. Writing both together is what makes `ream add` mean
|
|
7
7
|
* installed AND working.
|
|
8
8
|
*/
|
|
9
|
+
import { stubsRoot } from "./stubs.js";
|
|
9
10
|
export async function configure(codemods) {
|
|
10
11
|
// The config below reads these, so they are declared here. Writing the file
|
|
11
12
|
// without them leaves an application whose config asks the environment for
|
|
@@ -15,19 +16,6 @@ export async function configure(codemods) {
|
|
|
15
16
|
GOOGLE_CLIENT_SECRET: "",
|
|
16
17
|
});
|
|
17
18
|
await codemods.addProvider("@c9up/transit/provider");
|
|
18
|
-
await codemods.
|
|
19
|
-
import env from '#start/env'
|
|
20
|
-
|
|
21
|
-
export default defineConfig({
|
|
22
|
-
// The key is yours: it is what \`transit.begin(name)\` asks for.
|
|
23
|
-
google: socials.google({
|
|
24
|
-
clientId: env.get('GOOGLE_CLIENT_ID', ''),
|
|
25
|
-
clientSecret: env.get('GOOGLE_CLIENT_SECRET', ''),
|
|
26
|
-
callbackUrl: 'http://localhost:3333/auth/google/callback',
|
|
27
|
-
}),
|
|
28
|
-
|
|
29
|
-
// An OpenID Connect provider needs only its issuer:
|
|
30
|
-
// work: oidc({ issuer: env.get('OIDC_ISSUER'), clientId, clientSecret, callbackUrl }),
|
|
31
|
-
})`);
|
|
19
|
+
await codemods.makeUsingStub(stubsRoot, "config/transit.stub");
|
|
32
20
|
}
|
|
33
21
|
//# sourceMappingURL=configure.js.map
|
package/dist/configure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAkBvC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAkB;IACjD,4EAA4E;IAC5E,2EAA2E;IAC3E,oCAAoC;IACpC,MAAM,QAAQ,CAAC,UAAU,CAAC;QACzB,gBAAgB,EAAE,EAAE;QACpB,oBAAoB,EAAE,EAAE;KACxB,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACrD,MAAM,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LdapDirectory.d.ts","sourceRoot":"","sources":["../../src/drivers/LdapDirectory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAIN,KAAK,UAAU,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,UAAU;IAC1B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,iFAAiF;IACjF,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,oEAAoE;IACpE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,aAAc,YAAW,eAAe;;gBAGxC,MAAM,EAAE,UAAU;IAIxB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"LdapDirectory.d.ts","sourceRoot":"","sources":["../../src/drivers/LdapDirectory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAIN,KAAK,UAAU,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,UAAU;IAC1B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,iFAAiF;IACjF,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,oEAAoE;IACpE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,aAAc,YAAW,eAAe;;gBAGxC,MAAM,EAAE,UAAU;IAIxB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAkH5E"}
|
|
@@ -110,7 +110,9 @@ export class LdapDirectory {
|
|
|
110
110
|
name: name ?? nickName ?? entry.dn,
|
|
111
111
|
nickName,
|
|
112
112
|
// A directory that holds an address has vouched for it: that is what
|
|
113
|
-
// a directory is.
|
|
113
|
+
// a directory is. Unlike a SAML provider, the directory is the one
|
|
114
|
+
// the operator configured and runs — if it is a customer's, its
|
|
115
|
+
// addresses are that customer's say-so (see the README).
|
|
114
116
|
emailVerificationState: email === undefined ? "unsupported" : "verified",
|
|
115
117
|
raw: { dn: entry.dn, attributes: entry.attributes },
|
|
116
118
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LdapDirectory.js","sourceRoot":"","sources":["../../src/drivers/LdapDirectory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"LdapDirectory.js","sourceRoot":"","sources":["../../src/drivers/LdapDirectory.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,23 @@ export interface SamlConfig {
|
|
|
43
43
|
name?: string;
|
|
44
44
|
nickName?: string;
|
|
45
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Mark every address this provider asserts as `"verified"`.
|
|
48
|
+
*
|
|
49
|
+
* Only for a provider that is authoritative for ALL the addresses it can
|
|
50
|
+
* assert — your own organisation's. Whoever administers the provider can
|
|
51
|
+
* assert any address, so with a customer's provider this hands them every
|
|
52
|
+
* account an application links by email. Default false: an asserted
|
|
53
|
+
* address is `"unsupported"`.
|
|
54
|
+
*/
|
|
55
|
+
trustEmail?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* The domains this provider is authoritative for. An asserted address in
|
|
58
|
+
* one of them is `"verified"`, any other is `"unverified"`. Compared without
|
|
59
|
+
* case on what follows the address's last `@`, exactly — a subdomain is
|
|
60
|
+
* listed on its own.
|
|
61
|
+
*/
|
|
62
|
+
trustedEmailDomains?: string[];
|
|
46
63
|
}
|
|
47
64
|
export declare class SamlDriver implements TransitDriver {
|
|
48
65
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SamlDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/SamlDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EACN,KAAK,oBAAoB,EAEzB,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SamlDriver.d.ts","sourceRoot":"","sources":["../../src/drivers/SamlDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EACN,KAAK,oBAAoB,EAEzB,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAEX,UAAU,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACX,MAAM,aAAa,CAAC;AAmCrB,MAAM,WAAW,UAAU;IAC1B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,oBAAoB,GAAG,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAClE,gFAAgF;IAChF,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAsBD,qBAAa,UAAW,YAAW,aAAa;;gBAKnC,MAAM,EAAE,UAAU;IAmB9B;;;OAGG;IACH,WAAW,IAAI,MAAM;IAMf,KAAK,CAAC,KAAK,GAAE,MAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAwBnE;;;;OAIG;IACG,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;CAmIpD"}
|
|
@@ -66,6 +66,7 @@ function refuseImplicitMemoryReplayStoreInProduction() {
|
|
|
66
66
|
}
|
|
67
67
|
export class SamlDriver {
|
|
68
68
|
#config;
|
|
69
|
+
#trustedDomains;
|
|
69
70
|
#replay;
|
|
70
71
|
constructor(config) {
|
|
71
72
|
if (config.certificates.length === 0) {
|
|
@@ -80,6 +81,7 @@ export class SamlDriver {
|
|
|
80
81
|
// healthy, and reported it to whoever happened to sign in first.
|
|
81
82
|
refuseImplicitMemoryReplayStoreInProduction();
|
|
82
83
|
}
|
|
84
|
+
this.#trustedDomains = trustedDomains(config);
|
|
83
85
|
this.#config = config;
|
|
84
86
|
}
|
|
85
87
|
/**
|
|
@@ -145,7 +147,10 @@ export class SamlDriver {
|
|
|
145
147
|
inResponseTo: secret,
|
|
146
148
|
clockSkewSeconds: this.#config.clockSkewSeconds,
|
|
147
149
|
});
|
|
148
|
-
|
|
150
|
+
// Remembered for as long as the validation above would still accept the
|
|
151
|
+
// assertion — its later expiry plus the clock skew — not merely until
|
|
152
|
+
// the expiry it states.
|
|
153
|
+
const fresh = await this.#replayStore().remember(identity.assertionId, identity.rememberUntil);
|
|
149
154
|
if (!fresh) {
|
|
150
155
|
// Everything above passes on a captured response posted a second
|
|
151
156
|
// time. This is what does not.
|
|
@@ -182,6 +187,22 @@ export class SamlDriver {
|
|
|
182
187
|
: "") +
|
|
183
188
|
"</samlp:AuthnRequest>");
|
|
184
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Whoever administers a SAML provider can assert any address, so one is
|
|
192
|
+
* verified only when the config says this provider is authoritative for it.
|
|
193
|
+
*/
|
|
194
|
+
#emailVerificationState(email) {
|
|
195
|
+
if (email === undefined)
|
|
196
|
+
return "unsupported";
|
|
197
|
+
if (this.#config.trustEmail === true)
|
|
198
|
+
return "verified";
|
|
199
|
+
const domains = this.#trustedDomains;
|
|
200
|
+
if (domains === undefined)
|
|
201
|
+
return "unsupported";
|
|
202
|
+
const at = email.lastIndexOf("@");
|
|
203
|
+
const domain = at === -1 ? "" : email.slice(at + 1).toLowerCase();
|
|
204
|
+
return domains.has(domain) ? "verified" : "unverified";
|
|
205
|
+
}
|
|
185
206
|
#mapUser(identity) {
|
|
186
207
|
const claims = this.#config.claims ?? {};
|
|
187
208
|
const email = pick(identity, claims.email, EMAIL_CLAIMS) ??
|
|
@@ -194,9 +215,7 @@ export class SamlDriver {
|
|
|
194
215
|
email: email ?? "",
|
|
195
216
|
name: name ?? identity.nameId,
|
|
196
217
|
nickName: pick(identity, claims.nickName, NICK_CLAIMS),
|
|
197
|
-
|
|
198
|
-
// its directory is.
|
|
199
|
-
emailVerificationState: email === undefined ? "unsupported" : "verified",
|
|
218
|
+
emailVerificationState: this.#emailVerificationState(email),
|
|
200
219
|
raw: {
|
|
201
220
|
nameId: identity.nameId,
|
|
202
221
|
nameIdFormat: identity.nameIdFormat,
|
|
@@ -206,6 +225,28 @@ export class SamlDriver {
|
|
|
206
225
|
};
|
|
207
226
|
}
|
|
208
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* The trusted domains, lower-cased, or undefined when none were configured.
|
|
230
|
+
* A malformed list fails at construction rather than marking nothing, or the
|
|
231
|
+
* wrong addresses, verified.
|
|
232
|
+
*/
|
|
233
|
+
function trustedDomains(config) {
|
|
234
|
+
const domains = config.trustedEmailDomains;
|
|
235
|
+
if (domains === undefined)
|
|
236
|
+
return undefined;
|
|
237
|
+
if (config.trustEmail === true) {
|
|
238
|
+
throw new SamlError(`'${config.issuer}' sets both trustEmail and trustedEmailDomains — trustEmail already trusts every domain, so say which one is meant`);
|
|
239
|
+
}
|
|
240
|
+
const normalized = new Set();
|
|
241
|
+
for (const domain of domains) {
|
|
242
|
+
const value = domain.trim().toLowerCase();
|
|
243
|
+
if (value === "" || value.includes("@")) {
|
|
244
|
+
throw new SamlError(`trustedEmailDomains of '${config.issuer}' lists '${domain}', which is not a domain — write 'acme.com', not an address`);
|
|
245
|
+
}
|
|
246
|
+
normalized.add(value);
|
|
247
|
+
}
|
|
248
|
+
return normalized;
|
|
249
|
+
}
|
|
209
250
|
/** The first value among the configured name, then the usual ones. */
|
|
210
251
|
function pick(identity, configured, candidates) {
|
|
211
252
|
const names = configured ? [configured] : candidates;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SamlDriver.js","sourceRoot":"","sources":["../../src/drivers/SamlDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAEN,0BAA0B,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,eAAe,EACf,uBAAuB,EACvB,SAAS,EAET,iBAAiB,GACjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"SamlDriver.js","sourceRoot":"","sources":["../../src/drivers/SamlDriver.ts"],"names":[],"mappings":"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"}
|
package/dist/ldap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ldap.d.ts","sourceRoot":"","sources":["../src/ldap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"ldap.d.ts","sourceRoot":"","sources":["../src/ldap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgCH,qBAAa,SAAU,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;gBACtB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAK1C;AAED,mEAAmE;AACnE,MAAM,MAAM,UAAU,GACnB;IAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;CAAE,GAC9C;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACnB;IAAE,GAAG,EAAE,UAAU,EAAE,CAAA;CAAE,GACrB;IAAE,EAAE,EAAE,UAAU,EAAE,CAAA;CAAE,GACpB;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC;AAEvB,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC3B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,qBAAa,cAAc;;gBAcd,OAAO,EAAE,WAAW;IAI1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C9B;;;;;;;OAOG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBvD,iEAAiE;IAC3D,MAAM,CAAC,OAAO,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,UAAU,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsBxB,mEAAmE;IAC7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAsI5B"}
|
package/dist/ldap.js
CHANGED
|
@@ -24,6 +24,7 @@ const UNBIND_REQUEST = applicationPrimitive(2);
|
|
|
24
24
|
const SEARCH_REQUEST = application(3);
|
|
25
25
|
const SEARCH_ENTRY = application(4);
|
|
26
26
|
const SEARCH_DONE = application(5);
|
|
27
|
+
const SEARCH_REFERENCE = application(19);
|
|
27
28
|
export class LdapError extends Error {
|
|
28
29
|
code;
|
|
29
30
|
constructor(message, code) {
|
|
@@ -191,13 +192,40 @@ export class LdapConnection {
|
|
|
191
192
|
if (!waiting || !expected)
|
|
192
193
|
return;
|
|
193
194
|
if (expected.until === undefined) {
|
|
194
|
-
// A single-reply operation:
|
|
195
|
-
|
|
195
|
+
// A single-reply operation: the answer is the one tag it expects, and
|
|
196
|
+
// any other reply under its id is the server saying something this
|
|
197
|
+
// operation cannot read as a result.
|
|
198
|
+
if (expected.collect.includes(op.tag)) {
|
|
199
|
+
this.#finish(id, [op.value]);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
this.#fail(id, unexpectedReply(op.tag));
|
|
203
|
+
}
|
|
196
204
|
return;
|
|
197
205
|
}
|
|
198
|
-
|
|
199
|
-
|
|
206
|
+
if (op.tag === expected.until) {
|
|
207
|
+
waiting.parts.push(op.value);
|
|
200
208
|
this.#finish(id, waiting.parts);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (expected.collect.includes(op.tag)) {
|
|
212
|
+
waiting.parts.push(op.value);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (op.tag === SEARCH_REFERENCE) {
|
|
216
|
+
// A continuation reference names another server that may hold more
|
|
217
|
+
// of the subtree (RFC 4511 §4.5.3). It is not an entry, and chasing
|
|
218
|
+
// it would send the next bind to wherever the reply pointed. Active
|
|
219
|
+
// Directory answers several for any search from a domain root.
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
this.#fail(id, unexpectedReply(op.tag));
|
|
223
|
+
}
|
|
224
|
+
#fail(id, error) {
|
|
225
|
+
const waiting = this.#pending.get(id);
|
|
226
|
+
this.#pending.delete(id);
|
|
227
|
+
this.#expect.delete(id);
|
|
228
|
+
waiting?.reject(error);
|
|
201
229
|
}
|
|
202
230
|
#finish(id, parts) {
|
|
203
231
|
const waiting = this.#pending.get(id);
|
|
@@ -248,6 +276,9 @@ function readEntry(value) {
|
|
|
248
276
|
attributes,
|
|
249
277
|
};
|
|
250
278
|
}
|
|
279
|
+
function unexpectedReply(tag) {
|
|
280
|
+
return new LdapError(`the directory answered with an unexpected reply (tag 0x${tag.toString(16)})`);
|
|
281
|
+
}
|
|
251
282
|
/** LDAP answers a code; anything but zero is a refusal worth reporting. */
|
|
252
283
|
function assertSuccess(response, what) {
|
|
253
284
|
const [codeElement, , messageElement] = decodeSequence(response);
|
package/dist/ldap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ldap.js","sourceRoot":"","sources":["../src/ldap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ldap.js","sourceRoot":"","sources":["../src/ldap.ts"],"names":[],"mappings":"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"}
|
package/dist/oidc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qCAAqC,CAAC,EAAE,MAAM,EAAE,CAAC;IACjD,gCAAgC,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC7B,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAKD;;;;;;;GAOG;AACH,qBAAa,aAAa;;gBAOb,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;
|
|
1
|
+
{"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qCAAqC,CAAC,EAAE,MAAM,EAAE,CAAC;IACjD,gCAAgC,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC7B,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAKD;;;;;;;GAOG;AACH,qBAAa,aAAa;;gBAOb,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;IASvD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,GAAG,IAAI,MAAM,CAIhB;IAEK,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;CA2BvC;AAED;;;GAGG;AACH,qBAAa,SAAS;;gBAOT,OAAO,GAAE,aAAkB;IAKvC;;;;;;OAMG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;CAwD7D"}
|
package/dist/oidc.js
CHANGED
|
@@ -26,9 +26,10 @@ export class OidcDiscovery {
|
|
|
26
26
|
#cached;
|
|
27
27
|
#inFlight;
|
|
28
28
|
constructor(issuer, options = {}) {
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
|
|
29
|
+
// Kept byte for byte: the discovery document's `issuer` and every
|
|
30
|
+
// id_token's `iss` must be IDENTICAL to it (OpenID Connect Discovery
|
|
31
|
+
// §4.3), and some providers' issuers end with a slash (Auth0's do).
|
|
32
|
+
this.#issuer = issuer;
|
|
32
33
|
this.#ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
|
|
33
34
|
this.#now = options.now ?? Date.now;
|
|
34
35
|
}
|
|
@@ -36,7 +37,9 @@ export class OidcDiscovery {
|
|
|
36
37
|
return this.#issuer;
|
|
37
38
|
}
|
|
38
39
|
get url() {
|
|
39
|
-
|
|
40
|
+
// Only the well-known URL drops the trailing slash, so it is joined
|
|
41
|
+
// without a double one.
|
|
42
|
+
return `${this.#issuer.replace(/\/+$/, "")}/.well-known/openid-configuration`;
|
|
40
43
|
}
|
|
41
44
|
async metadata() {
|
|
42
45
|
const cached = this.#cached;
|
package/dist/oidc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAuBpD,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,OAAO,aAAa;IAChB,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,IAAI,CAAe;IAC5B,OAAO,CAA4D;IACnE,SAAS,CAAoC;IAE7C,YAAY,MAAc,EAAE,UAAyB,EAAE;QACtD,
|
|
1
|
+
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"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"}
|
package/dist/quasar.d.ts
CHANGED
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
* its own commands, so unlike its siblings it passes them per call rather than
|
|
9
9
|
* fixing one list here.
|
|
10
10
|
*/
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* The named connection, checked for the commands the caller will issue.
|
|
13
|
+
*
|
|
14
|
+
* `isConnection` is the caller's check over those same commands: only the
|
|
15
|
+
* caller knows which client type it needs, so only it can vouch for it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function quasarConnection<T>(name: string | undefined, required: readonly string[], what: string, isConnection: (value: unknown) => value is T): Promise<T>;
|
|
13
18
|
//# sourceMappingURL=quasar.d.ts.map
|
package/dist/quasar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quasar.d.ts","sourceRoot":"","sources":["../src/quasar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH
|
|
1
|
+
{"version":3,"file":"quasar.d.ts","sourceRoot":"","sources":["../src/quasar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACvC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC1C,OAAO,CAAC,CAAC,CAAC,CASZ"}
|
package/dist/quasar.js
CHANGED
|
@@ -9,13 +9,19 @@
|
|
|
9
9
|
* fixing one list here.
|
|
10
10
|
*/
|
|
11
11
|
import { quasarConnection as loadQuasarConnection } from "./vendor/quasarConnection.js";
|
|
12
|
-
/**
|
|
13
|
-
|
|
12
|
+
/**
|
|
13
|
+
* The named connection, checked for the commands the caller will issue.
|
|
14
|
+
*
|
|
15
|
+
* `isConnection` is the caller's check over those same commands: only the
|
|
16
|
+
* caller knows which client type it needs, so only it can vouch for it.
|
|
17
|
+
*/
|
|
18
|
+
export async function quasarConnection(name, required, what, isConnection) {
|
|
14
19
|
return loadQuasarConnection({
|
|
15
20
|
pkg: "transit",
|
|
16
21
|
name,
|
|
17
22
|
required,
|
|
18
23
|
what,
|
|
24
|
+
isConnection,
|
|
19
25
|
raise: (_reason, message, cause) => new Error(message, { cause }),
|
|
20
26
|
});
|
|
21
27
|
}
|
package/dist/quasar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quasar.js","sourceRoot":"","sources":["../src/quasar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAExF
|
|
1
|
+
{"version":3,"file":"quasar.js","sourceRoot":"","sources":["../src/quasar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAExF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,IAAwB,EACxB,QAA2B,EAC3B,IAAY,EACZ,YAA4C;IAE5C,OAAO,oBAAoB,CAAC;QAC3B,GAAG,EAAE,SAAS;QACd,IAAI;QACJ,QAAQ;QACR,IAAI;QACJ,YAAY;QACZ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC;KACjE,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/replay.d.ts
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
*/
|
|
13
13
|
export interface AssertionReplayStore {
|
|
14
14
|
/**
|
|
15
|
-
* Remember `assertionId` until `expiresAt` (epoch seconds)
|
|
15
|
+
* Remember `assertionId` until `expiresAt` (epoch seconds) — the
|
|
16
|
+
* `rememberUntil` of a validated assertion, which already counts the clock
|
|
17
|
+
* skew it was accepted with.
|
|
16
18
|
*
|
|
17
19
|
* Answers `true` when this is the first time, `false` when the assertion
|
|
18
20
|
* has already been used. Implementations must decide that atomically:
|
package/dist/replay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,MAAM,WAAW,oBAAoB;IACpC;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AAED;;;;;;GAMG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;;IAGhE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWxE;AAED,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IACjC,8EAA8E;IAC9E,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtE;AAMD,MAAM,MAAM,mBAAmB,GAC5B,iBAAiB,GACjB,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IAClC,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,qBAAa,yBAA0B,YAAW,oBAAoB;;gBAKzD,MAAM,EAAE,mBAAmB,EAAE,OAAO,GAAE,kBAAuB;IAKnE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAyBxE;AAED,wCAAwC;AACxC,eAAO,MAAM,YAAY;IACxB,gEAAgE;cACtD,MAAM,oBAAoB;IAIpC;;;OAGG;mBACY;QACd,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAAC;QACzC,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,MAAM,oBAAoB;CAe9B,CAAC"}
|
package/dist/replay.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* soon as the assertion it names could no longer have been accepted anyway.
|
|
12
12
|
*/
|
|
13
13
|
import { quasarConnection } from "./quasar.js";
|
|
14
|
+
import { hasCommands } from "./vendor/quasarConnection.js";
|
|
14
15
|
/**
|
|
15
16
|
* Remembers in this process's memory.
|
|
16
17
|
*
|
|
@@ -34,6 +35,9 @@ export class MemoryAssertionReplayStore {
|
|
|
34
35
|
return true;
|
|
35
36
|
}
|
|
36
37
|
}
|
|
38
|
+
function isReplayRedisClient(value) {
|
|
39
|
+
return hasCommands(value, ["set"]);
|
|
40
|
+
}
|
|
37
41
|
/**
|
|
38
42
|
* Remembers in Redis, so every replica refuses the assertion the first one
|
|
39
43
|
* accepted.
|
|
@@ -51,8 +55,9 @@ export class RedisAssertionReplayStore {
|
|
|
51
55
|
}
|
|
52
56
|
async remember(assertionId, expiresAt) {
|
|
53
57
|
const client = await this.#client();
|
|
54
|
-
//
|
|
55
|
-
//
|
|
58
|
+
// `expiresAt` already covers the clock skew the validation allowed. The
|
|
59
|
+
// extra minute absorbs clock differences between the replica that
|
|
60
|
+
// stores the key and the one a replay lands on.
|
|
56
61
|
const ttl = Math.max(1, Math.ceil(expiresAt - Math.floor(Date.now() / 1000)) + 60);
|
|
57
62
|
const stored = await client.set(`${this.#prefix}${assertionId}`, "1", "EX", ttl, "NX");
|
|
58
63
|
return stored !== null && stored !== undefined;
|
|
@@ -73,9 +78,10 @@ export const replayStores = {
|
|
|
73
78
|
* of a `@c9up/quasar` connection.
|
|
74
79
|
*/
|
|
75
80
|
redis(options) {
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
81
|
+
const { connection } = options;
|
|
82
|
+
const client = typeof connection === "string"
|
|
83
|
+
? () => quasarConnection(connection, ["set"], "the assertion replay store", isReplayRedisClient)
|
|
84
|
+
: connection;
|
|
79
85
|
return () => new RedisAssertionReplayStore(client, { prefix: options.prefix });
|
|
80
86
|
},
|
|
81
87
|
};
|
package/dist/replay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAgB3D;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IAC7B,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,SAAiB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,uEAAuE;QACvE,mCAAmC;QACnC,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,MAAM,IAAI,GAAG;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AAQD,SAAS,mBAAmB,CAAC,KAAc;IAC1C,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,OAAO,yBAAyB;IAC5B,OAAO,CAAsB;IAC7B,OAAO,CAAS;IACzB,SAAS,CAAyC;IAElD,YAAY,MAA2B,EAAE,UAA8B,EAAE;QACxE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,yBAAyB,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,SAAiB;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,wEAAwE;QACxE,kEAAkE;QAClE,gDAAgD;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CACnB,CAAC,EACD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CACzD,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC9B,GAAG,IAAI,CAAC,OAAO,GAAG,WAAW,EAAE,EAC/B,GAAG,EACH,IAAI,EACJ,GAAG,EACH,IAAI,CACJ,CAAC;QACF,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC;IAChD,CAAC;IAED,OAAO;QACN,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CACjC,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAClE,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;CACD;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,gEAAgE;IAChE,MAAM;QACL,OAAO,GAAG,EAAE,CAAC,IAAI,0BAA0B,EAAE,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAGL;QACA,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAC/B,MAAM,MAAM,GACX,OAAO,UAAU,KAAK,QAAQ;YAC7B,CAAC,CAAC,GAAG,EAAE,CACL,gBAAgB,CACf,UAAU,EACV,CAAC,KAAK,CAAC,EACP,4BAA4B,EAC5B,mBAAmB,CACnB;YACH,CAAC,CAAC,UAAU,CAAC;QACf,OAAO,GAAG,EAAE,CACX,IAAI,yBAAyB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;CACD,CAAC"}
|