@ambushsoftworks/nestjs-auth-graphql 0.10.0 → 0.11.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 +111 -0
- package/README.md +81 -4
- package/dist/auth.module.d.ts +5 -0
- package/dist/auth.module.d.ts.map +1 -1
- package/dist/auth.module.js +47 -0
- package/dist/auth.module.js.map +1 -1
- package/dist/guards/create-auth-guard.d.ts.map +1 -1
- package/dist/guards/create-auth-guard.js +3 -6
- package/dist/guards/create-auth-guard.js.map +1 -1
- package/dist/guards/csrf.guard.d.ts +2 -0
- package/dist/guards/csrf.guard.d.ts.map +1 -1
- package/dist/guards/csrf.guard.js +26 -5
- package/dist/guards/csrf.guard.js.map +1 -1
- package/dist/guards/jwt-auth.guard.d.ts +2 -1
- package/dist/guards/jwt-auth.guard.d.ts.map +1 -1
- package/dist/guards/jwt-auth.guard.js +4 -0
- package/dist/guards/jwt-auth.guard.js.map +1 -1
- package/dist/guards/permission.guard.js +2 -2
- package/dist/guards/permission.guard.js.map +1 -1
- package/dist/guards/tenant.guard.d.ts.map +1 -1
- package/dist/guards/tenant.guard.js +3 -0
- package/dist/guards/tenant.guard.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/refresh-retry-cache.interface.d.ts +6 -0
- package/dist/interfaces/refresh-retry-cache.interface.d.ts.map +1 -0
- package/dist/interfaces/refresh-retry-cache.interface.js +3 -0
- package/dist/interfaces/refresh-retry-cache.interface.js.map +1 -0
- package/dist/middleware/realm.middleware.d.ts +4 -2
- package/dist/middleware/realm.middleware.d.ts.map +1 -1
- package/dist/middleware/realm.middleware.js +50 -34
- package/dist/middleware/realm.middleware.js.map +1 -1
- package/dist/services/auth.service.d.ts +1 -3
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +12 -10
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/in-memory-refresh-retry-cache.d.ts +11 -0
- package/dist/services/in-memory-refresh-retry-cache.d.ts.map +1 -0
- package/dist/services/in-memory-refresh-retry-cache.js +45 -0
- package/dist/services/in-memory-refresh-retry-cache.js.map +1 -0
- package/dist/services/refresh-token.service.d.ts +13 -14
- package/dist/services/refresh-token.service.d.ts.map +1 -1
- package/dist/services/refresh-token.service.js +112 -33
- package/dist/services/refresh-token.service.js.map +1 -1
- package/dist/strategies/jwt.strategy.d.ts +3 -1
- package/dist/strategies/jwt.strategy.d.ts.map +1 -1
- package/dist/strategies/jwt.strategy.js +15 -11
- package/dist/strategies/jwt.strategy.js.map +1 -1
- package/dist/test-utils/execution-contexts.d.ts +7 -0
- package/dist/test-utils/execution-contexts.d.ts.map +1 -0
- package/dist/test-utils/execution-contexts.js +41 -0
- package/dist/test-utils/execution-contexts.js.map +1 -0
- package/dist/utils/cookies.d.ts +2 -0
- package/dist/utils/cookies.d.ts.map +1 -0
- package/dist/utils/cookies.js +34 -0
- package/dist/utils/cookies.js.map +1 -0
- package/dist/utils/execution-context.d.ts +3 -1
- package/dist/utils/execution-context.d.ts.map +1 -1
- package/dist/utils/execution-context.js +39 -4
- package/dist/utils/execution-context.js.map +1 -1
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -27,6 +27,117 @@ for buried obligations. **The marker was introduced in 0.9.0 and has not been
|
|
|
27
27
|
retro-applied**, so it is reliable from 0.9.0 onward only. Convention adopted
|
|
28
28
|
from `@ambushsoftworks/nestjs-payments-graphql`.
|
|
29
29
|
|
|
30
|
+
## [0.11.0] - 2026-09-15
|
|
31
|
+
|
|
32
|
+
Ambush Desk asked for two things: refresh retries that survive a second API
|
|
33
|
+
instance, and guards that work on GraphQL subscriptions. Checking the first one
|
|
34
|
+
turned up a retry bug that had been there since the first release. See
|
|
35
|
+
**Fixed**.
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
- **Guards failed on GraphQL subscriptions over `graphql-ws`.** Guards read
|
|
39
|
+
`context.req`, which a subscription does not have. With `GraphQLModule`'s
|
|
40
|
+
`subscriptions: { 'graphql-ws': true }`, Nest puts graphql-ws's connection
|
|
41
|
+
object there instead. With an app's own `useServer`, there is no `req` at all.
|
|
42
|
+
Run over a real `graphql-ws` client on 0.10.0, the guard chain
|
|
43
|
+
`CsrfGuard` → `createAuthGuard(['jwt'])` → `TenantGuard` → `PermissionGuard`
|
|
44
|
+
refused every subscription:
|
|
45
|
+
- with `GraphQLModule` subscriptions, `CsrfGuard` answered `CSRF validation failed`
|
|
46
|
+
- with an own server, it threw `TypeError`s: `Cannot read properties of
|
|
47
|
+
undefined (reading 'headers')` with a context function, `(reading 'req')`
|
|
48
|
+
without one
|
|
49
|
+
|
|
50
|
+
Guards now read the WebSocket upgrade request. Authentication, realm, tenant
|
|
51
|
+
and permission checks all work on subscriptions, and with no request to read,
|
|
52
|
+
guards answer 401 or 403. Reported by Ambush Desk; Ariadne had been working
|
|
53
|
+
around it with a subclass.
|
|
54
|
+
- **A retried token refresh was always rejected when the repository deletes
|
|
55
|
+
used tokens.** Refresh deletes the token it used and keeps the result for 10
|
|
56
|
+
seconds, so that a client that lost the response can retry. The retry then
|
|
57
|
+
looked up the used token to find the user, found nothing, and answered
|
|
58
|
+
`401 Invalid refresh token`. That covers every `IRefreshTokenRepository` whose
|
|
59
|
+
`delete` removes the row, which is what the method is for. The lookup has been
|
|
60
|
+
there since `v0.1.3`. The kept result now carries the user ID, and the retry
|
|
61
|
+
still re-checks account status. Reproduced on 0.10.0 before the fix, with a
|
|
62
|
+
repository that deletes.
|
|
63
|
+
- **A retry arriving between deleting the used token and keeping the result was
|
|
64
|
+
rejected.** The result is now kept first.
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
- **`csrf.webSocket: 'reject' | 'skip'`**, default `'reject'`. Browsers cannot
|
|
68
|
+
send the CSRF header on a WebSocket, so this decides for cookie-authenticated
|
|
69
|
+
subscriptions: 403, or allow. `'skip'` is safe only with an `Origin` check
|
|
70
|
+
when the socket connects. A subscription whose upgrade request carries an
|
|
71
|
+
`Authorization` header is allowed either way. Any other value fails boot.
|
|
72
|
+
Requested by Ambush Desk.
|
|
73
|
+
- **The realm on subscriptions.** `RealmMiddleware` never sees a WebSocket
|
|
74
|
+
upgrade, so `JwtStrategy` resolves the realm from the upgrade request itself,
|
|
75
|
+
once per connection, with the same `realm.skip` and extractor rules. A realm
|
|
76
|
+
the app sets itself (in `onConnect`, say) is kept. Requested by Ambush Desk.
|
|
77
|
+
- **`isWebSocketContext(context)`, `requireRequestFromContext(context)` and
|
|
78
|
+
`readCookie(request, name)`**, exported. `readCookie` falls back to parsing
|
|
79
|
+
the `Cookie` header, which is all an upgrade request has.
|
|
80
|
+
- **`refreshRetryCacheInstance?: IRefreshRetryCache`.** A retry that reached a
|
|
81
|
+
different instance than the first refresh got `401` and a
|
|
82
|
+
`TOKEN_REUSE_DETECTED` event, because the retry cache lived in one process.
|
|
83
|
+
Requested by Ambush Desk.
|
|
84
|
+
- Implement `get`, `set(key, value, ttlMs)` and `delete` over a store the
|
|
85
|
+
instances share. The interface's JSDoc has a Postgres example.
|
|
86
|
+
- Entries hold live tokens, so for any store but the in-memory one they are
|
|
87
|
+
AES-256-GCM encrypted with a key derived from `encryptionKey`, which then
|
|
88
|
+
becomes required and must match on every instance.
|
|
89
|
+
- The package enforces expiry itself, and treats store errors as a miss.
|
|
90
|
+
- **`refreshGracePeriodSeconds`**, default 10. `0` turns retries off. Requested
|
|
91
|
+
by Ambush Desk.
|
|
92
|
+
- **`InMemoryRefreshRetryCache`**, the default, exported so a single-instance app
|
|
93
|
+
can pass it explicitly.
|
|
94
|
+
- **Boot warnings for in-memory defaults** that only work within one instance:
|
|
95
|
+
`rateLimiterInstance` (password-reset throttling) and
|
|
96
|
+
`refreshRetryCacheInstance`. Pass `new InMemoryRateLimiterService()` and
|
|
97
|
+
`new InMemoryRefreshRetryCache()` to confirm a single instance and silence
|
|
98
|
+
them. Requested by Ambush Desk.
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
- **`getRequestFromContext` returns `Record<string, any> | undefined`.** It finds a
|
|
102
|
+
subscription's upgrade request, and returns `undefined` when a GraphQL context
|
|
103
|
+
holds no request. It did before too, while typed as never doing so. TypeScript
|
|
104
|
+
now flags call sites that assume a request.
|
|
105
|
+
- **Cookie auth no longer requires cookie-parser.** The JWT cookie extractor and
|
|
106
|
+
`readRefreshTokenFromCookie` fall back to the `Cookie` header.
|
|
107
|
+
- **`CsrfGuard` checks `exemptOperations` before reading any header**, and
|
|
108
|
+
answers 403 rather than throwing when a GraphQL operation's context holds no
|
|
109
|
+
request. HTTP outcomes are unchanged.
|
|
110
|
+
- **`RefreshTokenService`'s retry cache methods are async and take the user ID:**
|
|
111
|
+
- `cacheRefreshResult(usedTokenHash, { userId, accessToken, refreshToken })`
|
|
112
|
+
- `getCachedRefreshResult(usedTokenHash)`, which resolves to that shape or `null`
|
|
113
|
+
- `invalidateCachedRefresh(usedTokenHash)`
|
|
114
|
+
|
|
115
|
+
The class no longer runs a cleanup timer, and `onModuleDestroy` is gone. This
|
|
116
|
+
only affects code that calls these methods directly or subclasses the service.
|
|
117
|
+
Implement `IRefreshRetryCache` instead.
|
|
118
|
+
|
|
119
|
+
### Documentation
|
|
120
|
+
- **CLAUDE.md described a `gracePeriodSeconds` option that never existed**, and a
|
|
121
|
+
Redis subclass of `RefreshTokenService` that could not work. It overrode the
|
|
122
|
+
synchronous cache methods with async ones, and the truthy Promise would have
|
|
123
|
+
sent every refresh down the cached branch. Both are replaced by the port's real
|
|
124
|
+
design.
|
|
125
|
+
- README: **Refresh Retries**, **GraphQL Subscriptions**, **Migrating to
|
|
126
|
+
v0.11.0**, and rows for the new options and utilities.
|
|
127
|
+
|
|
128
|
+
### Testing
|
|
129
|
+
- **End-to-end subscriptions.** The suite drives real `graphql-ws` clients
|
|
130
|
+
against three server setups on both NestJS majors: `GraphQLModule`-managed, an
|
|
131
|
+
own `useServer` with a context, and one without. Against each, it checks
|
|
132
|
+
delivery, a missing cookie, a wrong realm, a missing permission, another
|
|
133
|
+
tenant, CSRF `'reject'` and `'skip'`, and a bearer token on the upgrade.
|
|
134
|
+
- **Refresh retries end to end:**
|
|
135
|
+
- a retry gets the same pair
|
|
136
|
+
- two instances sharing a store
|
|
137
|
+
- without a shared store: `TOKEN_REUSE_DETECTED`
|
|
138
|
+
- after the grace period: 401
|
|
139
|
+
- a user suspended between the refresh and its retry is refused
|
|
140
|
+
|
|
30
141
|
## [0.10.0] - 2026-09-15
|
|
31
142
|
|
|
32
143
|
Ambush Desk, a new consumer on NestJS 11, asked for routes that need no realm, a
|
package/README.md
CHANGED
|
@@ -20,6 +20,7 @@ Production-grade authentication module for NestJS GraphQL + REST APIs. JWT, cook
|
|
|
20
20
|
- [Password Policy](#password-policy)
|
|
21
21
|
- [Lifecycle Hooks](#lifecycle-hooks)
|
|
22
22
|
- [Account Status](#account-status)
|
|
23
|
+
- [Refresh Retries](#refresh-retries)
|
|
23
24
|
- [JWT Validation Modes](#jwt-validation-modes)
|
|
24
25
|
- [JWT Payload Factory](#jwt-payload-factory)
|
|
25
26
|
- [Configuration Reference](#configuration-reference)
|
|
@@ -35,8 +36,10 @@ Production-grade authentication module for NestJS GraphQL + REST APIs. JWT, cook
|
|
|
35
36
|
- [Optional Instance Options](#optional-instance-options)
|
|
36
37
|
- [Decorators](#decorators)
|
|
37
38
|
- [Guards](#guards)
|
|
39
|
+
- [GraphQL Subscriptions](#graphql-subscriptions)
|
|
38
40
|
- [Utilities](#utilities)
|
|
39
41
|
- [Security Features](#security-features)
|
|
42
|
+
- [Migrating to v0.11.0](#migrating-to-v0110)
|
|
40
43
|
- [Migrating to v0.10.0](#migrating-to-v0100)
|
|
41
44
|
- [Migrating to v0.9.0](#migrating-to-v090)
|
|
42
45
|
- [License](#license)
|
|
@@ -926,6 +929,35 @@ It must be synchronous and pure: it runs on every authenticated request, against
|
|
|
926
929
|
|
|
927
930
|
**Your repository must return inactive users.** `findById` and `findByEmail` should return suspended and soft-deleted users like any other. A repository that hides them turns `ACCOUNT_INACTIVE` into a "not found" failure, and the package can no longer tell the client why.
|
|
928
931
|
|
|
932
|
+
### Refresh Retries
|
|
933
|
+
|
|
934
|
+
Refresh tokens rotate: each refresh deletes the token it used. A client that loses the response — a dropped connection, a timeout, an HTTP client that retries — sends the used token again, which looks exactly like a stolen token being replayed. For `refreshGracePeriodSeconds` (default 10) the package remembers the result and answers the retry with the same token pair. `0` turns this off.
|
|
935
|
+
|
|
936
|
+
**One instance:** nothing to do.
|
|
937
|
+
|
|
938
|
+
**More than one instance:** give every instance the same store, or a retry that reaches a different instance gets `401` and signs the user out:
|
|
939
|
+
|
|
940
|
+
```typescript
|
|
941
|
+
AuthModule.forRootAsync({
|
|
942
|
+
inject: [PgRefreshRetryCache, PgRateLimiter, ConfigService],
|
|
943
|
+
useFactory: (retryCache, rateLimiter, config) => ({
|
|
944
|
+
// ...required options
|
|
945
|
+
refreshRetryCacheInstance: retryCache,
|
|
946
|
+
encryptionKey: config.getOrThrow('ENCRYPTION_KEY'), // required with a shared store, same on every instance
|
|
947
|
+
rateLimiterInstance: rateLimiter, // password-reset throttling needs sharing for the same reason
|
|
948
|
+
}),
|
|
949
|
+
})
|
|
950
|
+
```
|
|
951
|
+
|
|
952
|
+
- Implement `IRefreshRetryCache` (`get`, `set(key, value, ttlMs)`, `delete`) over Redis, Postgres, or any store the instances share. Its JSDoc has a Postgres example.
|
|
953
|
+
- The values are AES-256-GCM ciphertext, because they hold live tokens. Boot fails with `InvalidAuthConfigException` when `encryptionKey` is missing.
|
|
954
|
+
- The package enforces expiry itself, so the store's TTL can be approximate.
|
|
955
|
+
- A store that errors costs retries, never the refresh itself.
|
|
956
|
+
|
|
957
|
+
At boot the package warns for each in-memory default in use, `rateLimiterInstance` and `refreshRetryCacheInstance`, because it cannot tell how many instances run. Pass `new InMemoryRateLimiterService()` and `new InMemoryRefreshRetryCache()` explicitly to confirm a single instance and silence them.
|
|
958
|
+
|
|
959
|
+
Before 0.11.0 a retry got `401` whenever `IRefreshTokenRepository.delete` removed the used token, even on a single instance.
|
|
960
|
+
|
|
929
961
|
### JWT Validation Modes
|
|
930
962
|
|
|
931
963
|
- **`'full'`** (default) -- Calls `userRepository.findById()` on every request, rejecting the request if the user no longer exists or is no longer active (see [Account Status](#account-status)).
|
|
@@ -987,6 +1019,7 @@ These sit beside `useFactory`, not in the object it returns.
|
|
|
987
1019
|
| `encryptionKey` | `string` | -- | 32-byte hex string for AES-256-GCM (OAuth token encryption) |
|
|
988
1020
|
| `bruteForce.ipRateLimit` | `{ maxAttempts, windowMs }` | -- | IP rate-limit policy for `checkIpRateLimit`. When set, `rateLimiterInstance` MUST also be provided explicitly (boot fails with `InvalidAuthConfigException` otherwise). See [IP Rate Limiting](#ip-rate-limiting). |
|
|
989
1021
|
| `realm.skip` | `(path, request) => boolean` | -- | Requests that need no realm, such as health checks and webhooks. Read only with `realmExtractorInstance`. See [Realm-Based Identity Isolation](#realm-based-identity-isolation) |
|
|
1022
|
+
| `refreshGracePeriodSeconds` | `number` | `10` | How long a retried refresh gets the same token pair. `0` turns retries off. See [Refresh Retries](#refresh-retries) |
|
|
990
1023
|
|
|
991
1024
|
### Feature Flags (`features`)
|
|
992
1025
|
|
|
@@ -1042,6 +1075,7 @@ Separate HMAC secrets for security isolation. All fall back to `jwtSecret` if no
|
|
|
1042
1075
|
| `headerName` | `string` | `'X-Requested-With'` | Header to check |
|
|
1043
1076
|
| `requireInProduction` | `boolean` | `true` | Require CSRF header in production |
|
|
1044
1077
|
| `exemptOperations` | `string[]` | `[]` | GraphQL operations to skip |
|
|
1078
|
+
| `webSocket` | `'reject' \| 'skip'` | `'reject'` | Cookie-authenticated GraphQL subscriptions: refuse with 403, or allow. `'skip'` needs an `Origin` check when the socket connects. See [GraphQL Subscriptions](#graphql-subscriptions) |
|
|
1045
1079
|
|
|
1046
1080
|
### Composable Email (`email`)
|
|
1047
1081
|
|
|
@@ -1079,6 +1113,7 @@ When `email` is provided, it takes precedence over `emailServiceInstance`.
|
|
|
1079
1113
|
| `jwtPayloadFactoryInstance` | `IJwtPayloadFactory` | `DefaultJwtPayloadFactory` |
|
|
1080
1114
|
| `apiKeyRepositoryInstance` | `IApiKeyRepository` | `null` |
|
|
1081
1115
|
| `rateLimiterInstance` | `IRateLimiter` | `InMemoryRateLimiterService` (Note: this fallback does NOT apply when `bruteForce.ipRateLimit` is configured — boot fails with `InvalidAuthConfigException` and an explicit `rateLimiterInstance` is required. See [IP Rate Limiting](#ip-rate-limiting) above.) |
|
|
1116
|
+
| `refreshRetryCacheInstance` | `IRefreshRetryCache` | `InMemoryRefreshRetryCache`, which answers retries on the same instance only. A shared store requires `encryptionKey`. See [Refresh Retries](#refresh-retries) |
|
|
1082
1117
|
| `realmExtractorInstance` | `IRealmExtractor` | `null` (realms disabled) |
|
|
1083
1118
|
|
|
1084
1119
|
---
|
|
@@ -1124,13 +1159,45 @@ When realm support is enabled, `RealmMiddleware` runs before all guards (as Nest
|
|
|
1124
1159
|
{ provide: APP_GUARD, useClass: PermissionGuard },
|
|
1125
1160
|
```
|
|
1126
1161
|
|
|
1162
|
+
### GraphQL Subscriptions
|
|
1163
|
+
|
|
1164
|
+
The guards also protect subscriptions over `graphql-ws`. A socket has no HTTP request, so they read the WebSocket upgrade request instead: the headers and cookies the client opened the connection with.
|
|
1165
|
+
|
|
1166
|
+
| Guard | On a subscription |
|
|
1167
|
+
|-------|-------------------|
|
|
1168
|
+
| `createAuthGuard`, `JwtAuthGuard` | Authenticates from the upgrade request's `Authorization` header or session cookie. `RealmMiddleware` never sees the upgrade, so the realm is resolved from it once per connection |
|
|
1169
|
+
| `TenantGuard`, `PermissionGuard` | Resolve the tenant and check permissions from the upgrade request |
|
|
1170
|
+
| `CsrfGuard` | Browsers cannot send the CSRF header on a WebSocket, so `csrf.webSocket` decides: `'reject'` (default) answers 403, `'skip'` allows. A connection with an `Authorization` header is allowed either way |
|
|
1171
|
+
|
|
1172
|
+
**Use `'skip'` only with an `Origin` check when the socket connects.** That check is what stops another site from opening a socket with your users' cookies.
|
|
1173
|
+
|
|
1174
|
+
With your own `graphql-ws` server, also pass the connection through as the context. Without it, guards receive no request and refuse every subscription with 401:
|
|
1175
|
+
|
|
1176
|
+
```typescript
|
|
1177
|
+
useServer(
|
|
1178
|
+
{
|
|
1179
|
+
schema,
|
|
1180
|
+
context: (ctx) => ctx,
|
|
1181
|
+
onConnect: (ctx) => ALLOWED_ORIGINS.includes(ctx.extra.request.headers.origin ?? ''),
|
|
1182
|
+
},
|
|
1183
|
+
wsServer,
|
|
1184
|
+
);
|
|
1185
|
+
```
|
|
1186
|
+
|
|
1187
|
+
With `GraphQLModule`'s `subscriptions: { 'graphql-ws': { onConnect } }`, the guards find the upgrade request on their own; put the same `onConnect` there.
|
|
1188
|
+
|
|
1189
|
+
`isWebSocketContext(context)` and `readCookie(request, name)` are exported for your own guards and connection handlers.
|
|
1190
|
+
|
|
1127
1191
|
## Utilities
|
|
1128
1192
|
|
|
1129
1193
|
Helper functions exported for use in custom guards, middleware and loggers:
|
|
1130
1194
|
|
|
1131
1195
|
| Function | Description |
|
|
1132
1196
|
|----------|-------------|
|
|
1133
|
-
| `getRequestFromContext(context)` |
|
|
1197
|
+
| `getRequestFromContext(context)` | The request behind an `ExecutionContext`: HTTP, GraphQL, or a `graphql-ws` subscription's upgrade request. `undefined` when there is none |
|
|
1198
|
+
| `requireRequestFromContext(context)` | The same, but throws `UnauthorizedException` when there is no request |
|
|
1199
|
+
| `isWebSocketContext(context)` | Whether the context is a GraphQL subscription over a WebSocket |
|
|
1200
|
+
| `readCookie(request, name)` | A cookie's value from `request.cookies`, or parsed from the `Cookie` header (a WebSocket upgrade request has only the header) |
|
|
1134
1201
|
| `extractIpAddress(request)` | Extract client IP (checks `clientIp`, `req.ip`, falls back to `'unknown'`) |
|
|
1135
1202
|
| `isUserActiveByDefault(user)` | The default account-active predicate (see [Account Status](#account-status)) |
|
|
1136
1203
|
| `emailForLog(email)`, `ipForLog(ip)` | An email or IP as it may appear in a log line — `emailHash=…` / `ipHash=…`, salted like the package's own logs |
|
|
@@ -1139,12 +1206,12 @@ Helper functions exported for use in custom guards, middleware and loggers:
|
|
|
1139
1206
|
| `hashIp(ip, salt)` | HMAC-SHA256 IP hash (16 hex characters) used for rate-limit keys |
|
|
1140
1207
|
|
|
1141
1208
|
```typescript
|
|
1142
|
-
import {
|
|
1209
|
+
import { requireRequestFromContext, extractIpAddress } from '@ambushsoftworks/nestjs-auth-graphql';
|
|
1143
1210
|
|
|
1144
1211
|
@Injectable()
|
|
1145
1212
|
export class CustomGuard implements CanActivate {
|
|
1146
1213
|
canActivate(context: ExecutionContext): boolean {
|
|
1147
|
-
const request =
|
|
1214
|
+
const request = requireRequestFromContext(context);
|
|
1148
1215
|
const ip = extractIpAddress(request);
|
|
1149
1216
|
// your logic
|
|
1150
1217
|
return true;
|
|
@@ -1154,7 +1221,7 @@ export class CustomGuard implements CanActivate {
|
|
|
1154
1221
|
|
|
1155
1222
|
## Security Features
|
|
1156
1223
|
|
|
1157
|
-
- **Refresh token rotation** with HMAC-SHA256 hashing
|
|
1224
|
+
- **Refresh token rotation** with HMAC-SHA256 hashing; a retried refresh gets the same pair for 10 seconds (configurable, shareable across instances, encrypted at rest)
|
|
1158
1225
|
- **Bcrypt password hashing** with configurable rounds (default: 12)
|
|
1159
1226
|
- **Account status enforcement** -- suspended and deleted users are rejected at login, on refresh and on every authenticated request (`ACCOUNT_INACTIVE`)
|
|
1160
1227
|
- **AES-256-GCM encryption** for OAuth tokens at rest
|
|
@@ -1166,6 +1233,16 @@ export class CustomGuard implements CanActivate {
|
|
|
1166
1233
|
- **Realm-based identity isolation** with JWT realm claim validation, realm-scoped rate limiting and lockout, and auth flows that refuse a request without a realm
|
|
1167
1234
|
- **No raw personal data in package logs** — log lines use the user ID or a salted hash (`emailHash=`, `ipHash=`, under `AUTH_IP_HASH_SALT` or `jwtSecret`), phone numbers keep only their last two digits, and the default `ConsoleAuthLogger` redacts security-event metadata. A custom `authLoggerInstance` receives the raw fields; pass them through `redactSecurityEventMetadata` to store them redacted.
|
|
1168
1235
|
|
|
1236
|
+
## Migrating to v0.11.0
|
|
1237
|
+
|
|
1238
|
+
**`getRequestFromContext` may return `undefined`.** It now also finds a `graphql-ws` subscription's upgrade request, and returns `undefined` where there is no request at all. TypeScript flags each call that assumes a request. In a guard that cannot decide without one, use `requireRequestFromContext`.
|
|
1239
|
+
|
|
1240
|
+
**Subscriptions through `CsrfGuard`.** With cookie auth they answer 403 unless you set `csrf.webSocket: 'skip'`, together with an `Origin` check when the socket connects. They failed before 0.11.0 as well: with that same 403 on `GraphQLModule` subscriptions, or a `TypeError` on your own `graphql-ws` server. See [GraphQL Subscriptions](#graphql-subscriptions).
|
|
1241
|
+
|
|
1242
|
+
**Cookie auth no longer needs cookie-parser.** The access and refresh token cookies are read from the `Cookie` header when `request.cookies` is absent.
|
|
1243
|
+
|
|
1244
|
+
**More than one instance.** Set `refreshRetryCacheInstance` and `encryptionKey`, or retried refreshes that reach another instance sign users out; see [Refresh Retries](#refresh-retries). Boot now warns for each in-memory default in use. `RefreshTokenService`'s retry cache methods became async, which only matters if you call or override them.
|
|
1245
|
+
|
|
1169
1246
|
## Migrating to v0.10.0
|
|
1170
1247
|
|
|
1171
1248
|
No code change is required. Check the items that apply to you.
|
package/dist/auth.module.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ import { IJwtPayloadFactory } from './interfaces/jwt-payload-factory.interface';
|
|
|
18
18
|
import { IApiKeyRepository } from './interfaces/api-key-repository.interface';
|
|
19
19
|
import { PasswordPolicyConfig } from './interfaces/password-policy-config.interface';
|
|
20
20
|
import { IRateLimiter } from './interfaces/rate-limiter.interface';
|
|
21
|
+
import { IRefreshRetryCache } from './interfaces/refresh-retry-cache.interface';
|
|
21
22
|
import { IEmailSender } from './interfaces/email-sender.interface';
|
|
22
23
|
import { IEmailTemplateRenderer } from './interfaces/email-template-renderer.interface';
|
|
23
24
|
import { EmailBrandingConfig } from './interfaces/email-branding-config.interface';
|
|
@@ -79,6 +80,7 @@ export interface AuthModuleOptions {
|
|
|
79
80
|
headerName?: string;
|
|
80
81
|
requireInProduction?: boolean;
|
|
81
82
|
exemptOperations?: string[];
|
|
83
|
+
webSocket?: 'reject' | 'skip';
|
|
82
84
|
};
|
|
83
85
|
jwtSecret: string;
|
|
84
86
|
jwtExpiresIn?: string;
|
|
@@ -98,6 +100,8 @@ export interface AuthModuleOptions {
|
|
|
98
100
|
encryptionKey?: string;
|
|
99
101
|
passwordPolicy?: PasswordPolicyConfig;
|
|
100
102
|
rateLimiterInstance?: IRateLimiter;
|
|
103
|
+
refreshGracePeriodSeconds?: number;
|
|
104
|
+
refreshRetryCacheInstance?: IRefreshRetryCache;
|
|
101
105
|
bruteForce?: {
|
|
102
106
|
ipRateLimit?: {
|
|
103
107
|
maxAttempts: number;
|
|
@@ -127,6 +131,7 @@ export interface AuthModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'>
|
|
|
127
131
|
export declare function validateAuthModuleOptions(opts: AuthModuleOptions): void;
|
|
128
132
|
export declare function describeIgnoredFeatureFlags(opts: AuthModuleOptions): string[];
|
|
129
133
|
export declare function describeIgnoredOptions(opts: AuthModuleOptions): string[];
|
|
134
|
+
export declare function describeInMemoryDefaults(opts: AuthModuleOptions): string[];
|
|
130
135
|
export { AUTH_MODULE_OPTIONS, USER_REPOSITORY, REFRESH_TOKEN_REPOSITORY, EMAIL_SERVICE, SMS_SERVICE, AUTH_LIFECYCLE_HOOKS, VERIFICATION_REPOSITORY, BRUTE_FORCE_REPOSITORY, BIOMETRIC_REPOSITORY, AUTH_LOGGER, RATE_LIMITER, TENANT_REPOSITORY, TENANT_EXTRACTOR, RESOURCE_PERMISSION_REPOSITORY, JWT_PAYLOAD_FACTORY, API_KEY_REPOSITORY, } from './constants';
|
|
131
136
|
export declare class AuthModule implements NestModule {
|
|
132
137
|
configure(consumer: MiddlewareConsumer): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.module.d.ts","sourceRoot":"","sources":["../src/auth.module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAElB,UAAU,EAGX,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AA0B3D,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAYjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AA8B9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAGrF,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.module.d.ts","sourceRoot":"","sources":["../src/auth.module.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.module.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.AuthModule = exports.API_KEY_REPOSITORY = exports.JWT_PAYLOAD_FACTORY =
|
|
|
11
11
|
exports.validateAuthModuleOptions = validateAuthModuleOptions;
|
|
12
12
|
exports.describeIgnoredFeatureFlags = describeIgnoredFeatureFlags;
|
|
13
13
|
exports.describeIgnoredOptions = describeIgnoredOptions;
|
|
14
|
+
exports.describeInMemoryDefaults = describeInMemoryDefaults;
|
|
14
15
|
const common_1 = require("@nestjs/common");
|
|
15
16
|
const realm_middleware_1 = require("./middleware/realm.middleware");
|
|
16
17
|
const jwt_1 = require("@nestjs/jwt");
|
|
@@ -43,12 +44,15 @@ const api_key_strategy_1 = require("./strategies/api-key.strategy");
|
|
|
43
44
|
const default_jwt_payload_factory_1 = require("./services/default-jwt-payload-factory");
|
|
44
45
|
const constants_1 = require("./constants");
|
|
45
46
|
const in_memory_rate_limiter_service_1 = require("./services/in-memory-rate-limiter.service");
|
|
47
|
+
const in_memory_refresh_retry_cache_1 = require("./services/in-memory-refresh-retry-cache");
|
|
46
48
|
const invalid_auth_config_exception_1 = require("./exceptions/invalid-auth-config.exception");
|
|
47
49
|
const configurable_email_service_1 = require("./services/configurable-email.service");
|
|
48
50
|
const default_email_template_renderer_1 = require("./services/default-email-template-renderer");
|
|
49
51
|
function validateAuthModuleOptions(opts) {
|
|
50
52
|
validateVerificationOptions(opts);
|
|
51
53
|
validateRealmOptions(opts);
|
|
54
|
+
validateRefreshRetryOptions(opts);
|
|
55
|
+
validateCsrfOptions(opts);
|
|
52
56
|
const ipRateLimit = opts.bruteForce?.ipRateLimit;
|
|
53
57
|
if (ipRateLimit && !opts.rateLimiterInstance) {
|
|
54
58
|
throw new invalid_auth_config_exception_1.InvalidAuthConfigException('[AuthModule] bruteForce.ipRateLimit is configured but rateLimiterInstance ' +
|
|
@@ -134,8 +138,48 @@ function describeIgnoredOptions(opts) {
|
|
|
134
138
|
'which is not set, so no request is asked for a realm and none needs skipping. ' +
|
|
135
139
|
'Remove realm.skip, or set realmExtractorInstance.');
|
|
136
140
|
}
|
|
141
|
+
if (opts.refreshRetryCacheInstance && opts.refreshGracePeriodSeconds === 0) {
|
|
142
|
+
messages.push('[AuthModule] refreshRetryCacheInstance is ignored: refreshGracePeriodSeconds is 0, ' +
|
|
143
|
+
'which turns refresh retries off. Remove one of the two.');
|
|
144
|
+
}
|
|
137
145
|
return messages;
|
|
138
146
|
}
|
|
147
|
+
function describeInMemoryDefaults(opts) {
|
|
148
|
+
const messages = [];
|
|
149
|
+
if (!opts.rateLimiterInstance) {
|
|
150
|
+
messages.push('[AuthModule] rateLimiterInstance is not set, so password-reset throttling counts attempts ' +
|
|
151
|
+
'in memory, separately on each instance. With more than one instance, a client gets the ' +
|
|
152
|
+
'allowed attempts once per instance. Provide a shared IRateLimiter, or pass ' +
|
|
153
|
+
'`new InMemoryRateLimiterService()` to confirm a single instance.');
|
|
154
|
+
}
|
|
155
|
+
if (!opts.refreshRetryCacheInstance && opts.refreshGracePeriodSeconds !== 0) {
|
|
156
|
+
messages.push('[AuthModule] refreshRetryCacheInstance is not set, so a retried token refresh is only ' +
|
|
157
|
+
'recognised by the instance that handled the first attempt. With more than one instance, ' +
|
|
158
|
+
'a retry that reaches another instance gets 401 and signs the user out. Provide a shared ' +
|
|
159
|
+
'IRefreshRetryCache, or pass `new InMemoryRefreshRetryCache()` to confirm a single instance.');
|
|
160
|
+
}
|
|
161
|
+
return messages;
|
|
162
|
+
}
|
|
163
|
+
function validateCsrfOptions(opts) {
|
|
164
|
+
const webSocket = opts.csrf?.webSocket;
|
|
165
|
+
if (webSocket === undefined || webSocket === 'reject' || webSocket === 'skip') {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
throw new invalid_auth_config_exception_1.InvalidAuthConfigException(`[AuthModule] csrf.webSocket must be 'reject' or 'skip'; received ${JSON.stringify(webSocket)}.`);
|
|
169
|
+
}
|
|
170
|
+
function validateRefreshRetryOptions(opts) {
|
|
171
|
+
const gracePeriod = opts.refreshGracePeriodSeconds;
|
|
172
|
+
if (gracePeriod !== undefined && (!Number.isInteger(gracePeriod) || gracePeriod < 0)) {
|
|
173
|
+
throw new invalid_auth_config_exception_1.InvalidAuthConfigException(`[AuthModule] refreshGracePeriodSeconds must be a non-negative integer; received ${String(gracePeriod)}. Use 0 to turn refresh retries off.`);
|
|
174
|
+
}
|
|
175
|
+
const cache = opts.refreshRetryCacheInstance;
|
|
176
|
+
if (cache && !(cache instanceof in_memory_refresh_retry_cache_1.InMemoryRefreshRetryCache) && gracePeriod !== 0 && !opts.encryptionKey) {
|
|
177
|
+
throw new invalid_auth_config_exception_1.InvalidAuthConfigException('[AuthModule] refreshRetryCacheInstance is set but encryptionKey is not. Retry cache ' +
|
|
178
|
+
'entries hold live access and refresh tokens, so the package encrypts them before they ' +
|
|
179
|
+
'reach your store, with a key derived from encryptionKey. Set encryptionKey, to the same ' +
|
|
180
|
+
'value on every instance.');
|
|
181
|
+
}
|
|
182
|
+
}
|
|
139
183
|
function validateRealmOptions(opts) {
|
|
140
184
|
const skip = opts.realm?.skip;
|
|
141
185
|
if (!opts.realmExtractorInstance || skip === undefined || typeof skip === 'function') {
|
|
@@ -202,6 +246,9 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
202
246
|
for (const warning of describeIgnoredOptions(opts)) {
|
|
203
247
|
common_1.Logger.warn(warning, 'AuthModule');
|
|
204
248
|
}
|
|
249
|
+
for (const warning of describeInMemoryDefaults(opts)) {
|
|
250
|
+
common_1.Logger.warn(warning, 'AuthModule');
|
|
251
|
+
}
|
|
205
252
|
(0, personal_data_1.setPersonalDataLogSalt)(process.env.AUTH_IP_HASH_SALT || opts.jwtSecret);
|
|
206
253
|
if (opts.cookie?.useHostPrefix) {
|
|
207
254
|
if (opts.cookie.secure === false) {
|
package/dist/auth.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../src/auth.module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../src/auth.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-auth-guard.d.ts","sourceRoot":"","sources":["../../src/guards/create-auth-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAO7C,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAK3D,MAAM,WAAW,sBAAsB;IAErC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"create-auth-guard.d.ts","sourceRoot":"","sources":["../../src/guards/create-auth-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAO7C,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAK3D,MAAM,WAAW,sBAAsB;IAErC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA8BD,wBAAgB,eAAe,CAC7B,UAAU,GAAE,MAAM,EAAY,EAC9B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CA4BlD"}
|
|
@@ -13,8 +13,8 @@ exports.createAuthGuard = createAuthGuard;
|
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
14
|
const core_1 = require("@nestjs/core");
|
|
15
15
|
const passport_1 = require("@nestjs/passport");
|
|
16
|
-
const graphql_1 = require("@nestjs/graphql");
|
|
17
16
|
const public_decorator_1 = require("../decorators/public.decorator");
|
|
17
|
+
const execution_context_1 = require("../utils/execution-context");
|
|
18
18
|
function createAuthGuard(strategies = ['jwt'], options) {
|
|
19
19
|
let ConfigurableAuthGuard = class ConfigurableAuthGuard extends (0, passport_1.AuthGuard)(strategies) {
|
|
20
20
|
constructor(_reflector) {
|
|
@@ -30,14 +30,11 @@ function createAuthGuard(strategies = ['jwt'], options) {
|
|
|
30
30
|
if (isPublic)
|
|
31
31
|
return true;
|
|
32
32
|
}
|
|
33
|
+
(0, execution_context_1.requireRequestFromContext)(context);
|
|
33
34
|
return super.canActivate(context);
|
|
34
35
|
}
|
|
35
36
|
getRequest(context) {
|
|
36
|
-
|
|
37
|
-
if (contextType === 'graphql') {
|
|
38
|
-
return graphql_1.GqlExecutionContext.create(context).getContext().req;
|
|
39
|
-
}
|
|
40
|
-
return context.switchToHttp().getRequest();
|
|
37
|
+
return (0, execution_context_1.getRequestFromContext)(context);
|
|
41
38
|
}
|
|
42
39
|
};
|
|
43
40
|
ConfigurableAuthGuard = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-auth-guard.js","sourceRoot":"","sources":["../../src/guards/create-auth-guard.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"create-auth-guard.js","sourceRoot":"","sources":["../../src/guards/create-auth-guard.ts"],"names":[],"mappings":";;;;;;;;;;;AA+CA,0CA+BC;AA9ED,2CAAoE;AACpE,uCAAyC;AACzC,+CAA6C;AAC7C,qEAA+D;AAC/D,kEAA8F;AA2C9F,SAAgB,eAAe,CAC7B,aAAuB,CAAC,KAAK,CAAC,EAC9B,OAAgC;IAEhC,IACM,qBAAqB,GAD3B,MACM,qBAAsB,SAAQ,IAAA,oBAAS,EAAC,UAAU,CAAC;QACvD,YAA6B,UAAqB;YAChD,KAAK,EAAE,CAAC;YADmB,eAAU,GAAV,UAAU,CAAW;QAElD,CAAC;QAED,WAAW,CAAC,OAAyB;YACnC,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAU,gCAAa,EAAE;oBACzE,OAAO,CAAC,UAAU,EAAE;oBACpB,OAAO,CAAC,QAAQ,EAAE;iBACnB,CAAC,CAAC;gBACH,IAAI,QAAQ;oBAAE,OAAO,IAAI,CAAC;YAC5B,CAAC;YAGD,IAAA,6CAAyB,EAAC,OAAO,CAAC,CAAC;YAEnC,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,UAAU,CAAC,OAAyB;YAClC,OAAO,IAAA,yCAAqB,EAAC,OAAO,CAAC,CAAC;QACxC,CAAC;KACF,CAAA;IAvBK,qBAAqB;QAD1B,IAAA,mBAAU,GAAE;yCAE8B,gBAAS;OAD9C,qBAAqB,CAuB1B;IAED,OAAO,qBAAqB,CAAC;AAC/B,CAAC"}
|
|
@@ -7,10 +7,12 @@ export declare class CsrfGuard implements CanActivate {
|
|
|
7
7
|
private readonly headerName;
|
|
8
8
|
private readonly requireInProduction;
|
|
9
9
|
private readonly exemptOperations;
|
|
10
|
+
private readonly webSocket;
|
|
10
11
|
private readonly cookieAuthEnabled;
|
|
11
12
|
private readonly nodeEnv;
|
|
12
13
|
constructor(reflector: Reflector, options?: AuthModuleOptions);
|
|
13
14
|
canActivate(context: ExecutionContext): boolean;
|
|
15
|
+
private checkWebSocket;
|
|
14
16
|
private getOperationName;
|
|
15
17
|
}
|
|
16
18
|
//# sourceMappingURL=csrf.guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csrf.guard.d.ts","sourceRoot":"","sources":["../../src/guards/csrf.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"csrf.guard.d.ts","sourceRoot":"","sources":["../../src/guards/csrf.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiCxD,qBACa,SAAU,YAAW,WAAW;IAUzC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAT5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAGd,SAAS,EAAE,SAAS,EAGrC,OAAO,CAAC,EAAE,iBAAiB;IAU7B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IA+D/C,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,gBAAgB;CAyBzB"}
|
|
@@ -28,6 +28,7 @@ let CsrfGuard = CsrfGuard_1 = class CsrfGuard {
|
|
|
28
28
|
this.headerName = (options?.csrf?.headerName || 'X-Requested-With').toLowerCase();
|
|
29
29
|
this.requireInProduction = options?.csrf?.requireInProduction !== false;
|
|
30
30
|
this.exemptOperations = new Set(options?.csrf?.exemptOperations || []);
|
|
31
|
+
this.webSocket = options?.csrf?.webSocket ?? 'reject';
|
|
31
32
|
this.nodeEnv = options?.nodeEnv || process.env.NODE_ENV || 'production';
|
|
32
33
|
}
|
|
33
34
|
canActivate(context) {
|
|
@@ -42,15 +43,21 @@ let CsrfGuard = CsrfGuard_1 = class CsrfGuard {
|
|
|
42
43
|
return true;
|
|
43
44
|
}
|
|
44
45
|
const request = (0, execution_context_1.getRequestFromContext)(context);
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
46
|
+
const operationName = this.getOperationName(request, context);
|
|
47
|
+
if (operationName && this.exemptOperations.has(operationName)) {
|
|
47
48
|
return true;
|
|
48
49
|
}
|
|
49
50
|
if (!this.requireInProduction && this.nodeEnv !== 'production') {
|
|
50
51
|
return true;
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
if ((0, execution_context_1.isWebSocketContext)(context)) {
|
|
54
|
+
return this.checkWebSocket(request, operationName);
|
|
55
|
+
}
|
|
56
|
+
if (!request) {
|
|
57
|
+
this.logger.warn('CSRF validation failed: no request in the execution context');
|
|
58
|
+
throw new common_1.ForbiddenException('CSRF validation failed');
|
|
59
|
+
}
|
|
60
|
+
if (hasAuthorizationHeader(request)) {
|
|
54
61
|
return true;
|
|
55
62
|
}
|
|
56
63
|
const csrfHeader = request.headers?.[this.headerName];
|
|
@@ -61,8 +68,19 @@ let CsrfGuard = CsrfGuard_1 = class CsrfGuard {
|
|
|
61
68
|
}
|
|
62
69
|
return true;
|
|
63
70
|
}
|
|
71
|
+
checkWebSocket(request, operationName) {
|
|
72
|
+
if (request && hasAuthorizationHeader(request)) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (this.webSocket === 'skip') {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
this.logger.warn(`CSRF validation failed: WebSocket subscription${operationName ? ` ${operationName}` : ''} ` +
|
|
79
|
+
"rejected because csrf.webSocket is 'reject'");
|
|
80
|
+
throw new common_1.ForbiddenException('CSRF validation failed');
|
|
81
|
+
}
|
|
64
82
|
getOperationName(request, context) {
|
|
65
|
-
if (request
|
|
83
|
+
if (request?.body?.operationName) {
|
|
66
84
|
return request.body.operationName;
|
|
67
85
|
}
|
|
68
86
|
const contextType = context.getType();
|
|
@@ -87,4 +105,7 @@ exports.CsrfGuard = CsrfGuard = CsrfGuard_1 = __decorate([
|
|
|
87
105
|
__param(1, (0, common_1.Inject)(constants_1.AUTH_MODULE_OPTIONS)),
|
|
88
106
|
__metadata("design:paramtypes", [core_1.Reflector, Object])
|
|
89
107
|
], CsrfGuard);
|
|
108
|
+
function hasAuthorizationHeader(request) {
|
|
109
|
+
return Boolean(request.headers?.authorization ?? request.headers?.Authorization);
|
|
110
|
+
}
|
|
90
111
|
//# sourceMappingURL=csrf.guard.js.map
|