@adaptic/backend 0.0.1027 → 0.0.1029
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/client.cjs +38 -9
- package/esm/auth/service-token.d.ts +76 -0
- package/esm/auth/service-token.d.ts.map +1 -0
- package/esm/auth/service-token.js.map +1 -0
- package/esm/auth/service-token.mjs +189 -0
- package/esm/auth/token-verifier.d.ts +2 -0
- package/esm/auth/token-verifier.d.ts.map +1 -1
- package/esm/auth/token-verifier.js.map +1 -1
- package/esm/auth/token-verifier.mjs +13 -0
- package/esm/client.d.ts.map +1 -1
- package/esm/client.js.map +1 -1
- package/esm/client.mjs +38 -9
- package/package.json +1 -1
package/client.cjs
CHANGED
|
@@ -201,18 +201,36 @@ function isValidJwtFormat(token) {
|
|
|
201
201
|
*/
|
|
202
202
|
async function getAuthToken() {
|
|
203
203
|
let token = '';
|
|
204
|
-
//
|
|
204
|
+
// A caller that installed a token provider has declared that this process
|
|
205
|
+
// authenticates. Honouring that declaration means a provider failure must
|
|
206
|
+
// surface as a failed operation, never as an anonymous one: the environment
|
|
207
|
+
// fallback below exists for processes that never configured a provider, and
|
|
208
|
+
// reaching it after a provider failure would silently downgrade an
|
|
209
|
+
// authenticated service to the anonymous caller it was configured to stop
|
|
210
|
+
// being. That downgrade is invisible at the call site and shows up only as
|
|
211
|
+
// an authorization outage once the server starts enforcing.
|
|
205
212
|
if (customTokenProvider) {
|
|
213
|
+
let provided;
|
|
206
214
|
try {
|
|
207
|
-
|
|
215
|
+
provided = await Promise.resolve(customTokenProvider());
|
|
208
216
|
}
|
|
209
217
|
catch (error) {
|
|
210
|
-
logger_1.logger.error('[Apollo Client]
|
|
218
|
+
logger_1.logger.error('[Apollo Client] Token provider failed; refusing to send an unauthenticated request', {
|
|
211
219
|
error: String(error),
|
|
212
220
|
});
|
|
221
|
+
throw error instanceof Error
|
|
222
|
+
? error
|
|
223
|
+
: new Error(`Token provider failed: ${String(error)}`);
|
|
213
224
|
}
|
|
225
|
+
if (!provided) {
|
|
226
|
+
logger_1.logger.error('[Apollo Client] Token provider returned no token; refusing to send an unauthenticated request');
|
|
227
|
+
throw new Error('Apollo token provider returned an empty token. A configured provider must yield a credential; ' +
|
|
228
|
+
'falling back to an anonymous request would silently drop this process\'s identity.');
|
|
229
|
+
}
|
|
230
|
+
token = provided;
|
|
214
231
|
}
|
|
215
|
-
// Fall back to environment variables
|
|
232
|
+
// Fall back to environment variables. Reached only when no provider was
|
|
233
|
+
// configured, so the historical behaviour of unconfigured callers is intact.
|
|
216
234
|
if (!token) {
|
|
217
235
|
token =
|
|
218
236
|
process.env.NEXT_PUBLIC_SERVER_AUTH_TOKEN ||
|
|
@@ -230,12 +248,23 @@ async function getAuthToken() {
|
|
|
230
248
|
'to the backend. These tokens cannot be verified offline and are ' +
|
|
231
249
|
'rejected by the backend. Use a backend-issued JWT or SERVER_AUTH_TOKEN ' +
|
|
232
250
|
'instead.');
|
|
233
|
-
|
|
251
|
+
token = '';
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
logger_1.logger.warn('[Apollo Client] Token does not appear to be a valid JWT format. ' +
|
|
255
|
+
'Expected format: header.payload.signature (three base64url-encoded parts). ' +
|
|
256
|
+
'Token will not be sent. Please check your NEXT_PUBLIC_SERVER_AUTH_TOKEN or SERVER_AUTH_TOKEN environment variable.');
|
|
257
|
+
token = '';
|
|
234
258
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
259
|
+
}
|
|
260
|
+
// Final fail-closed gate for provider-configured processes: every path that
|
|
261
|
+
// zeroes the token above (malformed shape, opaque OAuth token) would
|
|
262
|
+
// otherwise emit an anonymous request from a process that declared an
|
|
263
|
+
// identity. Rejecting a malformed credential is correct; sending no
|
|
264
|
+
// credential in its place is not.
|
|
265
|
+
if (customTokenProvider && !token) {
|
|
266
|
+
throw new Error('Apollo token provider yielded a credential that failed local validation. ' +
|
|
267
|
+
'Refusing to fall back to an unauthenticated request.');
|
|
239
268
|
}
|
|
240
269
|
return token;
|
|
241
270
|
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-to-service principal minted from a dedicated HS256 secret.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS AS A THIRD PATH RATHER THAN REUSING EITHER EXISTING ONE.
|
|
5
|
+
* `verifyBackendToken` already knows two ways to arrive at a non-user caller,
|
|
6
|
+
* and both are wrong for a long-lived internal service:
|
|
7
|
+
*
|
|
8
|
+
* - `SERVER_AUTH_TOKEN` is an exact string match against a static value. It
|
|
9
|
+
* never expires, carries no audience, names no caller, and cannot be
|
|
10
|
+
* rotated without a simultaneous restart of every holder. A copy taken
|
|
11
|
+
* from a log or a process listing is a permanent credential.
|
|
12
|
+
* - An app-issued JWT verifies against `jwtSecret` — the SAME secret that
|
|
13
|
+
* signs end-user sessions. A service credential keyed on it would make
|
|
14
|
+
* every holder of a user secret able to mint a service identity and vice
|
|
15
|
+
* versa, and it yields `kind: "user"`, which is then subject to
|
|
16
|
+
* per-user tenancy scoping that a service must not be subject to.
|
|
17
|
+
*
|
|
18
|
+
* So the service path is keyed on `BACKEND_SERVICE_JWT_SECRET`, a secret whose
|
|
19
|
+
* ONLY purpose is service identity. It is deliberately distinct from
|
|
20
|
+
* `JWT_SECRET` so that the blast radius of either one leaking stops at that
|
|
21
|
+
* one trust domain, and the verifier refuses to run if the two are ever set to
|
|
22
|
+
* the same value — a configuration that would silently collapse the
|
|
23
|
+
* separation this module exists to create.
|
|
24
|
+
*
|
|
25
|
+
* ABSENCE DISABLES THE PATH; IT NEVER WIDENS IT. With no secret provisioned
|
|
26
|
+
* `verifyServiceToken` returns `null` and the caller falls through to the
|
|
27
|
+
* existing paths, which reject. A service that cannot prove itself is refused,
|
|
28
|
+
* never admitted.
|
|
29
|
+
*
|
|
30
|
+
* @module auth/service-token
|
|
31
|
+
*/
|
|
32
|
+
import { type BackendPrincipal } from './token-verifier';
|
|
33
|
+
/**
|
|
34
|
+
* Issuer every service credential must carry.
|
|
35
|
+
*
|
|
36
|
+
* Pinned rather than free-form so a token minted for some other HS256 system
|
|
37
|
+
* that happens to share the secret cannot be replayed here.
|
|
38
|
+
*/
|
|
39
|
+
export declare const SERVICE_TOKEN_ISSUER = "adaptic-service";
|
|
40
|
+
/**
|
|
41
|
+
* Audience every service credential must carry.
|
|
42
|
+
*
|
|
43
|
+
* This backend is the only intended recipient. Binding the audience is what
|
|
44
|
+
* stops a credential minted for a sibling service from being replayed against
|
|
45
|
+
* the data tier.
|
|
46
|
+
*/
|
|
47
|
+
export declare const SERVICE_TOKEN_AUDIENCE = "adaptic-backend";
|
|
48
|
+
/** Minimum length for the dedicated service secret, in characters. */
|
|
49
|
+
export declare const MINIMUM_SERVICE_SECRET_LENGTH = 32;
|
|
50
|
+
/**
|
|
51
|
+
* Largest lifetime this backend will honour on a service credential, seconds.
|
|
52
|
+
*
|
|
53
|
+
* A credential's own `exp` bounds the replay window on a leak, so a minter is
|
|
54
|
+
* free to choose a shorter one — but it may not choose a longer one and
|
|
55
|
+
* thereby re-create the non-expiring static bearer this path replaces. One
|
|
56
|
+
* hour is comfortably above the 15-minute lifetime the engine mints and far
|
|
57
|
+
* below "effectively permanent".
|
|
58
|
+
*/
|
|
59
|
+
export declare const MAX_SERVICE_TOKEN_LIFETIME_SEC = 3600;
|
|
60
|
+
/**
|
|
61
|
+
* Attempt to establish a service principal from a bearer token.
|
|
62
|
+
*
|
|
63
|
+
* Returns `null` — meaning "not a service credential, keep looking" — only
|
|
64
|
+
* when the path is unprovisioned or the signature does not belong to the
|
|
65
|
+
* service secret. Once a token IS proven to carry that signature, every
|
|
66
|
+
* subsequent problem with it (expiry, wrong audience, missing subject,
|
|
67
|
+
* over-long lifetime) throws, because at that point the caller's intent is
|
|
68
|
+
* unambiguous and falling through would report a misleading `bad_signature`
|
|
69
|
+
* for what is actually an expired or mis-scoped service token.
|
|
70
|
+
*
|
|
71
|
+
* @param token - Raw bearer token; assumed to be three dot-separated segments.
|
|
72
|
+
* @returns The verified service principal, or `null` to fall through.
|
|
73
|
+
* @throws {AuthError} When the token is ours but unacceptable.
|
|
74
|
+
*/
|
|
75
|
+
export declare function verifyServiceToken(token: string): BackendPrincipal | null;
|
|
76
|
+
//# sourceMappingURL=service-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-token.d.ts","sourceRoot":"","sources":["../../../src/auth/service-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAOH,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAExD,sEAAsE;AACtE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAC;AA6BnD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA+FzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-token.js","sourceRoot":"","sources":["../../../src/auth/service-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-to-service principal minted from a dedicated HS256 secret.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS AS A THIRD PATH RATHER THAN REUSING EITHER EXISTING ONE.
|
|
5
|
+
* `verifyBackendToken` already knows two ways to arrive at a non-user caller,
|
|
6
|
+
* and both are wrong for a long-lived internal service:
|
|
7
|
+
*
|
|
8
|
+
* - `SERVER_AUTH_TOKEN` is an exact string match against a static value. It
|
|
9
|
+
* never expires, carries no audience, names no caller, and cannot be
|
|
10
|
+
* rotated without a simultaneous restart of every holder. A copy taken
|
|
11
|
+
* from a log or a process listing is a permanent credential.
|
|
12
|
+
* - An app-issued JWT verifies against `jwtSecret` — the SAME secret that
|
|
13
|
+
* signs end-user sessions. A service credential keyed on it would make
|
|
14
|
+
* every holder of a user secret able to mint a service identity and vice
|
|
15
|
+
* versa, and it yields `kind: "user"`, which is then subject to
|
|
16
|
+
* per-user tenancy scoping that a service must not be subject to.
|
|
17
|
+
*
|
|
18
|
+
* So the service path is keyed on `BACKEND_SERVICE_JWT_SECRET`, a secret whose
|
|
19
|
+
* ONLY purpose is service identity. It is deliberately distinct from
|
|
20
|
+
* `JWT_SECRET` so that the blast radius of either one leaking stops at that
|
|
21
|
+
* one trust domain, and the verifier refuses to run if the two are ever set to
|
|
22
|
+
* the same value — a configuration that would silently collapse the
|
|
23
|
+
* separation this module exists to create.
|
|
24
|
+
*
|
|
25
|
+
* ABSENCE DISABLES THE PATH; IT NEVER WIDENS IT. With no secret provisioned
|
|
26
|
+
* `verifyServiceToken` returns `null` and the caller falls through to the
|
|
27
|
+
* existing paths, which reject. A service that cannot prove itself is refused,
|
|
28
|
+
* never admitted.
|
|
29
|
+
*
|
|
30
|
+
* @module auth/service-token
|
|
31
|
+
*/
|
|
32
|
+
import jwt, { JsonWebTokenError, TokenExpiredError } from 'jsonwebtoken';
|
|
33
|
+
import { jwtSecret } from '../config/jwtConfig.mjs';
|
|
34
|
+
import { logger } from '../utils/logger.mjs';
|
|
35
|
+
import { AuthError } from './token-verifier.mjs';
|
|
36
|
+
/**
|
|
37
|
+
* Issuer every service credential must carry.
|
|
38
|
+
*
|
|
39
|
+
* Pinned rather than free-form so a token minted for some other HS256 system
|
|
40
|
+
* that happens to share the secret cannot be replayed here.
|
|
41
|
+
*/
|
|
42
|
+
export const SERVICE_TOKEN_ISSUER = 'adaptic-service';
|
|
43
|
+
/**
|
|
44
|
+
* Audience every service credential must carry.
|
|
45
|
+
*
|
|
46
|
+
* This backend is the only intended recipient. Binding the audience is what
|
|
47
|
+
* stops a credential minted for a sibling service from being replayed against
|
|
48
|
+
* the data tier.
|
|
49
|
+
*/
|
|
50
|
+
export const SERVICE_TOKEN_AUDIENCE = 'adaptic-backend';
|
|
51
|
+
/** Minimum length for the dedicated service secret, in characters. */
|
|
52
|
+
export const MINIMUM_SERVICE_SECRET_LENGTH = 32;
|
|
53
|
+
/**
|
|
54
|
+
* Largest lifetime this backend will honour on a service credential, seconds.
|
|
55
|
+
*
|
|
56
|
+
* A credential's own `exp` bounds the replay window on a leak, so a minter is
|
|
57
|
+
* free to choose a shorter one — but it may not choose a longer one and
|
|
58
|
+
* thereby re-create the non-expiring static bearer this path replaces. One
|
|
59
|
+
* hour is comfortably above the 15-minute lifetime the engine mints and far
|
|
60
|
+
* below "effectively permanent".
|
|
61
|
+
*/
|
|
62
|
+
export const MAX_SERVICE_TOKEN_LIFETIME_SEC = 3600;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve the dedicated service secret, or `null` when the path is not
|
|
65
|
+
* provisioned.
|
|
66
|
+
*
|
|
67
|
+
* Read per call rather than cached at import so an operator rotating the
|
|
68
|
+
* Railway variable takes effect on the next request rather than the next
|
|
69
|
+
* restart — the same discipline `SERVER_AUTH_TOKEN` already follows.
|
|
70
|
+
*
|
|
71
|
+
* @returns The secret, or `null` when unset, blank, or too short to be one.
|
|
72
|
+
*/
|
|
73
|
+
function resolveServiceSecret() {
|
|
74
|
+
const raw = process.env.BACKEND_SERVICE_JWT_SECRET;
|
|
75
|
+
if (typeof raw !== 'string')
|
|
76
|
+
return null;
|
|
77
|
+
const secret = raw.trim();
|
|
78
|
+
if (secret.length === 0)
|
|
79
|
+
return null;
|
|
80
|
+
if (secret.length < MINIMUM_SERVICE_SECRET_LENGTH) {
|
|
81
|
+
logger.error('[auth] BACKEND_SERVICE_JWT_SECRET is set but shorter than the minimum ' +
|
|
82
|
+
`${MINIMUM_SERVICE_SECRET_LENGTH} characters; the service-principal path is DISABLED. ` +
|
|
83
|
+
'Service callers will be rejected until a long enough secret is provisioned.', { secretLength: secret.length });
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
return secret;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Attempt to establish a service principal from a bearer token.
|
|
90
|
+
*
|
|
91
|
+
* Returns `null` — meaning "not a service credential, keep looking" — only
|
|
92
|
+
* when the path is unprovisioned or the signature does not belong to the
|
|
93
|
+
* service secret. Once a token IS proven to carry that signature, every
|
|
94
|
+
* subsequent problem with it (expiry, wrong audience, missing subject,
|
|
95
|
+
* over-long lifetime) throws, because at that point the caller's intent is
|
|
96
|
+
* unambiguous and falling through would report a misleading `bad_signature`
|
|
97
|
+
* for what is actually an expired or mis-scoped service token.
|
|
98
|
+
*
|
|
99
|
+
* @param token - Raw bearer token; assumed to be three dot-separated segments.
|
|
100
|
+
* @returns The verified service principal, or `null` to fall through.
|
|
101
|
+
* @throws {AuthError} When the token is ours but unacceptable.
|
|
102
|
+
*/
|
|
103
|
+
export function verifyServiceToken(token) {
|
|
104
|
+
const secret = resolveServiceSecret();
|
|
105
|
+
if (secret === null)
|
|
106
|
+
return null;
|
|
107
|
+
// A service secret set equal to the user-session secret would let any
|
|
108
|
+
// end-user JWT that carries our issuer/audience become a `server` principal,
|
|
109
|
+
// which bypasses every tenancy scope and role gate. Refuse rather than
|
|
110
|
+
// silently operate with the separation collapsed.
|
|
111
|
+
if (secret === jwtSecret) {
|
|
112
|
+
logger.error('[auth] BACKEND_SERVICE_JWT_SECRET is identical to JWT_SECRET. ' +
|
|
113
|
+
'These MUST be distinct secrets — sharing them collapses the ' +
|
|
114
|
+
'separation between end-user and service identity. Refusing to ' +
|
|
115
|
+
'verify service tokens until they differ.');
|
|
116
|
+
throw new AuthError('invalid_token', 'misconfigured');
|
|
117
|
+
}
|
|
118
|
+
let payload;
|
|
119
|
+
try {
|
|
120
|
+
// Algorithm pinned to HS256 for the same reason path 2 pins it: an
|
|
121
|
+
// unpinned verify accepts `alg: "none"` on some versions, which turns a
|
|
122
|
+
// forged unsigned token into an authenticated service principal.
|
|
123
|
+
const verified = jwt.verify(token, secret, {
|
|
124
|
+
algorithms: ['HS256'],
|
|
125
|
+
issuer: SERVICE_TOKEN_ISSUER,
|
|
126
|
+
audience: SERVICE_TOKEN_AUDIENCE,
|
|
127
|
+
});
|
|
128
|
+
if (typeof verified === 'string') {
|
|
129
|
+
throw new AuthError('invalid_token', 'malformed');
|
|
130
|
+
}
|
|
131
|
+
payload = verified;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
if (error instanceof AuthError)
|
|
135
|
+
throw error;
|
|
136
|
+
// A valid signature with an expired `exp` is unambiguously our token:
|
|
137
|
+
// `jsonwebtoken` checks the signature before the claims, so reaching
|
|
138
|
+
// TokenExpiredError proves the secret matched. Report the real reason.
|
|
139
|
+
if (error instanceof TokenExpiredError) {
|
|
140
|
+
throw new AuthError('invalid_token', 'expired');
|
|
141
|
+
}
|
|
142
|
+
if (error instanceof JsonWebTokenError) {
|
|
143
|
+
const message = (error.message || '').toLowerCase();
|
|
144
|
+
// Signature mismatch means this is simply not a service credential —
|
|
145
|
+
// fall through so the app-JWT and Google paths get their turn.
|
|
146
|
+
if (message.includes('invalid signature') ||
|
|
147
|
+
message.includes('invalid algorithm')) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
// Signature matched but a bound claim did not. That IS a service token
|
|
151
|
+
// aimed at the wrong recipient; reject it rather than fall through.
|
|
152
|
+
if (message.includes('audience') || message.includes('issuer')) {
|
|
153
|
+
logger.warn('[auth] service token rejected: claim binding mismatch', {
|
|
154
|
+
errorMessage: error.message,
|
|
155
|
+
});
|
|
156
|
+
throw new AuthError('invalid_token', 'bad_audience');
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
const sub = typeof payload.sub === 'string' ? payload.sub.trim() : '';
|
|
163
|
+
if (sub.length === 0) {
|
|
164
|
+
// An unattributable service credential defeats the audit trail this path
|
|
165
|
+
// is supposed to provide over the static token it replaces.
|
|
166
|
+
logger.warn('[auth] service token rejected: missing sub claim');
|
|
167
|
+
throw new AuthError('invalid_token', 'malformed');
|
|
168
|
+
}
|
|
169
|
+
const iat = payload.iat;
|
|
170
|
+
const exp = payload.exp;
|
|
171
|
+
if (typeof exp !== 'number' || !Number.isFinite(exp)) {
|
|
172
|
+
// Without an expiry this is a permanent bearer — exactly the property the
|
|
173
|
+
// service path exists to avoid.
|
|
174
|
+
logger.warn('[auth] service token rejected: missing exp claim', { sub });
|
|
175
|
+
throw new AuthError('invalid_token', 'malformed');
|
|
176
|
+
}
|
|
177
|
+
if (typeof iat === 'number' &&
|
|
178
|
+
Number.isFinite(iat) &&
|
|
179
|
+
exp - iat > MAX_SERVICE_TOKEN_LIFETIME_SEC) {
|
|
180
|
+
logger.warn('[auth] service token rejected: lifetime exceeds ceiling', {
|
|
181
|
+
sub,
|
|
182
|
+
lifetimeSec: exp - iat,
|
|
183
|
+
ceilingSec: MAX_SERVICE_TOKEN_LIFETIME_SEC,
|
|
184
|
+
});
|
|
185
|
+
throw new AuthError('invalid_token', 'bad_audience');
|
|
186
|
+
}
|
|
187
|
+
return { kind: 'server' };
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=service-token.js.map
|
|
@@ -128,6 +128,8 @@ export declare function parseRolesFromJWT(payload: jwt.JwtPayload | string | und
|
|
|
128
128
|
*
|
|
129
129
|
* - Empty or whitespace-only -> `malformed`.
|
|
130
130
|
* - Exact match with `SERVER_AUTH_TOKEN` -> `{ kind: "server" }`.
|
|
131
|
+
* - HS256 JWT signed with `BACKEND_SERVICE_JWT_SECRET`, issuer `adaptic-service`,
|
|
132
|
+
* audience `adaptic-backend` -> `{ kind: "server" }`. See `./service-token`.
|
|
131
133
|
* - Single segment (no dots) -> `opaque_access_token_rejected`. This is the
|
|
132
134
|
* structural catch for OAuth access tokens, which cannot be verified offline.
|
|
133
135
|
* - Exactly 3 dot-separated segments -> attempt local JWT verify, then Google
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-verifier.d.ts","sourceRoot":"","sources":["../../../src/auth/token-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,GAA6C,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"token-verifier.d.ts","sourceRoot":"","sources":["../../../src/auth/token-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,GAA6C,MAAM,cAAc,CAAC;AAUzE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,SAAS,GACT,cAAc,GACd,eAAe,GACf,8BAA8B,GAC9B,eAAe,CAAC;AAEpB;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpE;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAgB,IAAI,EAAE,eAAe,CAAC;IACtC,SAAgB,MAAM,EAAE,eAAe,CAAC;gBAE5B,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM;CAQ7E;AAcD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAkC7C;AAED;;;;;;;GAOG;AACH,wBAAgB,qCAAqC,IAAI,IAAI,CAgB5D;AAED;;;;;;GAMG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAGxD;AAwBD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,GAC3C,MAAM,EAAE,CAiBV;AAiCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC,CA0L3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-verifier.js","sourceRoot":"","sources":["../../../src/auth/token-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,GAAG,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"token-verifier.js","sourceRoot":"","sources":["../../../src/auth/token-verifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,7 @@ import jwt, { JsonWebTokenError, TokenExpiredError } from 'jsonwebtoken';
|
|
|
33
33
|
import { OAuth2Client } from 'google-auth-library';
|
|
34
34
|
import { jwtSecret } from '../config/jwtConfig.mjs';
|
|
35
35
|
import { logger } from '../utils/logger.mjs';
|
|
36
|
+
import { verifyServiceToken } from './service-token.mjs';
|
|
36
37
|
/**
|
|
37
38
|
* Typed authentication error. The `reason` discriminates the failure case;
|
|
38
39
|
* callers may map `reason` to a transport-specific error code (HTTP 401,
|
|
@@ -222,6 +223,8 @@ function classifyJwtError(error) {
|
|
|
222
223
|
*
|
|
223
224
|
* - Empty or whitespace-only -> `malformed`.
|
|
224
225
|
* - Exact match with `SERVER_AUTH_TOKEN` -> `{ kind: "server" }`.
|
|
226
|
+
* - HS256 JWT signed with `BACKEND_SERVICE_JWT_SECRET`, issuer `adaptic-service`,
|
|
227
|
+
* audience `adaptic-backend` -> `{ kind: "server" }`. See `./service-token`.
|
|
225
228
|
* - Single segment (no dots) -> `opaque_access_token_rejected`. This is the
|
|
226
229
|
* structural catch for OAuth access tokens, which cannot be verified offline.
|
|
227
230
|
* - Exactly 3 dot-separated segments -> attempt local JWT verify, then Google
|
|
@@ -269,6 +272,16 @@ export async function verifyBackendToken(token) {
|
|
|
269
272
|
});
|
|
270
273
|
throw new AuthError('invalid_token', 'malformed');
|
|
271
274
|
}
|
|
275
|
+
// ---- path 1b: dedicated service credential -------------------------------
|
|
276
|
+
// Checked before the app-JWT path because a service credential is signed
|
|
277
|
+
// with a DIFFERENT secret: reaching path 2 first would classify it as
|
|
278
|
+
// `bad_signature` and report an unprovisioned-service outage as a forgery.
|
|
279
|
+
// Returns null when the path is unprovisioned or the signature is not ours,
|
|
280
|
+
// which leaves every existing token's behaviour byte-identical.
|
|
281
|
+
const servicePrincipal = verifyServiceToken(token);
|
|
282
|
+
if (servicePrincipal !== null) {
|
|
283
|
+
return servicePrincipal;
|
|
284
|
+
}
|
|
272
285
|
// ---- path 2: app-issued JWT ----------------------------------------------
|
|
273
286
|
// Try local JWT verification first. On success, return a user principal.
|
|
274
287
|
// On failure, capture the reason but DO NOT throw yet — we may still be
|
package/esm/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,IAAI,gBAAgB,EAChC,aAAa,IAAI,iBAAiB,EAClC,qBAAqB,EAEtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEpE,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,GACtB,CAAC;AAGF,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,cAAc,gBAAgB,EAAE,YAAY,CAAC;IAC3D,aAAa,EAAE,cAAc,6CAA6C,EAAE,aAAa,CAAC;IAC1F,QAAQ,EAAE,cAAc,0BAA0B,EAAE,QAAQ,CAAC;IAC7D,GAAG,EAAE,cAAc,gBAAgB,EAAE,GAAG,CAAC;IACzC,WAAW,EAAE,cAAc,gBAAgB,EAAE,WAAW,CAAC;IACzD,KAAK,EAAE,cAAc,gBAAgB,EAAE,KAAK,CAAC;IAC7C,UAAU,EAAE,cAAc,6BAA6B,EAAE,UAAU,CAAC;IACpE,OAAO,EAAE,cAAc,2BAA2B,EAAE,OAAO,CAAC;IAC5D;;;;;;OAMG;IACH,4BAA4B,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACrC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAGD,UAAU,oBAAoB;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;;;OASG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAoBD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAgJ3D;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACpC,IAAI,CAKN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAS9D;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/esm/client.mjs
CHANGED
|
@@ -158,18 +158,36 @@ function isValidJwtFormat(token) {
|
|
|
158
158
|
*/
|
|
159
159
|
async function getAuthToken() {
|
|
160
160
|
let token = '';
|
|
161
|
-
//
|
|
161
|
+
// A caller that installed a token provider has declared that this process
|
|
162
|
+
// authenticates. Honouring that declaration means a provider failure must
|
|
163
|
+
// surface as a failed operation, never as an anonymous one: the environment
|
|
164
|
+
// fallback below exists for processes that never configured a provider, and
|
|
165
|
+
// reaching it after a provider failure would silently downgrade an
|
|
166
|
+
// authenticated service to the anonymous caller it was configured to stop
|
|
167
|
+
// being. That downgrade is invisible at the call site and shows up only as
|
|
168
|
+
// an authorization outage once the server starts enforcing.
|
|
162
169
|
if (customTokenProvider) {
|
|
170
|
+
let provided;
|
|
163
171
|
try {
|
|
164
|
-
|
|
172
|
+
provided = await Promise.resolve(customTokenProvider());
|
|
165
173
|
}
|
|
166
174
|
catch (error) {
|
|
167
|
-
logger.error('[Apollo Client]
|
|
175
|
+
logger.error('[Apollo Client] Token provider failed; refusing to send an unauthenticated request', {
|
|
168
176
|
error: String(error),
|
|
169
177
|
});
|
|
178
|
+
throw error instanceof Error
|
|
179
|
+
? error
|
|
180
|
+
: new Error(`Token provider failed: ${String(error)}`);
|
|
170
181
|
}
|
|
182
|
+
if (!provided) {
|
|
183
|
+
logger.error('[Apollo Client] Token provider returned no token; refusing to send an unauthenticated request');
|
|
184
|
+
throw new Error('Apollo token provider returned an empty token. A configured provider must yield a credential; ' +
|
|
185
|
+
'falling back to an anonymous request would silently drop this process\'s identity.');
|
|
186
|
+
}
|
|
187
|
+
token = provided;
|
|
171
188
|
}
|
|
172
|
-
// Fall back to environment variables
|
|
189
|
+
// Fall back to environment variables. Reached only when no provider was
|
|
190
|
+
// configured, so the historical behaviour of unconfigured callers is intact.
|
|
173
191
|
if (!token) {
|
|
174
192
|
token =
|
|
175
193
|
process.env.NEXT_PUBLIC_SERVER_AUTH_TOKEN ||
|
|
@@ -187,12 +205,23 @@ async function getAuthToken() {
|
|
|
187
205
|
'to the backend. These tokens cannot be verified offline and are ' +
|
|
188
206
|
'rejected by the backend. Use a backend-issued JWT or SERVER_AUTH_TOKEN ' +
|
|
189
207
|
'instead.');
|
|
190
|
-
|
|
208
|
+
token = '';
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
logger.warn('[Apollo Client] Token does not appear to be a valid JWT format. ' +
|
|
212
|
+
'Expected format: header.payload.signature (three base64url-encoded parts). ' +
|
|
213
|
+
'Token will not be sent. Please check your NEXT_PUBLIC_SERVER_AUTH_TOKEN or SERVER_AUTH_TOKEN environment variable.');
|
|
214
|
+
token = '';
|
|
191
215
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
216
|
+
}
|
|
217
|
+
// Final fail-closed gate for provider-configured processes: every path that
|
|
218
|
+
// zeroes the token above (malformed shape, opaque OAuth token) would
|
|
219
|
+
// otherwise emit an anonymous request from a process that declared an
|
|
220
|
+
// identity. Rejecting a malformed credential is correct; sending no
|
|
221
|
+
// credential in its place is not.
|
|
222
|
+
if (customTokenProvider && !token) {
|
|
223
|
+
throw new Error('Apollo token provider yielded a credential that failed local validation. ' +
|
|
224
|
+
'Refusing to fall back to an unauthenticated request.');
|
|
196
225
|
}
|
|
197
226
|
return token;
|
|
198
227
|
}
|
package/package.json
CHANGED