@bigfootai/sdk 1.8.0 → 1.9.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/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +5 -0
- package/dist/index.test.js.map +1 -1
- package/dist/platform-auth.d.ts +68 -0
- package/dist/platform-auth.d.ts.map +1 -0
- package/dist/platform-auth.js +109 -0
- package/dist/platform-auth.js.map +1 -0
- package/dist/platform-auth.test.d.ts +2 -0
- package/dist/platform-auth.test.d.ts.map +1 -0
- package/dist/platform-auth.test.js +143 -0
- package/dist/platform-auth.test.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,eAAe,EAEpB,KAAK,2BAA2B,EAChC,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAOhC,KAAK,aAAa,EAClB,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EAErC,KAAK,oCAAoC,EACzC,KAAK,qCAAqC,EAC1C,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAEhC,KAAK,kCAAkC,EAEvC,KAAK,gCAAgC,EACrC,KAAK,wBAAwB,EAE7B,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,kBAAkB,EAGvB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,MAAM,0BAA0B,CAAC;AAElC,OAAgB,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AAG7E,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAgB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,13 @@ import { pino } from 'pino';
|
|
|
5
5
|
import { pinoHttp } from 'pino-http';
|
|
6
6
|
import { CredentialsExpiredError, ValidationError, errorHandler } from './errors.js';
|
|
7
7
|
import { getConnectionErrorHtml } from './html.js';
|
|
8
|
+
import { createPlatformAuthMiddleware, resolvePlatformKey } from './platform-auth.js';
|
|
8
9
|
export const logger = pino({});
|
|
10
|
+
/**
|
|
11
|
+
* Drops the query string from a request URL. Used for logging: the OAuth
|
|
12
|
+
* callback carries the authorization code and state there.
|
|
13
|
+
*/
|
|
14
|
+
const stripQueryString = (url) => url?.split('?')[0];
|
|
9
15
|
export function createApp(options) {
|
|
10
16
|
const app = express();
|
|
11
17
|
// Expose static files, for provider images, etc.
|
|
@@ -16,10 +22,23 @@ export function createApp(options) {
|
|
|
16
22
|
autoLogging: {
|
|
17
23
|
ignore: (req) => {
|
|
18
24
|
// Ignore logging for health checks
|
|
19
|
-
return req.url === '/api/v1/hello';
|
|
25
|
+
return stripQueryString(req.url) === '/api/v1/hello';
|
|
20
26
|
},
|
|
21
27
|
},
|
|
22
28
|
logger: logger,
|
|
29
|
+
serializers: {
|
|
30
|
+
// Replaces pino's default request serializer, which logs the full
|
|
31
|
+
// URL and every request header. Both carry credentials here: the
|
|
32
|
+
// OAuth callback receives the authorization code and state on its
|
|
33
|
+
// query string, and the platform authenticates with an
|
|
34
|
+
// `Authorization: Bearer` header. Neither may reach the log store,
|
|
35
|
+
// so this emits only what is useful for tracing a request.
|
|
36
|
+
req: (req) => ({
|
|
37
|
+
id: req.id,
|
|
38
|
+
method: req.method,
|
|
39
|
+
url: stripQueryString(req.url),
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
23
42
|
}));
|
|
24
43
|
app.use(express.json({
|
|
25
44
|
limit: '50mb',
|
|
@@ -28,6 +47,13 @@ export function createApp(options) {
|
|
|
28
47
|
extended: true,
|
|
29
48
|
limit: '50mb',
|
|
30
49
|
}));
|
|
50
|
+
// Authenticate the platform before any handler acts on the credentials in a
|
|
51
|
+
// request body. Mounted after the body parsers so rejected requests are still
|
|
52
|
+
// logged, and after `express.static` so provider icons stay public.
|
|
53
|
+
const platformKey = resolvePlatformKey(logger);
|
|
54
|
+
if (platformKey) {
|
|
55
|
+
app.use(createPlatformAuthMiddleware(platformKey));
|
|
56
|
+
}
|
|
31
57
|
app.get('/api/v1/hello', (req, res) => {
|
|
32
58
|
res.send('You look nice today :)');
|
|
33
59
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.test.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import supertest from 'supertest';
|
|
2
2
|
import { describe, expect, it } from 'vitest';
|
|
3
3
|
import { createApp } from './index.js';
|
|
4
|
+
import { ALLOW_UNAUTHENTICATED_VAR } from './platform-auth.js';
|
|
5
|
+
// These tests exercise handler behaviour, not the platform authentication
|
|
6
|
+
// layer, so they run with the check disabled. Coverage for the check itself
|
|
7
|
+
// lives in platform-auth.test.ts.
|
|
8
|
+
process.env[ALLOW_UNAUTHENTICATED_VAR] = 'true';
|
|
4
9
|
function makeConnectedProvider() {
|
|
5
10
|
return {
|
|
6
11
|
application: 'calendar',
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { RequestHandler } from 'express';
|
|
2
|
+
import type { Logger } from './index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Environment variable holding the shared key for this provider. It is the
|
|
5
|
+
* `apiKey` of the platform's `bigfoot-<provider>` token record, issued to the
|
|
6
|
+
* provider at registration, and it authenticates both directions of the
|
|
7
|
+
* platform ↔ provider channel:
|
|
8
|
+
*
|
|
9
|
+
* - **Outbound** — the provider sends it as an `apiKey` header when calling the
|
|
10
|
+
* platform (e.g. posting obtained credentials back), which the platform
|
|
11
|
+
* resolves with `findOneByApiKey`.
|
|
12
|
+
* - **Inbound** — the platform sends the same value as
|
|
13
|
+
* `Authorization: Bearer <token>` on every call to the provider, read from
|
|
14
|
+
* that record with `findOneByName`. This module verifies it.
|
|
15
|
+
*
|
|
16
|
+
* Because one secret serves both directions, rotating it means updating the
|
|
17
|
+
* platform's token record and the provider's configuration together.
|
|
18
|
+
*/
|
|
19
|
+
export declare const BIGFOOT_API_KEY_VAR = "BIGFOOT_API_KEY";
|
|
20
|
+
/**
|
|
21
|
+
* Escape hatch for local development and automated tests. Deliberately verbose
|
|
22
|
+
* and easy to grep for: an unauthenticated provider is a security defect in any
|
|
23
|
+
* deployed environment, so switching the check off has to be a conscious and
|
|
24
|
+
* visible act rather than an accident of configuration.
|
|
25
|
+
*/
|
|
26
|
+
export declare const ALLOW_UNAUTHENTICATED_VAR = "ALLOW_UNAUTHENTICATED_PROVIDER_REQUESTS";
|
|
27
|
+
/**
|
|
28
|
+
* Routes that must remain reachable without the platform key:
|
|
29
|
+
*
|
|
30
|
+
* - `/api/v1/hello` is the load balancer health check.
|
|
31
|
+
* - `/auth/connect` and `/auth/callback` are the browser-facing steps of the
|
|
32
|
+
* OAuth flow. The user's own browser follows the first and the OAuth provider
|
|
33
|
+
* itself invokes the second, so neither can carry a platform credential.
|
|
34
|
+
* `/auth/callback` is safe to leave open because it can do nothing without a
|
|
35
|
+
* provider-issued authorization code bound to a `state` value that resolves
|
|
36
|
+
* to a pending connection record on the platform.
|
|
37
|
+
*
|
|
38
|
+
* Static assets (provider icons) are served by `express.static`, which is
|
|
39
|
+
* mounted ahead of this middleware, so they stay public without being listed.
|
|
40
|
+
*/
|
|
41
|
+
export declare const PUBLIC_PATHS: ReadonlySet<string>;
|
|
42
|
+
/**
|
|
43
|
+
* Compares two secrets without leaking their contents through timing.
|
|
44
|
+
*
|
|
45
|
+
* Both sides are hashed first so the comparison always runs over equal-length
|
|
46
|
+
* buffers: `timingSafeEqual` throws when lengths differ, and comparing lengths
|
|
47
|
+
* up front would leak the expected key's length.
|
|
48
|
+
*/
|
|
49
|
+
export declare const secretsMatch: (presented: string, expected: string) => boolean;
|
|
50
|
+
/** Extracts the token from an `Authorization: Bearer <token>` header. */
|
|
51
|
+
export declare const getBearerToken: (header: string | undefined) => string;
|
|
52
|
+
/**
|
|
53
|
+
* Resolves the expected platform key from the environment.
|
|
54
|
+
*
|
|
55
|
+
* Fails closed: without a key, and without an explicit opt-out, the process
|
|
56
|
+
* refuses to start rather than serving provider endpoints anonymously. A loud
|
|
57
|
+
* failure at deploy time is far preferable to a silent authentication gap.
|
|
58
|
+
*
|
|
59
|
+
* @returns the expected key, or `null` when the check is explicitly disabled.
|
|
60
|
+
*/
|
|
61
|
+
export declare const resolvePlatformKey: (logger: Logger) => string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Rejects any request to a non-public route that does not present the platform
|
|
64
|
+
* key, before it reaches a handler that would act on the credentials in its
|
|
65
|
+
* body.
|
|
66
|
+
*/
|
|
67
|
+
export declare const createPlatformAuthMiddleware: (expectedKey: string) => RequestHandler;
|
|
68
|
+
//# sourceMappingURL=platform-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-auth.d.ts","sourceRoot":"","sources":["../src/platform-auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,4CAA4C,CAAC;AAEnF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,CAAiE,CAAC;AAE/G;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,cAAe,MAAM,YAAY,MAAM,KAAG,OASlE,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,cAAc,WAAY,MAAM,GAAG,SAAS,KAAG,MAW3D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,WAAY,MAAM,KAAG,MAAM,GAAG,IAiB5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,gBAAiB,MAAM,KAAG,cAqBlE,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { createHash, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Environment variable holding the shared key for this provider. It is the
|
|
4
|
+
* `apiKey` of the platform's `bigfoot-<provider>` token record, issued to the
|
|
5
|
+
* provider at registration, and it authenticates both directions of the
|
|
6
|
+
* platform ↔ provider channel:
|
|
7
|
+
*
|
|
8
|
+
* - **Outbound** — the provider sends it as an `apiKey` header when calling the
|
|
9
|
+
* platform (e.g. posting obtained credentials back), which the platform
|
|
10
|
+
* resolves with `findOneByApiKey`.
|
|
11
|
+
* - **Inbound** — the platform sends the same value as
|
|
12
|
+
* `Authorization: Bearer <token>` on every call to the provider, read from
|
|
13
|
+
* that record with `findOneByName`. This module verifies it.
|
|
14
|
+
*
|
|
15
|
+
* Because one secret serves both directions, rotating it means updating the
|
|
16
|
+
* platform's token record and the provider's configuration together.
|
|
17
|
+
*/
|
|
18
|
+
export const BIGFOOT_API_KEY_VAR = 'BIGFOOT_API_KEY';
|
|
19
|
+
/**
|
|
20
|
+
* Escape hatch for local development and automated tests. Deliberately verbose
|
|
21
|
+
* and easy to grep for: an unauthenticated provider is a security defect in any
|
|
22
|
+
* deployed environment, so switching the check off has to be a conscious and
|
|
23
|
+
* visible act rather than an accident of configuration.
|
|
24
|
+
*/
|
|
25
|
+
export const ALLOW_UNAUTHENTICATED_VAR = 'ALLOW_UNAUTHENTICATED_PROVIDER_REQUESTS';
|
|
26
|
+
/**
|
|
27
|
+
* Routes that must remain reachable without the platform key:
|
|
28
|
+
*
|
|
29
|
+
* - `/api/v1/hello` is the load balancer health check.
|
|
30
|
+
* - `/auth/connect` and `/auth/callback` are the browser-facing steps of the
|
|
31
|
+
* OAuth flow. The user's own browser follows the first and the OAuth provider
|
|
32
|
+
* itself invokes the second, so neither can carry a platform credential.
|
|
33
|
+
* `/auth/callback` is safe to leave open because it can do nothing without a
|
|
34
|
+
* provider-issued authorization code bound to a `state` value that resolves
|
|
35
|
+
* to a pending connection record on the platform.
|
|
36
|
+
*
|
|
37
|
+
* Static assets (provider icons) are served by `express.static`, which is
|
|
38
|
+
* mounted ahead of this middleware, so they stay public without being listed.
|
|
39
|
+
*/
|
|
40
|
+
export const PUBLIC_PATHS = new Set(['/api/v1/hello', '/auth/callback', '/auth/connect']);
|
|
41
|
+
/**
|
|
42
|
+
* Compares two secrets without leaking their contents through timing.
|
|
43
|
+
*
|
|
44
|
+
* Both sides are hashed first so the comparison always runs over equal-length
|
|
45
|
+
* buffers: `timingSafeEqual` throws when lengths differ, and comparing lengths
|
|
46
|
+
* up front would leak the expected key's length.
|
|
47
|
+
*/
|
|
48
|
+
export const secretsMatch = (presented, expected) => {
|
|
49
|
+
if (presented.length === 0 || expected.length === 0) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return timingSafeEqual(createHash('sha256').update(presented).digest(), createHash('sha256').update(expected).digest());
|
|
53
|
+
};
|
|
54
|
+
/** Extracts the token from an `Authorization: Bearer <token>` header. */
|
|
55
|
+
export const getBearerToken = (header) => {
|
|
56
|
+
if (!header) {
|
|
57
|
+
return '';
|
|
58
|
+
}
|
|
59
|
+
const parts = header.trim().split(/\s+/);
|
|
60
|
+
if (parts.length !== 2 || parts[0].toLowerCase() !== 'bearer') {
|
|
61
|
+
return '';
|
|
62
|
+
}
|
|
63
|
+
return parts[1];
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Resolves the expected platform key from the environment.
|
|
67
|
+
*
|
|
68
|
+
* Fails closed: without a key, and without an explicit opt-out, the process
|
|
69
|
+
* refuses to start rather than serving provider endpoints anonymously. A loud
|
|
70
|
+
* failure at deploy time is far preferable to a silent authentication gap.
|
|
71
|
+
*
|
|
72
|
+
* @returns the expected key, or `null` when the check is explicitly disabled.
|
|
73
|
+
*/
|
|
74
|
+
export const resolvePlatformKey = (logger) => {
|
|
75
|
+
const key = process.env[BIGFOOT_API_KEY_VAR]?.trim();
|
|
76
|
+
if (key) {
|
|
77
|
+
return key;
|
|
78
|
+
}
|
|
79
|
+
if (process.env[ALLOW_UNAUTHENTICATED_VAR] === 'true') {
|
|
80
|
+
logger.warn({ variable: ALLOW_UNAUTHENTICATED_VAR }, 'Provider endpoints are UNAUTHENTICATED. This is intended for local development only and must never be set in a deployed environment.');
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
throw new Error(`${BIGFOOT_API_KEY_VAR} must be set so provider endpoints can authenticate calls from the platform. Its value must match the platform's "bigfoot-<provider>" token record. Set ${ALLOW_UNAUTHENTICATED_VAR}=true only for local development or tests.`);
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Rejects any request to a non-public route that does not present the platform
|
|
87
|
+
* key, before it reaches a handler that would act on the credentials in its
|
|
88
|
+
* body.
|
|
89
|
+
*/
|
|
90
|
+
export const createPlatformAuthMiddleware = (expectedKey) => {
|
|
91
|
+
return (req, res, next) => {
|
|
92
|
+
if (PUBLIC_PATHS.has(req.path)) {
|
|
93
|
+
next();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (!secretsMatch(getBearerToken(req.get('authorization')), expectedKey)) {
|
|
97
|
+
// Path only — never the presented value, which is credential material.
|
|
98
|
+
req.log?.warn({ path: req.path }, 'Rejected a provider request with a missing or invalid platform key');
|
|
99
|
+
res.status(401).contentType('application/problem+json').json({
|
|
100
|
+
status: 401,
|
|
101
|
+
title: 'Unauthorized',
|
|
102
|
+
type: 'https://getnoded.ai/unauthorized',
|
|
103
|
+
});
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
next();
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=platform-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-auth.js","sourceRoot":"","sources":["../src/platform-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-auth.test.d.ts","sourceRoot":"","sources":["../src/platform-auth.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import supertest from 'supertest';
|
|
2
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { createApp, logger } from './index.js';
|
|
4
|
+
import { ALLOW_UNAUTHENTICATED_VAR, BIGFOOT_API_KEY_VAR, getBearerToken, resolvePlatformKey, secretsMatch, } from './platform-auth.js';
|
|
5
|
+
const PLATFORM_KEY = 'platform-key-value';
|
|
6
|
+
const clearAuthEnv = () => {
|
|
7
|
+
delete process.env[BIGFOOT_API_KEY_VAR];
|
|
8
|
+
delete process.env[ALLOW_UNAUTHENTICATED_VAR];
|
|
9
|
+
};
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
clearAuthEnv();
|
|
12
|
+
});
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
clearAuthEnv();
|
|
15
|
+
});
|
|
16
|
+
/** Builds an app with enough handlers to exercise both public and protected routes. */
|
|
17
|
+
const buildApp = () => createApp({
|
|
18
|
+
auth: {
|
|
19
|
+
async callback() {
|
|
20
|
+
return { connectionId: 'connection-id', credential: { email: 'user@example.com' } };
|
|
21
|
+
},
|
|
22
|
+
async check() {
|
|
23
|
+
return { status: 'ok' };
|
|
24
|
+
},
|
|
25
|
+
async connect() {
|
|
26
|
+
return { type: 'redirect', url: 'https://accounts.google.com/o/oauth2/v2/auth' };
|
|
27
|
+
},
|
|
28
|
+
async refresh() {
|
|
29
|
+
return { credential: { accessToken: 'refreshed' } };
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
const connectedProviderBody = {
|
|
34
|
+
connectedProvider: {
|
|
35
|
+
application: 'calendar',
|
|
36
|
+
credential: { accessToken: 'token', email: 'user@example.com' },
|
|
37
|
+
provider: 'google',
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
describe('getBearerToken', () => {
|
|
41
|
+
it('extracts the token from a well-formed header', () => {
|
|
42
|
+
expect(getBearerToken('Bearer abc123')).toBe('abc123');
|
|
43
|
+
});
|
|
44
|
+
it('accepts any casing of the scheme, as RFC 7235 requires', () => {
|
|
45
|
+
expect(getBearerToken('bearer abc123')).toBe('abc123');
|
|
46
|
+
expect(getBearerToken('BEARER abc123')).toBe('abc123');
|
|
47
|
+
});
|
|
48
|
+
it('returns empty for headers it cannot parse', () => {
|
|
49
|
+
expect(getBearerToken(undefined)).toBe('');
|
|
50
|
+
expect(getBearerToken('')).toBe('');
|
|
51
|
+
expect(getBearerToken('abc123')).toBe('');
|
|
52
|
+
expect(getBearerToken('Basic abc123')).toBe('');
|
|
53
|
+
expect(getBearerToken('Bearer')).toBe('');
|
|
54
|
+
expect(getBearerToken('Bearer a b')).toBe('');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('secretsMatch', () => {
|
|
58
|
+
it('matches identical secrets', () => {
|
|
59
|
+
expect(secretsMatch('same-value', 'same-value')).toBe(true);
|
|
60
|
+
});
|
|
61
|
+
it('rejects different secrets, including ones of differing length', () => {
|
|
62
|
+
expect(secretsMatch('a-value', 'another-value')).toBe(false);
|
|
63
|
+
expect(secretsMatch('short', 'a-much-longer-value')).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
// An empty presented value must never satisfy an empty expected value.
|
|
66
|
+
it('rejects empty values on either side', () => {
|
|
67
|
+
expect(secretsMatch('', '')).toBe(false);
|
|
68
|
+
expect(secretsMatch('', 'expected')).toBe(false);
|
|
69
|
+
expect(secretsMatch('presented', '')).toBe(false);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('resolvePlatformKey', () => {
|
|
73
|
+
it('returns the configured key', () => {
|
|
74
|
+
process.env[BIGFOOT_API_KEY_VAR] = PLATFORM_KEY;
|
|
75
|
+
expect(resolvePlatformKey(logger)).toBe(PLATFORM_KEY);
|
|
76
|
+
});
|
|
77
|
+
// Fail closed: starting without a key would serve provider endpoints anonymously.
|
|
78
|
+
it('throws when no key is configured and the check is not explicitly disabled', () => {
|
|
79
|
+
expect(() => resolvePlatformKey(logger)).toThrow(/BIGFOOT_API_KEY must be set/);
|
|
80
|
+
});
|
|
81
|
+
it('throws when the key is set but blank', () => {
|
|
82
|
+
process.env[BIGFOOT_API_KEY_VAR] = ' ';
|
|
83
|
+
expect(() => resolvePlatformKey(logger)).toThrow(/BIGFOOT_API_KEY must be set/);
|
|
84
|
+
});
|
|
85
|
+
it('warns loudly when the check is explicitly disabled', () => {
|
|
86
|
+
process.env[ALLOW_UNAUTHENTICATED_VAR] = 'true';
|
|
87
|
+
const warn = vi.spyOn(logger, 'warn').mockImplementation(() => undefined);
|
|
88
|
+
expect(resolvePlatformKey(logger)).toBeNull();
|
|
89
|
+
expect(warn).toHaveBeenCalledWith(expect.anything(), expect.stringContaining('UNAUTHENTICATED'));
|
|
90
|
+
warn.mockRestore();
|
|
91
|
+
});
|
|
92
|
+
// Only the exact string enables the opt-out, so a stray value cannot disable auth.
|
|
93
|
+
it('does not treat other values as an opt-out', () => {
|
|
94
|
+
process.env[ALLOW_UNAUTHENTICATED_VAR] = 'false';
|
|
95
|
+
expect(() => resolvePlatformKey(logger)).toThrow();
|
|
96
|
+
process.env[ALLOW_UNAUTHENTICATED_VAR] = '1';
|
|
97
|
+
expect(() => resolvePlatformKey(logger)).toThrow();
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe('platform authentication middleware', () => {
|
|
101
|
+
beforeEach(() => {
|
|
102
|
+
process.env[BIGFOOT_API_KEY_VAR] = PLATFORM_KEY;
|
|
103
|
+
});
|
|
104
|
+
it('rejects a protected route with no credential', async () => {
|
|
105
|
+
const response = await supertest(buildApp()).post('/auth/check').send(connectedProviderBody).expect(401);
|
|
106
|
+
expect(response.body.title).toBe('Unauthorized');
|
|
107
|
+
});
|
|
108
|
+
it('rejects a protected route with the wrong key', async () => {
|
|
109
|
+
await supertest(buildApp())
|
|
110
|
+
.post('/auth/check')
|
|
111
|
+
.set('Authorization', 'Bearer not-the-platform-key')
|
|
112
|
+
.send(connectedProviderBody)
|
|
113
|
+
.expect(401);
|
|
114
|
+
});
|
|
115
|
+
it('allows a protected route with the correct key', async () => {
|
|
116
|
+
const response = await supertest(buildApp())
|
|
117
|
+
.post('/auth/check')
|
|
118
|
+
.set('Authorization', `Bearer ${PLATFORM_KEY}`)
|
|
119
|
+
.send(connectedProviderBody)
|
|
120
|
+
.expect(200);
|
|
121
|
+
expect(response.body).toEqual({ result: { status: 'ok' } });
|
|
122
|
+
});
|
|
123
|
+
it('protects sync and link routes, which act on credentials in the body', async () => {
|
|
124
|
+
const app = buildApp();
|
|
125
|
+
await supertest(app).post('/sync/email').send(connectedProviderBody).expect(401);
|
|
126
|
+
await supertest(app).post('/drive/link').send(connectedProviderBody).expect(401);
|
|
127
|
+
await supertest(app).post('/auth/refresh').send(connectedProviderBody).expect(401);
|
|
128
|
+
});
|
|
129
|
+
// The health check and the two browser-facing OAuth steps cannot carry a
|
|
130
|
+
// platform credential, so they stay reachable without one.
|
|
131
|
+
it('leaves the health check public', async () => {
|
|
132
|
+
await supertest(buildApp()).get('/api/v1/hello').expect(200);
|
|
133
|
+
});
|
|
134
|
+
it('leaves the OAuth connect redirect public', async () => {
|
|
135
|
+
await supertest(buildApp()).get('/auth/connect?application=calendar&connectionId=abc').expect(302);
|
|
136
|
+
});
|
|
137
|
+
it('does not require the key when the check is explicitly disabled', async () => {
|
|
138
|
+
delete process.env[BIGFOOT_API_KEY_VAR];
|
|
139
|
+
process.env[ALLOW_UNAUTHENTICATED_VAR] = 'true';
|
|
140
|
+
await supertest(buildApp()).post('/auth/check').send(connectedProviderBody).expect(200);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=platform-auth.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-auth.test.js","sourceRoot":"","sources":["../src/platform-auth.test.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,YAAY,GACZ,MAAM,oBAAoB,CAAC;AAE5B,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C,MAAM,YAAY,GAAG,GAAG,EAAE;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,UAAU,CAAC,GAAG,EAAE;IACf,YAAY,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACd,YAAY,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,uFAAuF;AACvF,MAAM,QAAQ,GAAG,GAAG,EAAE,CACrB,SAAS,CAAC;IACT,IAAI,EAAE;QACL,KAAK,CAAC,QAAQ;YACb,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAW,CAAC;QAC9F,CAAC;QACD,KAAK,CAAC,KAAK;YACV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,OAAO;YACZ,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,8CAA8C,EAAE,CAAC;QAClF,CAAC;QACD,KAAK,CAAC,OAAO;YACZ,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAW,CAAC;QAC9D,CAAC;KACD;CACD,CAAC,CAAC;AAEJ,MAAM,qBAAqB,GAAG;IAC7B,iBAAiB,EAAE;QAClB,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE;QAC/D,QAAQ,EAAE,QAAQ;KAClB;CACD,CAAC;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;QAEhD,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,kFAAkF;IAClF,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACpF,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC/C,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC;QAEzC,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC7D,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC;QAChD,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAE1E,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEjG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,mFAAmF;IACnF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,GAAG,CAAC;QAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IACnD,UAAU,CAAC,GAAG,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEzG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;aACzB,IAAI,CAAC,aAAa,CAAC;aACnB,GAAG,CAAC,eAAe,EAAE,6BAA6B,CAAC;aACnD,IAAI,CAAC,qBAAqB,CAAC;aAC3B,MAAM,CAAC,GAAG,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;aAC1C,IAAI,CAAC,aAAa,CAAC;aACnB,GAAG,CAAC,eAAe,EAAE,UAAU,YAAY,EAAE,CAAC;aAC9C,IAAI,CAAC,qBAAqB,CAAC;aAC3B,MAAM,CAAC,GAAG,CAAC,CAAC;QAEd,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;QAEvB,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjF,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjF,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,yEAAyE;IACzE,2DAA2D;IAC3D,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC/E,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC;QAEhD,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|