@seamless-auth/types 0.16.0 → 0.18.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/CHANGELOG.md +50 -0
- package/dist/schemas/systemConfig/schema.d.ts +10 -0
- package/dist/schemas/systemConfig/schema.d.ts.map +1 -1
- package/dist/schemas/systemConfig/schema.js +51 -0
- package/dist/schemas/systemConfig/schema.js.map +1 -1
- package/package.json +1 -1
- package/src/schemas/systemConfig/schema.ts +59 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
# @seamless-auth/types
|
|
2
2
|
|
|
3
|
+
## 0.18.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 40eb9c5: Add `magic_link_redirect_uris` to the system config.
|
|
8
|
+
|
|
9
|
+
An exact-match allowlist of destinations a magic link may be sent to, empty by
|
|
10
|
+
default. `seamless-auth-api` validates a requested destination against `origins`
|
|
11
|
+
today, which covers a target whose host is already a WebAuthn origin and cannot
|
|
12
|
+
express the two cases that need this: a custom application scheme such as
|
|
13
|
+
`myapp://auth`, and a universal link on a host that should not also be a WebAuthn
|
|
14
|
+
origin.
|
|
15
|
+
|
|
16
|
+
Exact match rather than origin comparison, because neither of those has an origin
|
|
17
|
+
worth comparing. Empty by default, so a deployment that sets nothing keeps comparing
|
|
18
|
+
against `origins` exactly as it does now.
|
|
19
|
+
|
|
20
|
+
Also exports `RedirectTargetSchema`, which is what entries are validated with, and
|
|
21
|
+
which is stricter than `z.url()` on purpose. `z.url()` accepts anything the URL parser
|
|
22
|
+
does, including `javascript:alert(1)` and `data:text/html,...`. A magic link
|
|
23
|
+
destination is rendered as an href in an email, so one of those stored in config would
|
|
24
|
+
be a script-execution sink reachable through the admin system-config API. The
|
|
25
|
+
`javascript:`, `data:`, `vbscript:`, `file:`, `blob:` and `about:` schemes are refused,
|
|
26
|
+
and everything else including arbitrary application schemes is allowed, since an
|
|
27
|
+
allowlist of known-good schemes could not express the case this exists for.
|
|
28
|
+
|
|
29
|
+
`SystemConfigPatchSchema` takes the field too, so the guard applies to the admin write
|
|
30
|
+
path and not only to what a server seeds at boot.
|
|
31
|
+
|
|
32
|
+
## 0.17.0
|
|
33
|
+
|
|
34
|
+
### Minor Changes
|
|
35
|
+
|
|
36
|
+
- b5b056b: Add `max_concurrent_sessions` to the system configuration.
|
|
37
|
+
|
|
38
|
+
How many sessions one user may hold at once. `null` means no limit, and that is
|
|
39
|
+
the default, so a deployment that predates the key keeps behaving exactly as it
|
|
40
|
+
does today.
|
|
41
|
+
|
|
42
|
+
`null` rather than `0` for unlimited: zero would otherwise read as "no sessions
|
|
43
|
+
allowed", which is a plausible way for someone to try to remove a cap and lock
|
|
44
|
+
every user out. The schema refuses zero and any negative or fractional value, on
|
|
45
|
+
both the full config and a patch.
|
|
46
|
+
|
|
47
|
+
The server side of this is NIST 800-53 AC-10, concurrent session control. It is
|
|
48
|
+
also an operational concern wherever workstations are shared, since an unbounded
|
|
49
|
+
session count leaves sessions alive on machines a user has walked away from.
|
|
50
|
+
|
|
51
|
+
This publishes the key. Enforcing it is the consuming server's job.
|
|
52
|
+
|
|
3
53
|
## 0.16.0
|
|
4
54
|
|
|
5
55
|
### Minor Changes
|
|
@@ -7,6 +7,8 @@ export declare const LoginMethodSchema: z.ZodEnum<{
|
|
|
7
7
|
oauth: "oauth";
|
|
8
8
|
}>;
|
|
9
9
|
export type LoginMethod = z.infer<typeof LoginMethodSchema>;
|
|
10
|
+
export declare const RedirectTargetSchema: z.ZodURL;
|
|
11
|
+
export type RedirectTarget = z.infer<typeof RedirectTargetSchema>;
|
|
10
12
|
export declare const OAuthProviderIdSchema: z.ZodString;
|
|
11
13
|
export type OAuthProviderId = z.infer<typeof OAuthProviderIdSchema>;
|
|
12
14
|
export declare const OAuthProviderConfigSchema: z.ZodObject<{
|
|
@@ -178,11 +180,13 @@ export declare const SystemConfigSchema: z.ZodObject<{
|
|
|
178
180
|
access_token_ttl: z.ZodString;
|
|
179
181
|
session_idle_ttl: z.ZodDefault<z.ZodString>;
|
|
180
182
|
refresh_token_ttl: z.ZodString;
|
|
183
|
+
max_concurrent_sessions: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
181
184
|
rate_limit: z.ZodNumber;
|
|
182
185
|
delay_after: z.ZodNumber;
|
|
183
186
|
rpid: z.ZodString;
|
|
184
187
|
origins: z.ZodArray<z.ZodURL>;
|
|
185
188
|
frontend_url: z.ZodOptional<z.ZodURL>;
|
|
189
|
+
magic_link_redirect_uris: z.ZodDefault<z.ZodArray<z.ZodURL>>;
|
|
186
190
|
}, z.core.$strip>;
|
|
187
191
|
export type SystemConfig = z.infer<typeof SystemConfigSchema>;
|
|
188
192
|
export declare const SystemConfigPatchSchema: z.ZodObject<{
|
|
@@ -253,10 +257,12 @@ export declare const SystemConfigPatchSchema: z.ZodObject<{
|
|
|
253
257
|
access_token_ttl: z.ZodOptional<z.ZodString>;
|
|
254
258
|
session_idle_ttl: z.ZodOptional<z.ZodString>;
|
|
255
259
|
refresh_token_ttl: z.ZodOptional<z.ZodString>;
|
|
260
|
+
max_concurrent_sessions: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
256
261
|
rate_limit: z.ZodOptional<z.ZodNumber>;
|
|
257
262
|
delay_after: z.ZodOptional<z.ZodNumber>;
|
|
258
263
|
rpid: z.ZodOptional<z.ZodString>;
|
|
259
264
|
origins: z.ZodOptional<z.ZodArray<z.ZodURL>>;
|
|
265
|
+
magic_link_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodURL>>;
|
|
260
266
|
}, z.core.$strict>;
|
|
261
267
|
export type SystemConfigPatch = z.infer<typeof SystemConfigPatchSchema>;
|
|
262
268
|
/**
|
|
@@ -331,10 +337,12 @@ export declare function createPatchSystemConfigSchema(existing: SystemConfig): z
|
|
|
331
337
|
access_token_ttl: z.ZodOptional<z.ZodString>;
|
|
332
338
|
session_idle_ttl: z.ZodOptional<z.ZodString>;
|
|
333
339
|
refresh_token_ttl: z.ZodOptional<z.ZodString>;
|
|
340
|
+
max_concurrent_sessions: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
334
341
|
rate_limit: z.ZodOptional<z.ZodNumber>;
|
|
335
342
|
delay_after: z.ZodOptional<z.ZodNumber>;
|
|
336
343
|
rpid: z.ZodOptional<z.ZodString>;
|
|
337
344
|
origins: z.ZodOptional<z.ZodArray<z.ZodURL>>;
|
|
345
|
+
magic_link_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodURL>>;
|
|
338
346
|
}, z.core.$strict>;
|
|
339
347
|
export declare const OAuthProviderCreateSchema: z.ZodObject<{
|
|
340
348
|
id: z.ZodString;
|
|
@@ -516,11 +524,13 @@ export declare const GetSystemConfigResponseSchema: z.ZodObject<{
|
|
|
516
524
|
access_token_ttl: z.ZodString;
|
|
517
525
|
session_idle_ttl: z.ZodDefault<z.ZodString>;
|
|
518
526
|
refresh_token_ttl: z.ZodString;
|
|
527
|
+
max_concurrent_sessions: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
519
528
|
rate_limit: z.ZodNumber;
|
|
520
529
|
delay_after: z.ZodNumber;
|
|
521
530
|
rpid: z.ZodString;
|
|
522
531
|
origins: z.ZodArray<z.ZodURL>;
|
|
523
532
|
frontend_url: z.ZodOptional<z.ZodURL>;
|
|
533
|
+
magic_link_redirect_uris: z.ZodDefault<z.ZodArray<z.ZodURL>>;
|
|
524
534
|
}, z.core.$strip>;
|
|
525
535
|
export type GetSystemConfigResponse = z.infer<typeof GetSystemConfigResponseSchema>;
|
|
526
536
|
export declare const UpdateSystemConfigResponseSchema: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/systemConfig/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/systemConfig/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,32 @@ export const LoginMethodSchema = z.enum([
|
|
|
7
7
|
'phone_otp',
|
|
8
8
|
'oauth',
|
|
9
9
|
]);
|
|
10
|
+
/**
|
|
11
|
+
* Schemes that must never be a redirect target.
|
|
12
|
+
*
|
|
13
|
+
* `z.url()` accepts anything the URL parser does, which includes
|
|
14
|
+
* `javascript:alert(1)` and `data:text/html,...`. A magic link target is rendered as
|
|
15
|
+
* an href in an email, so one of those stored in config would be a script-execution
|
|
16
|
+
* sink reachable through the admin API. Denied rather than allowlisted because the
|
|
17
|
+
* point of this list is to permit arbitrary application schemes (`myapp://`), which
|
|
18
|
+
* an allowlist of known-good schemes could not express.
|
|
19
|
+
*/
|
|
20
|
+
const DENIED_REDIRECT_PROTOCOLS = new Set([
|
|
21
|
+
'javascript:',
|
|
22
|
+
'data:',
|
|
23
|
+
'vbscript:',
|
|
24
|
+
'file:',
|
|
25
|
+
'blob:',
|
|
26
|
+
'about:',
|
|
27
|
+
]);
|
|
28
|
+
export const RedirectTargetSchema = z.url().refine((value) => {
|
|
29
|
+
try {
|
|
30
|
+
return !DENIED_REDIRECT_PROTOCOLS.has(new URL(value).protocol.toLowerCase());
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}, { message: 'Redirect target uses a scheme that cannot be a link destination' });
|
|
10
36
|
export const OAuthProviderIdSchema = z.string().regex(/^[a-z0-9-]{2,40}$/);
|
|
11
37
|
export const OAuthProviderConfigSchema = z.object({
|
|
12
38
|
id: OAuthProviderIdSchema,
|
|
@@ -155,11 +181,34 @@ export const SystemConfigSchema = z.object({
|
|
|
155
181
|
*/
|
|
156
182
|
session_idle_ttl: DurationSchema.default('8h'),
|
|
157
183
|
refresh_token_ttl: z.string().regex(/^\d+[smhd]$/),
|
|
184
|
+
/**
|
|
185
|
+
* How many sessions one user may hold at once, or `null` for no limit.
|
|
186
|
+
*
|
|
187
|
+
* `null` rather than `0` for unlimited, so a deployment cannot express "no
|
|
188
|
+
* sessions allowed" by accident and the absence of a limit reads as an absence
|
|
189
|
+
* rather than as a magic number. Defaults to `null`, which is what every
|
|
190
|
+
* deployment predating this key already behaves like.
|
|
191
|
+
*
|
|
192
|
+
* NIST 800-53 AC-10. Also an operational concern wherever workstations are
|
|
193
|
+
* shared, since an unbounded count leaves sessions alive on machines the user
|
|
194
|
+
* has walked away from.
|
|
195
|
+
*/
|
|
196
|
+
max_concurrent_sessions: z.number().int().positive().nullable().default(null),
|
|
158
197
|
rate_limit: z.number().int().positive(),
|
|
159
198
|
delay_after: z.number().int().nonnegative(),
|
|
160
199
|
rpid: z.string().min(1),
|
|
161
200
|
origins: z.array(z.url()).min(1),
|
|
162
201
|
frontend_url: z.url().optional(),
|
|
202
|
+
/**
|
|
203
|
+
* Exact-match destinations a magic link may be sent to, beyond what `origins`
|
|
204
|
+
* already covers. Empty by default, which leaves the server comparing a requested
|
|
205
|
+
* target against `origins` as it did before this key existed.
|
|
206
|
+
*
|
|
207
|
+
* Exact match rather than origin comparison, because the cases this exists for have
|
|
208
|
+
* no origin to compare: a custom scheme such as `myapp://auth`, or a universal link
|
|
209
|
+
* on a host that should not also be a WebAuthn origin.
|
|
210
|
+
*/
|
|
211
|
+
magic_link_redirect_uris: z.array(RedirectTargetSchema).default([]),
|
|
163
212
|
});
|
|
164
213
|
export const SystemConfigPatchSchema = z
|
|
165
214
|
.object({
|
|
@@ -174,10 +223,12 @@ export const SystemConfigPatchSchema = z
|
|
|
174
223
|
access_token_ttl: SystemConfigSchema.shape.access_token_ttl.optional(),
|
|
175
224
|
session_idle_ttl: DurationSchema.optional(),
|
|
176
225
|
refresh_token_ttl: SystemConfigSchema.shape.refresh_token_ttl.optional(),
|
|
226
|
+
max_concurrent_sessions: z.number().int().positive().nullable().optional(),
|
|
177
227
|
rate_limit: SystemConfigSchema.shape.rate_limit.optional(),
|
|
178
228
|
delay_after: SystemConfigSchema.shape.delay_after.optional(),
|
|
179
229
|
rpid: SystemConfigSchema.shape.rpid.optional(),
|
|
180
230
|
origins: SystemConfigSchema.shape.origins.optional(),
|
|
231
|
+
magic_link_redirect_uris: z.array(RedirectTargetSchema).optional(),
|
|
181
232
|
})
|
|
182
233
|
.strict();
|
|
183
234
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/schemas/systemConfig/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/schemas/systemConfig/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,SAAS;IACT,YAAY;IACZ,WAAW;IACX,WAAW;IACX,OAAO;CACR,CAAC,CAAC;AAIH;;;;;;;;;GASG;AACH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,aAAa;IACb,OAAO;IACP,WAAW;IACX,OAAO;IACP,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAChD,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,CAAC;QACH,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EACD,EAAE,OAAO,EAAE,iEAAiE,EAAE,CAC/E,CAAC;AAIF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAI3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,EAAE,EAAE,qBAAqB;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,sEAAsE;IACtE,qCAAqC;IACrC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE;IACzB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACxD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACzE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjD,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9D,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpD,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACpB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,EAAE;IACf,aAAa,EAAE,EAAE,GAAG,EAAE;IACtB,cAAc,EAAE,EAAE,GAAG,EAAE;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAIjG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAMpE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;AAI7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,mCAAmC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9D;;;;;;;;;;;OAWG;IACH,gBAAgB,EAAE,4BAA4B,CAAC,OAAO,CAAC,UAAU,CAAC;IAClE;;;;;;;;;OASG;IACH,WAAW,EAAE,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC;IACpD;;;;;;;OAOG;IACH,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrD;;;;;;;;;;;OAWG;IACH,cAAc,EAAE,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC;IAC1D;;;;;;;;OAQG;IACH,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,4FAA4F;IAC5F,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAChD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,UAAU;IAC5B,WAAW,EAAE,MAAM;IACnB,yBAAyB,EAAE,KAAK;IAChC,cAAc,EAAE,OAAO;IACvB,eAAe,EAAE,EAAE;IACnB,cAAc,EAAE,EAAE;CACV,CAAC;AAEX,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,8BAA8B,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/D,cAAc,EAAE,mBAAmB,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACjE,iFAAiF;IACjF,+EAA+E;IAC/E,oBAAoB,EAAE,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3D,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC,CACpC;IAED,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;IAEjD;;;;;;OAMG;IACH,gBAAgB,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;IAElD;;;;;;;;;;;OAWG;IACH,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE7E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAE3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhC,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAEhC;;;;;;;;OAQG;IACH,wBAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACpE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACtD,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;IAChE,eAAe,EAAE,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE;IACpE,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;IAChE,8BAA8B,EAC5B,kBAAkB,CAAC,KAAK,CAAC,8BAA8B,CAAC,QAAQ,EAAE;IACpE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,QAAQ,EAAE;IAC9D,cAAc,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC9C,oBAAoB,EAAE,yBAAyB,CAAC,QAAQ,EAAE;IAC1D,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE;IACtE,gBAAgB,EAAE,cAAc,CAAC,QAAQ,EAAE;IAC3C,iBAAiB,EAAE,kBAAkB,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE;IACxE,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1E,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC1D,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE;IAC5D,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;IAC9C,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;IACpD,wBAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAsB;IAClE,OAAO,uBAAuB,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,eAAe,CAAC;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC;QAEjE,MAAM,eAAe,GACnB,IAAI,CAAC,eAAe,KAAK,SAAS;YAClC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/E,IAAI,eAAe,EAAE,CAAC;YACpB,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,iBAAiB,CAAC;gBACzB,OAAO,EAAE,8CAA8C;aACxD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,eAAe,CAAC;gBACvB,OAAO,EAAE,iDAAiD;aAC3D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AAInE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,EAAE,EAAE,qBAAqB;CAC1B,CAAC,CAAC;AAIH,kFAAkF;AAClF,kFAAkF;AAClF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;KAClF,OAAO,EAAE;KACT,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;CAC9C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,yBAAyB;CACpC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAC;AAIhE,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACjC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,CAAC,CAAC;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -11,6 +11,38 @@ export const LoginMethodSchema = z.enum([
|
|
|
11
11
|
|
|
12
12
|
export type LoginMethod = z.infer<typeof LoginMethodSchema>;
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Schemes that must never be a redirect target.
|
|
16
|
+
*
|
|
17
|
+
* `z.url()` accepts anything the URL parser does, which includes
|
|
18
|
+
* `javascript:alert(1)` and `data:text/html,...`. A magic link target is rendered as
|
|
19
|
+
* an href in an email, so one of those stored in config would be a script-execution
|
|
20
|
+
* sink reachable through the admin API. Denied rather than allowlisted because the
|
|
21
|
+
* point of this list is to permit arbitrary application schemes (`myapp://`), which
|
|
22
|
+
* an allowlist of known-good schemes could not express.
|
|
23
|
+
*/
|
|
24
|
+
const DENIED_REDIRECT_PROTOCOLS = new Set([
|
|
25
|
+
'javascript:',
|
|
26
|
+
'data:',
|
|
27
|
+
'vbscript:',
|
|
28
|
+
'file:',
|
|
29
|
+
'blob:',
|
|
30
|
+
'about:',
|
|
31
|
+
]);
|
|
32
|
+
|
|
33
|
+
export const RedirectTargetSchema = z.url().refine(
|
|
34
|
+
(value) => {
|
|
35
|
+
try {
|
|
36
|
+
return !DENIED_REDIRECT_PROTOCOLS.has(new URL(value).protocol.toLowerCase());
|
|
37
|
+
} catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{ message: 'Redirect target uses a scheme that cannot be a link destination' },
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
export type RedirectTarget = z.infer<typeof RedirectTargetSchema>;
|
|
45
|
+
|
|
14
46
|
export const OAuthProviderIdSchema = z.string().regex(/^[a-z0-9-]{2,40}$/);
|
|
15
47
|
|
|
16
48
|
export type OAuthProviderId = z.infer<typeof OAuthProviderIdSchema>;
|
|
@@ -191,6 +223,20 @@ export const SystemConfigSchema = z.object({
|
|
|
191
223
|
session_idle_ttl: DurationSchema.default('8h'),
|
|
192
224
|
refresh_token_ttl: z.string().regex(/^\d+[smhd]$/),
|
|
193
225
|
|
|
226
|
+
/**
|
|
227
|
+
* How many sessions one user may hold at once, or `null` for no limit.
|
|
228
|
+
*
|
|
229
|
+
* `null` rather than `0` for unlimited, so a deployment cannot express "no
|
|
230
|
+
* sessions allowed" by accident and the absence of a limit reads as an absence
|
|
231
|
+
* rather than as a magic number. Defaults to `null`, which is what every
|
|
232
|
+
* deployment predating this key already behaves like.
|
|
233
|
+
*
|
|
234
|
+
* NIST 800-53 AC-10. Also an operational concern wherever workstations are
|
|
235
|
+
* shared, since an unbounded count leaves sessions alive on machines the user
|
|
236
|
+
* has walked away from.
|
|
237
|
+
*/
|
|
238
|
+
max_concurrent_sessions: z.number().int().positive().nullable().default(null),
|
|
239
|
+
|
|
194
240
|
rate_limit: z.number().int().positive(),
|
|
195
241
|
delay_after: z.number().int().nonnegative(),
|
|
196
242
|
|
|
@@ -198,6 +244,17 @@ export const SystemConfigSchema = z.object({
|
|
|
198
244
|
origins: z.array(z.url()).min(1),
|
|
199
245
|
|
|
200
246
|
frontend_url: z.url().optional(),
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Exact-match destinations a magic link may be sent to, beyond what `origins`
|
|
250
|
+
* already covers. Empty by default, which leaves the server comparing a requested
|
|
251
|
+
* target against `origins` as it did before this key existed.
|
|
252
|
+
*
|
|
253
|
+
* Exact match rather than origin comparison, because the cases this exists for have
|
|
254
|
+
* no origin to compare: a custom scheme such as `myapp://auth`, or a universal link
|
|
255
|
+
* on a host that should not also be a WebAuthn origin.
|
|
256
|
+
*/
|
|
257
|
+
magic_link_redirect_uris: z.array(RedirectTargetSchema).default([]),
|
|
201
258
|
});
|
|
202
259
|
|
|
203
260
|
export type SystemConfig = z.infer<typeof SystemConfigSchema>;
|
|
@@ -216,10 +273,12 @@ export const SystemConfigPatchSchema = z
|
|
|
216
273
|
access_token_ttl: SystemConfigSchema.shape.access_token_ttl.optional(),
|
|
217
274
|
session_idle_ttl: DurationSchema.optional(),
|
|
218
275
|
refresh_token_ttl: SystemConfigSchema.shape.refresh_token_ttl.optional(),
|
|
276
|
+
max_concurrent_sessions: z.number().int().positive().nullable().optional(),
|
|
219
277
|
rate_limit: SystemConfigSchema.shape.rate_limit.optional(),
|
|
220
278
|
delay_after: SystemConfigSchema.shape.delay_after.optional(),
|
|
221
279
|
rpid: SystemConfigSchema.shape.rpid.optional(),
|
|
222
280
|
origins: SystemConfigSchema.shape.origins.optional(),
|
|
281
|
+
magic_link_redirect_uris: z.array(RedirectTargetSchema).optional(),
|
|
223
282
|
})
|
|
224
283
|
.strict();
|
|
225
284
|
|