@oneunit/auth 2.0.0 → 2.0.1
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/ARCHITECTURE.md +119 -15
- package/CHANGELOG.md +82 -0
- package/README.md +52 -1
- package/dist/auth.d.ts +22 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +85 -4
- package/dist/auth.js.map +1 -1
- package/dist/password.d.ts.map +1 -1
- package/dist/password.js +96 -7
- package/dist/password.js.map +1 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +130 -6
- package/dist/providers.js.map +1 -1
- package/dist/types.d.ts +61 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/auth.ts +98 -4
- package/src/password.ts +117 -7
- package/src/providers.ts +143 -6
- package/src/types.ts +62 -0
package/ARCHITECTURE.md
CHANGED
|
@@ -149,6 +149,57 @@ logout that never happened. For logout the two are interchangeable — both remo
|
|
|
149
149
|
one id — so a `consume`-only store supports both operations. Rotation is stricter:
|
|
150
150
|
having reached that path, `consume` is already absent, so `revoke` is required.
|
|
151
151
|
|
|
152
|
+
### What revocation does and does not cover
|
|
153
|
+
|
|
154
|
+
A refresh token is a revocable record. An access token is not — it is a signed
|
|
155
|
+
assertion that is checked and discarded, so nothing can un-sign it. That
|
|
156
|
+
distinction is worth being explicit about, because it determines what an
|
|
157
|
+
operator can promise when they say "log this user out".
|
|
158
|
+
|
|
159
|
+
| Action | Effect on a refresh token | Effect on an already-issued access token |
|
|
160
|
+
| :--- | :--- | :--- |
|
|
161
|
+
| `logout(refreshToken)` | Revoked immediately | Still valid until it expires |
|
|
162
|
+
| `revokeAllSessions(userId)` | All revoked immediately | All rejected immediately |
|
|
163
|
+
| Role or permission change | Refreshed tokens pick up the change on next `refresh()` | Still carry the old `roles` and `permissions` until expiry |
|
|
164
|
+
| `authTime` / "log out everywhere" | — | — |
|
|
165
|
+
|
|
166
|
+
So the row that surprises people is the third: **RBAC changes are not
|
|
167
|
+
retroactive.** An access token's `roles` and `permissions` are a snapshot taken
|
|
168
|
+
at login. Removing a role from a user record does not strip it from tokens
|
|
169
|
+
already in the wild, and `permissions` is compared by `rbac.can()` against those
|
|
170
|
+
claims, so the stale grant still authorizes. The window is bounded by
|
|
171
|
+
`accessTokenTtl`; the fix for a tighter bound is a shorter TTL, not a different
|
|
172
|
+
call.
|
|
173
|
+
|
|
174
|
+
`revokeAllSessions()` closes that window, which is what `SessionStore` is for.
|
|
175
|
+
It stamps a session version into each token and compares on every `verify()`
|
|
176
|
+
and `refresh()`:
|
|
177
|
+
|
|
178
|
+
```js
|
|
179
|
+
const auth = createAuth({
|
|
180
|
+
secret,
|
|
181
|
+
sessionStore: {
|
|
182
|
+
getVersion: (userId) => db.getVersion(userId) ?? 0,
|
|
183
|
+
bumpVersion: (userId) => db.incrementVersion(userId),
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
await auth.revokeAllSessions(userId); // access + refresh, everywhere
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Two things to know before configuring one:
|
|
191
|
+
|
|
192
|
+
- It costs **one store read per verification**, on the request path. That is why
|
|
193
|
+
it is opt-in rather than always on, and why for a stateless deployment the
|
|
194
|
+
usual answer is a short `accessTokenTtl` instead.
|
|
195
|
+
- A token minted before a `sessionStore` was configured carries no `sv` and is
|
|
196
|
+
treated as version `0`, so adding one does not invalidate sessions that are
|
|
197
|
+
already in flight. Bump the version to `1` if you want a clean cutover.
|
|
198
|
+
|
|
199
|
+
Without a `sessionStore`, `revokeAllSessions()` returns `false`. It does not
|
|
200
|
+
throw and it does not pretend to have worked, because a logout that silently
|
|
201
|
+
does nothing is the failure this package tries hardest to avoid.
|
|
202
|
+
|
|
152
203
|
## Trust boundaries
|
|
153
204
|
|
|
154
205
|
The package draws a hard line between values it derived and values it was
|
|
@@ -276,9 +327,39 @@ scrypt$N$r$p$keyLength$salt$hash
|
|
|
276
327
|
user store implements `updatePassword`.
|
|
277
328
|
|
|
278
329
|
Verification is constant-time via `timingSafeEqual`, and returns `false` rather
|
|
279
|
-
than throwing for any malformed or unparsable hash.
|
|
280
|
-
|
|
281
|
-
|
|
330
|
+
than throwing for any malformed or unparsable hash.
|
|
331
|
+
|
|
332
|
+
### Stored parameters are treated as hostile input
|
|
333
|
+
|
|
334
|
+
`N`, `r`, `p`, and `keyLength` travel inside the hash, which means they are
|
|
335
|
+
attacker-influenced anywhere an attacker can write a user row: a SQL injection
|
|
336
|
+
somewhere else, a restored backup, a bulk import, a support tool. They are
|
|
337
|
+
range-checked before scrypt is called, on both the hashing and the verifying
|
|
338
|
+
path.
|
|
339
|
+
|
|
340
|
+
This matters because Node's `maxmem` guard only covers the `128 * N * r` memory
|
|
341
|
+
block. `keyLength` and `p` sit outside it, so before these checks a single
|
|
342
|
+
stored hash of `scrypt$16384$8$1$1073741824$...` cost 25.3 seconds of CPU on a
|
|
343
|
+
default configuration — repeatable, on every login attempt, from one string.
|
|
344
|
+
|
|
345
|
+
| Parameter | Constraint |
|
|
346
|
+
| :--- | :--- |
|
|
347
|
+
| `N` (`cost`) | power of two, `[2, 2^20]` |
|
|
348
|
+
| `r` (`blockSize`) | `[1, 32]` |
|
|
349
|
+
| `N * r` | `[2^12, 196608]` — 24MB of working memory |
|
|
350
|
+
| `p` (`parallelism`) | `[1, 16]` |
|
|
351
|
+
| `keyLength` | `[16, 128]` |
|
|
352
|
+
| `saltBytes` | `[8, 64]` |
|
|
353
|
+
|
|
354
|
+
`N * r` is capped rather than `N` alone, because memory is the product, and the
|
|
355
|
+
ceiling is set below Node's 32MB limit so a hash the library accepts is one the
|
|
356
|
+
platform can actually run. `N * r` is floored as well: a stored hash asking for
|
|
357
|
+
trivial work (`N=2, r=1`) verifies instantly, which is a brute-force shortcut
|
|
358
|
+
rather than a valid hash.
|
|
359
|
+
|
|
360
|
+
A hash outside these bounds is reported as malformed and never computed.
|
|
361
|
+
`hashPassword()` throws `ValidationError` for the same reason, instead of
|
|
362
|
+
letting OpenSSL's error escape.
|
|
282
363
|
|
|
283
364
|
## OAuth
|
|
284
365
|
|
|
@@ -315,18 +396,35 @@ the access token, so the **provider itself** verifies the identity. Those are
|
|
|
315
396
|
server-verified by construction.
|
|
316
397
|
|
|
317
398
|
`apple` is the exception: Sign in with Apple returns the profile inside the
|
|
318
|
-
`id_token` from the code exchange, so the claims are read locally.
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
399
|
+
`id_token` from the code exchange, so the claims are read locally. The token is
|
|
400
|
+
verified before any claim is read out of it:
|
|
401
|
+
|
|
402
|
+
- the **RS256 signature** is checked against Apple's published JWKS, with the
|
|
403
|
+
algorithm pinned to `RS256` and a `kid` required;
|
|
404
|
+
- `iss`, `aud` (against your `clientId`), and `exp` are then checked, in that
|
|
405
|
+
order, and a mismatch throws `ProviderError`.
|
|
406
|
+
|
|
407
|
+
The order matters. Claims inside a JWT are unauthenticated until the signature
|
|
408
|
+
is checked, so validating `iss` or `aud` first only proves the payload says what
|
|
409
|
+
the attacker wants it to say.
|
|
410
|
+
|
|
411
|
+
Keys are fetched from `https://appleid.apple.com/auth/keys` and cached for an
|
|
412
|
+
hour. An unknown `kid` triggers one refetch before failing, which is what makes
|
|
413
|
+
a routine Apple key rotation invisible to callers. You can supply keys yourself
|
|
414
|
+
if you already maintain a cache, or if you run in an environment without
|
|
415
|
+
outbound network access:
|
|
416
|
+
|
|
417
|
+
```js
|
|
418
|
+
// Use your own key source instead of Apple's endpoint.
|
|
419
|
+
const apple = { clientId, jwks: () => myKeyCache.get("apple") };
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
`exp` is **required**. A token without a numeric `exp` is rejected rather than
|
|
423
|
+
treated as never expiring.
|
|
424
|
+
|
|
425
|
+
> `verifyIdTokenSignature: false` disables the signature check. It exists for
|
|
426
|
+
> test harnesses. Do not use it in production — without it, anyone who can
|
|
427
|
+
> influence the token response chooses the user.
|
|
330
428
|
|
|
331
429
|
A profile must carry a stable subject id. Without one, the fallback user id
|
|
332
430
|
would be `` `${provider}:${profile.id}` `` and every user of that provider would
|
|
@@ -457,6 +555,12 @@ one, that test should fail.
|
|
|
457
555
|
12. Hostile scrypt parameters return `false` rather than throwing or hanging
|
|
458
556
|
13. RBAC inheritance cycles terminate, and `can()` denies an empty permission list
|
|
459
557
|
14. Extractors and `additionalClaims` cannot set a reserved identity or permission claim
|
|
558
|
+
15. A stored hash cannot make `verifyPassword()` do unbounded work
|
|
559
|
+
16. A refresh token with no `jti` is refused, so every refresh is revocable
|
|
560
|
+
17. The query string is not read for a token unless `query: true`
|
|
561
|
+
18. An Apple `id_token` signature is verified before any claim is read from it
|
|
562
|
+
19. `revokeAllSessions()` stops both `verify()` and `refresh()` for that user
|
|
563
|
+
20. `revokeAllSessions()` returns `false` when no `SessionStore` is configured
|
|
460
564
|
|
|
461
565
|
## Related
|
|
462
566
|
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,88 @@ All notable changes to this package are documented here. The format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses
|
|
5
5
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## 2.0.1
|
|
8
|
+
|
|
9
|
+
Security fixes and session revocation. One breaking change: tokens are no longer
|
|
10
|
+
read from the query string unless you opt in.
|
|
11
|
+
|
|
12
|
+
### Security
|
|
13
|
+
|
|
14
|
+
- **Password hashing parameters taken from a stored hash are now bounded.** The
|
|
15
|
+
`N`, `r`, `p`, and `keyLength` fields are parsed out of the stored hash string,
|
|
16
|
+
so they are attacker-influenced wherever an attacker can write a user row.
|
|
17
|
+
Node's own `maxmem` guard only covers the `128 * N * r` memory block, which
|
|
18
|
+
left the other two unbounded: a single stored hash of
|
|
19
|
+
`scrypt$16384$8$1$1073741824$...` cost **25.3 seconds of CPU** on a default
|
|
20
|
+
configuration, repeatable on every login attempt, for one string of attacker
|
|
21
|
+
input. All four parameters are now range-checked before scrypt runs, on both
|
|
22
|
+
the hashing and the verifying path, and an out-of-range hash is reported as
|
|
23
|
+
malformed instead of computed. `N` must additionally be a power of two and
|
|
24
|
+
`N * r` must fit in 24MB of working memory, so a parameter set the platform
|
|
25
|
+
would reject is refused up front rather than throwing from inside OpenSSL.
|
|
26
|
+
A floor is enforced too: a stored hash asking for trivial work (`N=2, r=1`)
|
|
27
|
+
verifies instantly and is a brute-force shortcut, so it is rejected.
|
|
28
|
+
- **Apple `id_token` signatures are now verified.** The claims in an Apple
|
|
29
|
+
`id_token` are now checked against Apple's published JWKS before anything is
|
|
30
|
+
read out of them. Previously the payload was decoded and trusted, so
|
|
31
|
+
`iss`, `aud`, and `exp` were only as trustworthy as the token's own contents:
|
|
32
|
+
anyone able to influence the token response could choose the subject, the
|
|
33
|
+
audience, and the expiry. Verification pins `RS256` and requires a `kid`, so
|
|
34
|
+
`alg: "none"` and JWT algorithm-confusion are refused. Keys are cached for an
|
|
35
|
+
hour and an unknown `kid` triggers one refetch, so a routine Apple key
|
|
36
|
+
rotation is invisible to callers. `exp` is now required rather than checked
|
|
37
|
+
when present, since a token with no usable `exp` was previously treated as
|
|
38
|
+
never expiring.
|
|
39
|
+
- **Refresh tokens without a `jti` are refused.** `refresh()` only consulted the
|
|
40
|
+
refresh store when the token carried a `jti`, so a token without one skipped
|
|
41
|
+
the store entirely and could never be revoked — it stayed valid until it
|
|
42
|
+
expired and survived logout. `encodeRefreshToken` is a public export, so this
|
|
43
|
+
was reachable by anyone holding the secret. A missing `jti` is now an
|
|
44
|
+
`UnauthorizedError`. Refresh tokens minted by `login()` always have one, so
|
|
45
|
+
this only affects tokens you built yourself.
|
|
46
|
+
- **Tokens are no longer read from the query string by default.**
|
|
47
|
+
`extractToken()` fell through to `?access_token=` or `?token=` on every
|
|
48
|
+
request, putting the token in access logs, proxy logs, browser history, and
|
|
49
|
+
the `Referer` header sent to third parties. Pass `{ query: true }` to restore
|
|
50
|
+
it, for flows that genuinely cannot set a header (EventSource, file
|
|
51
|
+
download). Header and cookie extraction are unchanged and remain the default.
|
|
52
|
+
|
|
53
|
+
### Added
|
|
54
|
+
|
|
55
|
+
- **Session revocation.** Configure a `sessionStore` and tokens carry an `sv`
|
|
56
|
+
claim, so a session can be invalidated before its token expires:
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
const auth = createAuth({
|
|
60
|
+
secret,
|
|
61
|
+
sessionStore: {
|
|
62
|
+
getVersion: (userId) => db.getVersion(userId) ?? 0,
|
|
63
|
+
bumpVersion: (userId) => db.incrementVersion(userId),
|
|
64
|
+
revokeSession: (jti) => db.deleteSession(jti),
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
await auth.revokeAllSessions(userId); // every device
|
|
69
|
+
await auth.revokeSession(jti); // one session
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`refresh()` is covered as well as `verify()`, so a revoked session cannot mint
|
|
73
|
+
a fresh access token. This is opt-in and costs one store read per
|
|
74
|
+
verification; without a `sessionStore`, `revokeAllSessions()` returns `false`
|
|
75
|
+
rather than silently appearing to succeed. Numeric and string user ids
|
|
76
|
+
resolve to the same version.
|
|
77
|
+
|
|
78
|
+
### Changed
|
|
79
|
+
|
|
80
|
+
- `verifyIdTokenSignature`, `jwksUrl`, `jwks`, and `jwksCacheTtlMs` are
|
|
81
|
+
available on the Apple provider for key-cache control. Signature verification
|
|
82
|
+
is on by default; `verifyIdTokenSignature: false` exists for test harnesses
|
|
83
|
+
and should not be used in production.
|
|
84
|
+
- `hashPassword` now throws `ValidationError` for out-of-range parameters
|
|
85
|
+
instead of letting the error escape from OpenSSL.
|
|
86
|
+
- Tests run entirely offline: the Apple suite signs real tokens with a generated
|
|
87
|
+
RSA key pair rather than reaching Apple's JWKS endpoint.
|
|
88
|
+
|
|
7
89
|
## 2.0.0
|
|
8
90
|
|
|
9
91
|
Security hardening. Every breaking change below is a case where the previous
|
package/README.md
CHANGED
|
@@ -184,6 +184,12 @@ if (needsRehash(passwordHash, { cost: 32768 })) {
|
|
|
184
184
|
|
|
185
185
|
With a user store, `auth.register()` and `auth.loginWithPassword()` hash and verify for you.
|
|
186
186
|
|
|
187
|
+
Cost parameters travel inside the hash so they can be raised later, and they are
|
|
188
|
+
range-checked before any work happens — a hash carrying hostile parameters
|
|
189
|
+
returns `false` rather than being computed. See
|
|
190
|
+
[ARCHITECTURE.md](./ARCHITECTURE.md#stored-parameters-are-treated-as-hostile-input)
|
|
191
|
+
for the bounds and why they are needed.
|
|
192
|
+
|
|
187
193
|
```js
|
|
188
194
|
const auth = createAuth({
|
|
189
195
|
secret: process.env.AUTH_SECRET,
|
|
@@ -383,7 +389,16 @@ const { express, fastify, koa, uws } = createAdapters(auth);
|
|
|
383
389
|
const claims = await auth.verifyRequest(req);
|
|
384
390
|
```
|
|
385
391
|
|
|
386
|
-
Tokens are read from `Authorization: Bearer
|
|
392
|
+
Tokens are read from `Authorization: Bearer` or an `access_token` cookie.
|
|
393
|
+
|
|
394
|
+
The query string is **not** read by default. A token in a URL ends up in access
|
|
395
|
+
logs, proxy logs, browser history, and the `Referer` header sent to third
|
|
396
|
+
parties. Opt in per call for flows that cannot set a header, such as an
|
|
397
|
+
`EventSource` or a file download:
|
|
398
|
+
|
|
399
|
+
```js
|
|
400
|
+
await auth.verifyRequest(req, { query: true });
|
|
401
|
+
```
|
|
387
402
|
|
|
388
403
|
You can also extract the bearer token yourself:
|
|
389
404
|
|
|
@@ -439,6 +454,42 @@ single atomic operation (`GETDEL` in Redis, a `DELETE ... RETURNING` in SQL).
|
|
|
439
454
|
report a logout that never happened. A store implementing only `consume()` is
|
|
440
455
|
enough for both rotation and logout.
|
|
441
456
|
|
|
457
|
+
## Sessions and revocation
|
|
458
|
+
|
|
459
|
+
`auth.logout()` revokes one refresh token. It cannot un-sign an access token
|
|
460
|
+
that was already issued — that token stays valid until it expires, and its
|
|
461
|
+
`roles` and `permissions` are a snapshot from login. So a role change is not
|
|
462
|
+
retroactive either.
|
|
463
|
+
|
|
464
|
+
To invalidate a session immediately, everywhere, configure a `sessionStore`.
|
|
465
|
+
Tokens then carry a session version that is checked on every `verify()` and
|
|
466
|
+
`refresh()`:
|
|
467
|
+
|
|
468
|
+
```js
|
|
469
|
+
const auth = createAuth({
|
|
470
|
+
secret,
|
|
471
|
+
sessionStore: {
|
|
472
|
+
getVersion: (userId) => db.getVersion(userId) ?? 0,
|
|
473
|
+
bumpVersion: (userId) => db.incrementVersion(userId),
|
|
474
|
+
},
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
await auth.revokeAllSessions(userId); // every device, access and refresh
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
This costs one store read per verification, which is why it is opt-in. Without
|
|
481
|
+
a `sessionStore`, `revokeAllSessions()` returns `false` rather than appearing
|
|
482
|
+
to succeed. If you would rather stay stateless, set a short `accessTokenTtl` and
|
|
483
|
+
accept the window instead.
|
|
484
|
+
|
|
485
|
+
### Custom session store
|
|
486
|
+
|
|
487
|
+
| Method | Required | Purpose |
|
|
488
|
+
| --- | --- | --- |
|
|
489
|
+
| `getVersion(userId)` | yes | Current version for a user; `undefined` counts as `0` |
|
|
490
|
+
| `bumpVersion(userId)` | for `revokeAllSessions` | Invalidate every session for a user |
|
|
491
|
+
| `revokeSession(jti)` | for `revokeSession` | Invalidate one session by its jti |
|
|
492
|
+
|
|
442
493
|
### Access token claims
|
|
443
494
|
|
|
444
495
|
Permissions in an access token are derived from RBAC roles. A `permissions`
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RBAC } from "./rbac.js";
|
|
2
2
|
import { OAuth } from "./oauth.js";
|
|
3
|
-
import type { AuthHookHandler, AuthHookName, AuthOptions, AuthSubject, ExtractTokenOptions, JwtPayload, JwtSignOptions, JwtVerifyOptions, LoginOptions, LoginResult, OAuthAuthorizeOptions, PasswordOptions, RefreshStore, Secret, UserRecord, UserStore } from "./types.js";
|
|
3
|
+
import type { AuthHookHandler, AuthHookName, AuthOptions, AuthSubject, ExtractTokenOptions, JwtPayload, JwtSignOptions, JwtVerifyOptions, LoginOptions, LoginResult, OAuthAuthorizeOptions, PasswordOptions, RefreshStore, SessionStore, Secret, UserRecord, UserStore } from "./types.js";
|
|
4
4
|
type ClaimExtractor = (user: UserRecord) => unknown;
|
|
5
5
|
export declare class Auth {
|
|
6
6
|
secret: Secret;
|
|
@@ -14,6 +14,7 @@ export declare class Auth {
|
|
|
14
14
|
trustUserPermissions: boolean;
|
|
15
15
|
userStore: UserStore | null;
|
|
16
16
|
refreshStore: RefreshStore;
|
|
17
|
+
sessionStore?: SessionStore;
|
|
17
18
|
onLogin: AuthOptions["onLogin"];
|
|
18
19
|
onLink: AuthOptions["onLink"];
|
|
19
20
|
rbac: RBAC;
|
|
@@ -35,6 +36,26 @@ export declare class Auth {
|
|
|
35
36
|
* thing that can do the job.
|
|
36
37
|
*/
|
|
37
38
|
private requireRevokeSupport;
|
|
39
|
+
/**
|
|
40
|
+
* The user's current session version, or undefined when no SessionStore is
|
|
41
|
+
* configured and the feature is therefore off.
|
|
42
|
+
*/
|
|
43
|
+
private currentSessionVersion;
|
|
44
|
+
/**
|
|
45
|
+
* Rejects a token whose session version has been superseded. A token minted
|
|
46
|
+
* before any SessionStore existed carries no `sv`, and is treated as
|
|
47
|
+
* version 0 so that enabling the feature does not invalidate sessions that
|
|
48
|
+
* were already in flight.
|
|
49
|
+
*/
|
|
50
|
+
private assertSessionActive;
|
|
51
|
+
/**
|
|
52
|
+
* Invalidates every session currently issued to a user, across all devices.
|
|
53
|
+
* Returns false when no SessionStore is configured, since there is then
|
|
54
|
+
* nothing to bump and the call would silently do nothing.
|
|
55
|
+
*/
|
|
56
|
+
revokeAllSessions(userId: string | number): Promise<boolean>;
|
|
57
|
+
/** Invalidates a single session by the jti of its refresh token. */
|
|
58
|
+
revokeSession(jti: string): Promise<boolean>;
|
|
38
59
|
revoke(refreshToken?: string | null): Promise<boolean>;
|
|
39
60
|
logout(refreshToken?: string | null): Promise<boolean>;
|
|
40
61
|
getAuthorizationUrl(provider: string, options?: OAuthAuthorizeOptions): Promise<{
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,eAAe,EAGf,YAAY,EAGZ,MAAM,EACN,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,eAAe,EAGf,YAAY,EACZ,YAAY,EAGZ,MAAM,EACN,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;AAwCpB,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC;AAEpD,qBAAa,IAAI;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,8BAAqC;IACpD,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,CAAC,CAI5C;gBAEU,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM;IA4B9C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAchE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAWnD,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAyGzE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BzG,QAAQ,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwB/F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IA0B1E,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ7F,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,GAAG,IAAI;IA+B1E,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IA8DrF;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;OAGG;YACW,qBAAqB;IAQnC;;;;;OAKG;YACW,mBAAmB;IAWjC;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQlE,oEAAoE;IAC9D,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5C,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCtD,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B;;;;;;IAInE,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC;IA0DvB,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAI7F,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIhG,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAI5F,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM;IAUrD,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA6BhG,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAKrE;AAiFD,wBAAgB,wBAAwB,IAAI,YAAY,CAgCvD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAErD;AAED,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC"}
|
package/dist/auth.js
CHANGED
|
@@ -24,6 +24,10 @@ const RESERVED_CLAIMS = new Set([
|
|
|
24
24
|
"iat",
|
|
25
25
|
"nbf",
|
|
26
26
|
"jti",
|
|
27
|
+
// Session version. Written by the library from the SessionStore and compared
|
|
28
|
+
// on every verification, so it must not be settable by an extractor or by
|
|
29
|
+
// additionalClaims.
|
|
30
|
+
"sv",
|
|
27
31
|
]);
|
|
28
32
|
export class Auth {
|
|
29
33
|
secret;
|
|
@@ -37,6 +41,7 @@ export class Auth {
|
|
|
37
41
|
trustUserPermissions;
|
|
38
42
|
userStore;
|
|
39
43
|
refreshStore;
|
|
44
|
+
sessionStore;
|
|
40
45
|
onLogin;
|
|
41
46
|
onLink;
|
|
42
47
|
rbac;
|
|
@@ -62,6 +67,7 @@ export class Auth {
|
|
|
62
67
|
this.trustUserPermissions = options.trustUserPermissions ?? false;
|
|
63
68
|
this.userStore = options.userStore ?? null;
|
|
64
69
|
this.refreshStore = options.refreshStore ?? createMemoryRefreshStore();
|
|
70
|
+
this.sessionStore = options.sessionStore;
|
|
65
71
|
this.onLogin = options.onLogin;
|
|
66
72
|
this.onLink = options.onLink;
|
|
67
73
|
this.rbac = normalizeRbac(options.rbac ?? options.roles);
|
|
@@ -126,6 +132,12 @@ export class Auth {
|
|
|
126
132
|
...extra,
|
|
127
133
|
...additional,
|
|
128
134
|
};
|
|
135
|
+
// Only stamped when a SessionStore is configured, so tokens are unchanged
|
|
136
|
+
// for the many deployments that do not opt into session revocation.
|
|
137
|
+
const sessionVersion = await this.currentSessionVersion(user.id);
|
|
138
|
+
if (sessionVersion !== undefined) {
|
|
139
|
+
payload.sv = sessionVersion;
|
|
140
|
+
}
|
|
129
141
|
const subject = String(user.id);
|
|
130
142
|
const accessToken = encodeAccessToken(payload, this.secret, {
|
|
131
143
|
audience: this.audience,
|
|
@@ -137,7 +149,7 @@ export class Auth {
|
|
|
137
149
|
let refreshToken = null;
|
|
138
150
|
if (options.refresh !== false) {
|
|
139
151
|
const jwtid = randomToken(16);
|
|
140
|
-
refreshToken = encodeRefreshToken({ sub: subject, userId: user.id, roles }, this.refreshSecret, {
|
|
152
|
+
refreshToken = encodeRefreshToken({ sub: subject, userId: user.id, roles, ...(sessionVersion !== undefined && { sv: sessionVersion }) }, this.refreshSecret, {
|
|
141
153
|
audience: this.audience,
|
|
142
154
|
issuer: this.issuer,
|
|
143
155
|
algorithm: this.algorithm,
|
|
@@ -222,6 +234,9 @@ export class Auth {
|
|
|
222
234
|
algorithms: [this.algorithm],
|
|
223
235
|
clockTolerance: options.clockTolerance ?? this.clockTolerance,
|
|
224
236
|
});
|
|
237
|
+
// Checked after the signature, so `sv` is a claim this library signed
|
|
238
|
+
// rather than a number the caller supplied.
|
|
239
|
+
await this.assertSessionActive(claims);
|
|
225
240
|
// A refresh token is signed with the same secret and would otherwise verify
|
|
226
241
|
// as a bearer credential, turning a 7-day token into a 7-day access token.
|
|
227
242
|
if (claims.typ === "refresh" && options.acceptTokenType !== "refresh") {
|
|
@@ -253,8 +268,15 @@ export class Auth {
|
|
|
253
268
|
if (cookies?.[cookieName]) {
|
|
254
269
|
return cookies[cookieName];
|
|
255
270
|
}
|
|
256
|
-
|
|
257
|
-
|
|
271
|
+
// Opt-in only. Reading the query string by default put the token in every
|
|
272
|
+
// access log, proxy log, browser history entry, and outgoing Referer header
|
|
273
|
+
// on every request, which is a far wider blast radius than a header or a
|
|
274
|
+
// cookie.
|
|
275
|
+
if (options.query) {
|
|
276
|
+
const query = collectQuery(req);
|
|
277
|
+
return query.access_token ?? query.token ?? null;
|
|
278
|
+
}
|
|
279
|
+
return null;
|
|
258
280
|
}
|
|
259
281
|
async refresh(refreshToken, options = {}) {
|
|
260
282
|
if (!refreshToken) {
|
|
@@ -269,7 +291,15 @@ export class Auth {
|
|
|
269
291
|
if (claims.typ && claims.typ !== "refresh") {
|
|
270
292
|
throw new UnauthorizedError("Not a refresh token");
|
|
271
293
|
}
|
|
272
|
-
if (claims.jti) {
|
|
294
|
+
if (!claims.jti) {
|
|
295
|
+
// A refresh token without a jti has no store entry, so there is nothing
|
|
296
|
+
// to consume and nothing to revoke: it would stay valid until it expired
|
|
297
|
+
// and would survive logout entirely. encodeRefreshToken is public, so
|
|
298
|
+
// this is reachable by anyone holding the secret; refuse it rather than
|
|
299
|
+
// mint a session that no revocation list can ever reach.
|
|
300
|
+
throw new UnauthorizedError("Refresh token is missing a jti and cannot be revoked; mint refresh tokens through login()");
|
|
301
|
+
}
|
|
302
|
+
{
|
|
273
303
|
// Consume the token in a single store operation when the store supports
|
|
274
304
|
// it, so two concurrent refreshes cannot both pass the validity check.
|
|
275
305
|
if (typeof this.refreshStore.consume === "function") {
|
|
@@ -291,6 +321,10 @@ export class Auth {
|
|
|
291
321
|
id: (claims.userId ?? claims.sub),
|
|
292
322
|
roles: claims.roles,
|
|
293
323
|
};
|
|
324
|
+
// Before the store is touched. A revoked session must not be able to
|
|
325
|
+
// consume its refresh token and mint a fresh access token, which would
|
|
326
|
+
// make revokeAllSessions pointless for anyone holding a stolen one.
|
|
327
|
+
await this.assertSessionActive(claims);
|
|
294
328
|
if (this.userStore?.findById) {
|
|
295
329
|
user = await this.userStore.findById(user.id) ?? user;
|
|
296
330
|
}
|
|
@@ -305,6 +339,53 @@ export class Auth {
|
|
|
305
339
|
throw new ConfigurationError("The configured refreshStore cannot revoke tokens; implement revoke() so refresh rotation can invalidate the presented token");
|
|
306
340
|
}
|
|
307
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* The user's current session version, or undefined when no SessionStore is
|
|
344
|
+
* configured and the feature is therefore off.
|
|
345
|
+
*/
|
|
346
|
+
async currentSessionVersion(userId) {
|
|
347
|
+
if (!this.sessionStore) {
|
|
348
|
+
return undefined;
|
|
349
|
+
}
|
|
350
|
+
const version = await this.sessionStore.getVersion(userId);
|
|
351
|
+
return version ?? 0;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Rejects a token whose session version has been superseded. A token minted
|
|
355
|
+
* before any SessionStore existed carries no `sv`, and is treated as
|
|
356
|
+
* version 0 so that enabling the feature does not invalidate sessions that
|
|
357
|
+
* were already in flight.
|
|
358
|
+
*/
|
|
359
|
+
async assertSessionActive(claims) {
|
|
360
|
+
if (!this.sessionStore) {
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
const current = await this.currentSessionVersion(claims.userId ?? claims.sub ?? "");
|
|
364
|
+
const presented = typeof claims.sv === "number" ? claims.sv : 0;
|
|
365
|
+
if (presented !== current) {
|
|
366
|
+
throw new UnauthorizedError("Session has been revoked");
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Invalidates every session currently issued to a user, across all devices.
|
|
371
|
+
* Returns false when no SessionStore is configured, since there is then
|
|
372
|
+
* nothing to bump and the call would silently do nothing.
|
|
373
|
+
*/
|
|
374
|
+
async revokeAllSessions(userId) {
|
|
375
|
+
if (!this.sessionStore?.bumpVersion) {
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
378
|
+
await this.sessionStore.bumpVersion(userId);
|
|
379
|
+
return true;
|
|
380
|
+
}
|
|
381
|
+
/** Invalidates a single session by the jti of its refresh token. */
|
|
382
|
+
async revokeSession(jti) {
|
|
383
|
+
if (!this.sessionStore?.revokeSession) {
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
await this.sessionStore.revokeSession(jti);
|
|
387
|
+
return true;
|
|
388
|
+
}
|
|
308
389
|
async revoke(refreshToken) {
|
|
309
390
|
if (!refreshToken) {
|
|
310
391
|
return false;
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/password.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../src/password.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../src/password.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkGlD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiDnG;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuC3F;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CA4BtF"}
|