@powersync/service-core 0.0.0-dev-20250724093011 → 0.0.0-dev-20250729101933
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 +7 -4
- package/dist/api/diagnostics.js +2 -2
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/auth/KeyStore.d.ts +19 -0
- package/dist/auth/KeyStore.js +16 -4
- package/dist/auth/KeyStore.js.map +1 -1
- package/dist/auth/RemoteJWKSCollector.d.ts +3 -0
- package/dist/auth/RemoteJWKSCollector.js +3 -1
- package/dist/auth/RemoteJWKSCollector.js.map +1 -1
- package/dist/auth/StaticSupabaseKeyCollector.d.ts +2 -1
- package/dist/auth/StaticSupabaseKeyCollector.js +1 -1
- package/dist/auth/StaticSupabaseKeyCollector.js.map +1 -1
- package/dist/auth/utils.d.ts +19 -0
- package/dist/auth/utils.js +106 -3
- package/dist/auth/utils.js.map +1 -1
- package/dist/emitters/EmitterEngine.js +0 -3
- package/dist/emitters/EmitterEngine.js.map +1 -1
- package/dist/storage/BucketStorageBatch.d.ts +12 -2
- package/dist/storage/BucketStorageBatch.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +0 -1
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/util/config/compound-config-collector.js +23 -0
- package/dist/util/config/compound-config-collector.js.map +1 -1
- package/dist/util/lsn.d.ts +4 -0
- package/dist/util/lsn.js +11 -0
- package/dist/util/lsn.js.map +1 -0
- package/dist/util/util-index.d.ts +1 -0
- package/dist/util/util-index.js +1 -0
- package/dist/util/util-index.js.map +1 -1
- package/package.json +4 -4
- package/src/api/diagnostics.ts +2 -2
- package/src/auth/KeyStore.ts +28 -4
- package/src/auth/RemoteJWKSCollector.ts +5 -2
- package/src/auth/StaticSupabaseKeyCollector.ts +1 -1
- package/src/auth/utils.ts +123 -3
- package/src/emitters/EmitterEngine.ts +0 -3
- package/src/storage/BucketStorageBatch.ts +13 -2
- package/src/storage/SyncRulesBucketStorage.ts +0 -2
- package/src/util/config/compound-config-collector.ts +24 -0
- package/src/util/lsn.ts +8 -0
- package/src/util/util-index.ts +1 -0
- package/test/src/auth.test.ts +323 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# @powersync/service-core
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20250729101933
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
|
+
- 2378e36: Drop support for legacy Supabase keys via app.settings.jwt_secret.
|
|
7
8
|
- 4ebc3bf: Report lack of commits or keepalives as issues in the diagnostics api.
|
|
9
|
+
- 2378e36: Add automatic support for Supabase JWT Signing Keys.
|
|
10
|
+
- d56eeb9: Delay switching over to new sync rules until we have a consistent checkpoint.
|
|
8
11
|
|
|
9
12
|
### Patch Changes
|
|
10
13
|
|
|
@@ -13,9 +16,9 @@
|
|
|
13
16
|
- a700ec9: Reporting mongo storage added to storage engine.
|
|
14
17
|
- Updated dependencies [f1d187b]
|
|
15
18
|
- Updated dependencies [a700ec9]
|
|
16
|
-
- @powersync/service-types@0.0.0-dev-
|
|
17
|
-
- @powersync/lib-services-framework@0.0.0-dev-
|
|
18
|
-
- @powersync/service-rsocket-router@0.0.0-dev-
|
|
19
|
+
- @powersync/service-types@0.0.0-dev-20250729101933
|
|
20
|
+
- @powersync/lib-services-framework@0.0.0-dev-20250729101933
|
|
21
|
+
- @powersync/service-rsocket-router@0.0.0-dev-20250729101933
|
|
19
22
|
|
|
20
23
|
## 1.13.4
|
|
21
24
|
|
package/dist/api/diagnostics.js
CHANGED
|
@@ -111,7 +111,7 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
111
111
|
const lastTime = Math.max(sync_rules.last_checkpoint_ts?.getTime() ?? 0, sync_rules.last_keepalive_ts?.getTime() ?? 0);
|
|
112
112
|
const lagSeconds = Math.round((Date.now() - lastTime) / 1000);
|
|
113
113
|
// On idle instances, keepalive messages are only persisted every 60 seconds.
|
|
114
|
-
// So we use
|
|
114
|
+
// So we use 5 minutes as a threshold for warnings, and 15 minutes for critical.
|
|
115
115
|
// The replication lag metric should give a more granular value, but that is not available directly
|
|
116
116
|
// in the API containers used for diagnostics, and this should give a good enough indication.
|
|
117
117
|
if (lagSeconds > 15 * 60) {
|
|
@@ -120,7 +120,7 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
120
120
|
message: `No replicated commit in more than ${lagSeconds}s`
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
-
else if (lagSeconds >
|
|
123
|
+
else if (lagSeconds > 5 * 60) {
|
|
124
124
|
errors.push({
|
|
125
125
|
level: 'warning',
|
|
126
126
|
message: `No replicated commit in more than ${lagSeconds}s`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/KeyStore.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { JwtPayload } from './JwtPayload.js';
|
|
2
2
|
import { KeyCollector } from './KeyCollector.js';
|
|
3
|
+
import { SupabaseAuthDetails } from './utils.js';
|
|
3
4
|
/**
|
|
4
5
|
* KeyStore to get keys and verify tokens.
|
|
5
6
|
*
|
|
@@ -32,6 +33,24 @@ export declare class KeyStore<Collector extends KeyCollector = KeyCollector> {
|
|
|
32
33
|
* @internal
|
|
33
34
|
*/
|
|
34
35
|
collector: Collector;
|
|
36
|
+
/**
|
|
37
|
+
* For debug purposes only.
|
|
38
|
+
*
|
|
39
|
+
* This is very Supabase-specific, but we need the info on this level. For example,
|
|
40
|
+
* we want to detect cases where a Supabase token is used, but Supabase auth is not enabled
|
|
41
|
+
* (no Supabase collector configured).
|
|
42
|
+
*/
|
|
43
|
+
supabaseAuthDebug: {
|
|
44
|
+
/**
|
|
45
|
+
* This can be populated without jwksEnabled, but not the other way around.
|
|
46
|
+
*/
|
|
47
|
+
jwksDetails: SupabaseAuthDetails | null;
|
|
48
|
+
jwksEnabled: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* This can be enabled without jwksDetails populated.
|
|
51
|
+
*/
|
|
52
|
+
sharedSecretEnabled: boolean;
|
|
53
|
+
};
|
|
35
54
|
constructor(collector: Collector);
|
|
36
55
|
verifyJwt(token: string, options: {
|
|
37
56
|
defaultAudiences: string[];
|
package/dist/auth/KeyStore.js
CHANGED
|
@@ -2,7 +2,7 @@ import { AuthorizationError, ErrorCode, logger } from '@powersync/lib-services-f
|
|
|
2
2
|
import * as jose from 'jose';
|
|
3
3
|
import secs from '../util/secs.js';
|
|
4
4
|
import { SUPPORTED_ALGORITHMS } from './KeySpec.js';
|
|
5
|
-
import { mapAuthError } from './utils.js';
|
|
5
|
+
import { debugKeyNotFound, mapAuthError } from './utils.js';
|
|
6
6
|
/**
|
|
7
7
|
* KeyStore to get keys and verify tokens.
|
|
8
8
|
*
|
|
@@ -35,6 +35,18 @@ export class KeyStore {
|
|
|
35
35
|
* @internal
|
|
36
36
|
*/
|
|
37
37
|
collector;
|
|
38
|
+
/**
|
|
39
|
+
* For debug purposes only.
|
|
40
|
+
*
|
|
41
|
+
* This is very Supabase-specific, but we need the info on this level. For example,
|
|
42
|
+
* we want to detect cases where a Supabase token is used, but Supabase auth is not enabled
|
|
43
|
+
* (no Supabase collector configured).
|
|
44
|
+
*/
|
|
45
|
+
supabaseAuthDebug = {
|
|
46
|
+
jwksDetails: null,
|
|
47
|
+
jwksEnabled: false,
|
|
48
|
+
sharedSecretEnabled: false
|
|
49
|
+
};
|
|
38
50
|
constructor(collector) {
|
|
39
51
|
this.collector = collector;
|
|
40
52
|
}
|
|
@@ -106,7 +118,7 @@ export class KeyStore {
|
|
|
106
118
|
if (!key.matchesAlgorithm(header.alg)) {
|
|
107
119
|
throw new AuthorizationError(ErrorCode.PSYNC_S2101, `Unexpected token algorithm ${header.alg}`, {
|
|
108
120
|
configurationDetails: `Key kid: ${key.source.kid}, alg: ${key.source.alg}, kty: ${key.source.kty}`
|
|
109
|
-
//
|
|
121
|
+
// tokenDetails automatically populated higher up the stack
|
|
110
122
|
});
|
|
111
123
|
}
|
|
112
124
|
return key;
|
|
@@ -137,9 +149,9 @@ export class KeyStore {
|
|
|
137
149
|
// This is just a last resort error handling.
|
|
138
150
|
logger.error(`Failed to refresh keys`, e);
|
|
139
151
|
});
|
|
152
|
+
const details = debugKeyNotFound(this, keys, token);
|
|
140
153
|
throw new AuthorizationError(ErrorCode.PSYNC_S2101, 'Could not find an appropriate key in the keystore. The key is missing or no key matched the token KID', {
|
|
141
|
-
|
|
142
|
-
// tokenDetails automatically populated later
|
|
154
|
+
...details
|
|
143
155
|
});
|
|
144
156
|
}
|
|
145
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyStore.js","sourceRoot":"","sources":["../../src/auth/KeyStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,IAAI,MAAM,iBAAiB,CAAC;AAGnC,OAAO,EAAuB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"KeyStore.js","sourceRoot":"","sources":["../../src/auth/KeyStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,10 @@ import * as http from 'http';
|
|
|
2
2
|
import * as https from 'https';
|
|
3
3
|
import { LookupOptions } from '@powersync/lib-services-framework';
|
|
4
4
|
import { KeyCollector, KeyResult } from './KeyCollector.js';
|
|
5
|
+
import { KeyOptions } from './KeySpec.js';
|
|
5
6
|
export type RemoteJWKSCollectorOptions = {
|
|
6
7
|
lookupOptions?: LookupOptions;
|
|
8
|
+
keyOptions?: KeyOptions;
|
|
7
9
|
};
|
|
8
10
|
/**
|
|
9
11
|
* Set of keys fetched from JWKS URI.
|
|
@@ -12,6 +14,7 @@ export declare class RemoteJWKSCollector implements KeyCollector {
|
|
|
12
14
|
protected options?: RemoteJWKSCollectorOptions | undefined;
|
|
13
15
|
private url;
|
|
14
16
|
private agent;
|
|
17
|
+
private keyOptions;
|
|
15
18
|
constructor(url: string, options?: RemoteJWKSCollectorOptions | undefined);
|
|
16
19
|
private getJwksData;
|
|
17
20
|
getKeys(): Promise<KeyResult>;
|
|
@@ -10,6 +10,7 @@ export class RemoteJWKSCollector {
|
|
|
10
10
|
options;
|
|
11
11
|
url;
|
|
12
12
|
agent;
|
|
13
|
+
keyOptions;
|
|
13
14
|
constructor(url, options) {
|
|
14
15
|
this.options = options;
|
|
15
16
|
try {
|
|
@@ -18,6 +19,7 @@ export class RemoteJWKSCollector {
|
|
|
18
19
|
catch (e) {
|
|
19
20
|
throw new ServiceError(ErrorCode.PSYNC_S3102, `Invalid jwks_uri: ${JSON.stringify(url)} Details: ${e.message}`);
|
|
20
21
|
}
|
|
22
|
+
this.keyOptions = options?.keyOptions ?? {};
|
|
21
23
|
// We do support http here for self-hosting use cases.
|
|
22
24
|
// Management service restricts this to https for hosted versions.
|
|
23
25
|
if (this.url.protocol != 'https:' && this.url.protocol != 'http:') {
|
|
@@ -93,7 +95,7 @@ export class RemoteJWKSCollector {
|
|
|
93
95
|
continue;
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
|
-
const key = await KeySpec.importKey(keyData);
|
|
98
|
+
const key = await KeySpec.importKey(keyData, this.keyOptions);
|
|
97
99
|
keys.push(key);
|
|
98
100
|
}
|
|
99
101
|
return { keys: keys, errors: [] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteJWKSCollector.js","sourceRoot":"","sources":["../../src/auth/RemoteJWKSCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,SAAS,EAET,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,EACb,MAAM,mCAAmC,CAAC;AAE3C,OAAO,
|
|
1
|
+
{"version":3,"file":"RemoteJWKSCollector.js","sourceRoot":"","sources":["../../src/auth/RemoteJWKSCollector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as jose from 'jose';
|
|
2
|
-
import { KeySpec } from './KeySpec.js';
|
|
2
|
+
import { KeySpec, KeyOptions } from './KeySpec.js';
|
|
3
3
|
import { KeyCollector, KeyResult } from './KeyCollector.js';
|
|
4
|
+
export declare const SUPABASE_KEY_OPTIONS: KeyOptions;
|
|
4
5
|
/**
|
|
5
6
|
* Set of static keys for Supabase.
|
|
6
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticSupabaseKeyCollector.js","sourceRoot":"","sources":["../../src/auth/StaticSupabaseKeyCollector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAc,MAAM,cAAc,CAAC;AAGnD,MAAM,oBAAoB,GAAe;
|
|
1
|
+
{"version":3,"file":"StaticSupabaseKeyCollector.js","sourceRoot":"","sources":["../../src/auth/StaticSupabaseKeyCollector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAc,MAAM,cAAc,CAAC;AAGnD,MAAM,CAAC,MAAM,oBAAoB,GAAe;IAC9C,gBAAgB,EAAE,CAAC,eAAe,CAAC;IACnC,kBAAkB,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,6BAA6B;CACnE,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,0BAA0B;IAMjB;IALpB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAgB;QACtC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACtG,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,YAAoB,IAAe;QAAf,SAAI,GAAJ,IAAI,CAAW;IAAG,CAAC;IAEvC,KAAK,CAAC,OAAO;QACX,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;CACF"}
|
package/dist/auth/utils.d.ts
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
import { AuthorizationError } from '@powersync/lib-services-framework';
|
|
2
2
|
import * as jose from 'jose';
|
|
3
|
+
import { KeySpec } from './KeySpec.js';
|
|
4
|
+
import { KeyStore } from './KeyStore.js';
|
|
3
5
|
export declare function mapJoseError(error: jose.errors.JOSEError, token: string): AuthorizationError;
|
|
4
6
|
export declare function mapAuthError(error: any, token: string): AuthorizationError;
|
|
5
7
|
export declare function mapJoseConfigError(error: jose.errors.JOSEError): AuthorizationError;
|
|
6
8
|
export declare function mapAuthConfigError(error: any): AuthorizationError;
|
|
9
|
+
/**
|
|
10
|
+
* Decode token for debugging purposes.
|
|
11
|
+
*
|
|
12
|
+
* We use this to add details to our logs. We don't log the entire token, since it may for example
|
|
13
|
+
* a password incorrectly used as a token.
|
|
14
|
+
*/
|
|
15
|
+
export declare function tokenDebugDetails(token: string): string;
|
|
16
|
+
export interface SupabaseAuthDetails {
|
|
17
|
+
projectId: string;
|
|
18
|
+
url: string;
|
|
19
|
+
hostname: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function getSupabaseJwksUrl(connection: any): SupabaseAuthDetails | null;
|
|
22
|
+
export declare function debugKeyNotFound(keyStore: KeyStore, keys: KeySpec[], token: string): {
|
|
23
|
+
configurationDetails: string;
|
|
24
|
+
tokenDetails: string;
|
|
25
|
+
};
|
package/dist/auth/utils.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { AuthorizationError, ErrorCode } from '@powersync/lib-services-framework';
|
|
2
2
|
import * as jose from 'jose';
|
|
3
|
+
import * as urijs from 'uri-js';
|
|
4
|
+
import * as uuid from 'uuid';
|
|
3
5
|
export function mapJoseError(error, token) {
|
|
4
6
|
const tokenDetails = tokenDebugDetails(token);
|
|
5
7
|
if (error.code === jose.errors.JWSInvalid.code || error.code === jose.errors.JWTInvalid.code) {
|
|
@@ -56,16 +58,27 @@ export function mapAuthConfigError(error) {
|
|
|
56
58
|
* We use this to add details to our logs. We don't log the entire token, since it may for example
|
|
57
59
|
* a password incorrectly used as a token.
|
|
58
60
|
*/
|
|
59
|
-
function tokenDebugDetails(token) {
|
|
61
|
+
export function tokenDebugDetails(token) {
|
|
62
|
+
return parseTokenDebug(token).description;
|
|
63
|
+
}
|
|
64
|
+
function parseTokenDebug(token) {
|
|
60
65
|
try {
|
|
61
66
|
// For valid tokens, we return the header and payload
|
|
62
67
|
const header = jose.decodeProtectedHeader(token);
|
|
63
68
|
const payload = jose.decodeJwt(token);
|
|
64
|
-
|
|
69
|
+
const isSupabase = typeof payload.iss == 'string' && payload.iss.includes('supabase.co');
|
|
70
|
+
const isSharedSecret = isSupabase && header.alg === 'HS256';
|
|
71
|
+
return {
|
|
72
|
+
header,
|
|
73
|
+
payload,
|
|
74
|
+
isSupabase,
|
|
75
|
+
isSharedSecret: isSharedSecret,
|
|
76
|
+
description: `<header: ${JSON.stringify(header)} payload: ${JSON.stringify(payload)}>`
|
|
77
|
+
};
|
|
65
78
|
}
|
|
66
79
|
catch (e) {
|
|
67
80
|
// Token fails to parse. Return some details.
|
|
68
|
-
return invalidTokenDetails(token);
|
|
81
|
+
return { description: invalidTokenDetails(token) };
|
|
69
82
|
}
|
|
70
83
|
}
|
|
71
84
|
function invalidTokenDetails(token) {
|
|
@@ -94,4 +107,94 @@ function invalidTokenDetails(token) {
|
|
|
94
107
|
}
|
|
95
108
|
return `<invalid JWT, length=${token.length}>`;
|
|
96
109
|
}
|
|
110
|
+
export function getSupabaseJwksUrl(connection) {
|
|
111
|
+
if (connection == null) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
else if (connection.type != 'postgresql') {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
let hostname = connection.hostname;
|
|
118
|
+
if (hostname == null && typeof connection.uri == 'string') {
|
|
119
|
+
hostname = urijs.parse(connection.uri).host;
|
|
120
|
+
}
|
|
121
|
+
if (hostname == null) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
const match = /db.(\w+).supabase.co/.exec(hostname);
|
|
125
|
+
if (match == null) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const projectId = match[1];
|
|
129
|
+
return { projectId, hostname, url: `https://${projectId}.supabase.co/auth/v1/.well-known/jwks.json` };
|
|
130
|
+
}
|
|
131
|
+
export function debugKeyNotFound(keyStore, keys, token) {
|
|
132
|
+
const knownKeys = keys.map((key) => key.description).join(', ');
|
|
133
|
+
const td = parseTokenDebug(token);
|
|
134
|
+
const tokenDetails = td.description;
|
|
135
|
+
const configuredSupabase = keyStore.supabaseAuthDebug;
|
|
136
|
+
// Cases to check:
|
|
137
|
+
// 1. Is Supabase token, but supabase auth not enabled.
|
|
138
|
+
// 2. Is Supabase HS256 token, but no secret configured.
|
|
139
|
+
// 3. Is Supabase singing key token, but no Supabase signing keys configured.
|
|
140
|
+
// 4. Supabase project id mismatch.
|
|
141
|
+
if (td.isSharedSecret) {
|
|
142
|
+
// Supabase HS256 token
|
|
143
|
+
// UUID: HS256 (Shared Secret)
|
|
144
|
+
// Other: Legacy HS256 (Shared Secret)
|
|
145
|
+
// Not a big difference between the two other than terminology used on Supabase.
|
|
146
|
+
const isLegacy = uuid.validate(td.header.kid) ? false : true;
|
|
147
|
+
const addMessage = configuredSupabase.jwksEnabled && !isLegacy
|
|
148
|
+
? ' Use asymmetric keys on Supabase (RSA or ECC) to allow automatic key retrieval.'
|
|
149
|
+
: '';
|
|
150
|
+
if (!configuredSupabase.sharedSecretEnabled) {
|
|
151
|
+
return {
|
|
152
|
+
configurationDetails: `Token is a Supabase ${isLegacy ? 'Legacy ' : ''}HS256 (Shared Secret) token, but Supabase JWT secret is not configured.${addMessage}`,
|
|
153
|
+
tokenDetails
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
return {
|
|
158
|
+
// This is an educated guess
|
|
159
|
+
configurationDetails: `Token is a Supabase ${isLegacy ? 'Legacy ' : ''}HS256 (Shared Secret) token, but configured Supabase JWT secret does not match.${addMessage}`,
|
|
160
|
+
tokenDetails
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else if (td.isSupabase) {
|
|
165
|
+
// Supabase JWT Signing Keys
|
|
166
|
+
if (!configuredSupabase.jwksEnabled) {
|
|
167
|
+
if (configuredSupabase.jwksDetails != null) {
|
|
168
|
+
return {
|
|
169
|
+
configurationDetails: `Token uses Supabase JWT Signing Keys, but Supabase Auth is not enabled`,
|
|
170
|
+
tokenDetails
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return {
|
|
175
|
+
configurationDetails: `Token uses Supabase JWT Signing Keys, but no Supabase connection is configured`,
|
|
176
|
+
tokenDetails
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else if (configuredSupabase.jwksDetails != null) {
|
|
181
|
+
const configuredProjectId = configuredSupabase.jwksDetails.projectId;
|
|
182
|
+
const issuer = td.payload.iss; // Is a string since since isSupabase is true
|
|
183
|
+
if (!issuer.includes(configuredProjectId)) {
|
|
184
|
+
return {
|
|
185
|
+
configurationDetails: `Supabase project id mismatch. Expected project: ${configuredProjectId}, got issuer: ${issuer}`,
|
|
186
|
+
tokenDetails
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
// Project id matches, but no matching keys found
|
|
191
|
+
return {
|
|
192
|
+
configurationDetails: `Supabase signing keys configured, but no matching keys found. Known keys: ${knownKeys}`,
|
|
193
|
+
tokenDetails
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return { configurationDetails: `Known keys: ${knownKeys}`, tokenDetails: tokenDebugDetails(token) };
|
|
199
|
+
}
|
|
97
200
|
//# sourceMappingURL=utils.js.map
|
package/dist/auth/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/auth/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/auth/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,9 +22,6 @@ export class EmitterEngine {
|
|
|
22
22
|
return this.emitter.listenerCount(eventName);
|
|
23
23
|
}
|
|
24
24
|
emit(event, data) {
|
|
25
|
-
if (!this.events.has(event) || this.countListeners(event) === 0) {
|
|
26
|
-
logger.warn(`${event} has no listener registered.`);
|
|
27
|
-
}
|
|
28
25
|
this.emitter.emit(event, data);
|
|
29
26
|
}
|
|
30
27
|
shutDown() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmitterEngine.js","sourceRoot":"","sources":["../../src/emitters/EmitterEngine.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAI3D,MAAM,OAAO,aAAa;IAChB,OAAO,CAAe;IAC9B,MAAM,GAAyC,IAAI,GAAG,EAAE,CAAC;IACzD;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAA4C,KAAkC;QACrF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,SAA0C;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAA8C,KAAQ,EAAE,IAAoC;QAC9F,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"EmitterEngine.js","sourceRoot":"","sources":["../../src/emitters/EmitterEngine.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAI3D,MAAM,OAAO,aAAa;IAChB,OAAO,CAAe;IAC9B,MAAM,GAAyC,IAAI,GAAG,EAAE,CAAC;IACzD;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAA4C,KAAkC;QACrF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,SAA0C;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAA8C,KAAQ,EAAE,IAAoC;QAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,IAAI,CAAC,8DAA8D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -49,16 +49,26 @@ export interface BucketStorageBatch extends ObserverClient<BucketBatchStorageLis
|
|
|
49
49
|
*/
|
|
50
50
|
keepalive(lsn: string): Promise<boolean>;
|
|
51
51
|
/**
|
|
52
|
-
* Set the LSN
|
|
52
|
+
* Set the LSN that replication should resume from.
|
|
53
|
+
*
|
|
54
|
+
* This can be used for:
|
|
55
|
+
* 1. Setting the LSN for a snapshot, before starting replication.
|
|
56
|
+
* 2. Setting the LSN to resume from after a replication restart, without advancing the checkpoint LSN via a commit.
|
|
53
57
|
*
|
|
54
58
|
* Not required if the source database keeps track of this, for example with
|
|
55
59
|
* PostgreSQL logical replication slots.
|
|
56
60
|
*/
|
|
57
|
-
|
|
61
|
+
setResumeLsn(lsn: string): Promise<void>;
|
|
58
62
|
/**
|
|
59
63
|
* Get the last checkpoint LSN, from either commit or keepalive.
|
|
60
64
|
*/
|
|
61
65
|
lastCheckpointLsn: string | null;
|
|
66
|
+
/**
|
|
67
|
+
* LSN to resume from.
|
|
68
|
+
*
|
|
69
|
+
* Not relevant for streams where the source keeps track of replication progress, such as Postgres.
|
|
70
|
+
*/
|
|
71
|
+
resumeFromLsn: string | null;
|
|
62
72
|
markSnapshotDone(tables: SourceTable[], no_checkpoint_before_lsn: string): Promise<SourceTable[]>;
|
|
63
73
|
updateTableProgress(table: SourceTable, progress: Partial<TableSnapshotStatus>): Promise<SourceTable>;
|
|
64
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BucketStorageBatch.js","sourceRoot":"","sources":["../../src/storage/BucketStorageBatch.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,mCAAmC,GAAqC;IACnF,sBAAsB,EAAE,IAAI;IAC5B,uBAAuB,EAAE,IAAI;CAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"BucketStorageBatch.js","sourceRoot":"","sources":["../../src/storage/BucketStorageBatch.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,mCAAmC,GAAqC;IACnF,sBAAsB,EAAE,IAAI;IAC5B,uBAAuB,EAAE,IAAI;CAC9B,CAAC;AAgHF,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B"}
|
|
@@ -36,7 +36,6 @@ export interface SyncRulesBucketStorage extends ObserverClient<SyncRulesBucketSt
|
|
|
36
36
|
* Clear the storage, without changing state.
|
|
37
37
|
*/
|
|
38
38
|
clear(options?: ClearStorageOptions): Promise<void>;
|
|
39
|
-
autoActivate(): Promise<void>;
|
|
40
39
|
/**
|
|
41
40
|
* Record a replication error.
|
|
42
41
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncRulesBucketStorage.js","sourceRoot":"","sources":["../../src/storage/SyncRulesBucketStorage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SyncRulesBucketStorage.js","sourceRoot":"","sources":["../../src/storage/SyncRulesBucketStorage.ts"],"names":[],"mappings":"AA0RA,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D,kBAAkB,EAAE,IAAI,GAAG,EAAU;IACrC,qBAAqB,EAAE,IAAI;IAC3B,uBAAuB,EAAE,IAAI,GAAG,EAAU;IAC1C,0BAA0B,EAAE,IAAI;CACjC,CAAC"}
|
|
@@ -49,6 +49,7 @@ export class CompoundConfigCollector {
|
|
|
49
49
|
kid: undefined // Wildcard kid - any kid can match
|
|
50
50
|
}
|
|
51
51
|
]));
|
|
52
|
+
keyStore.supabaseAuthDebug.sharedSecretEnabled = true;
|
|
52
53
|
}
|
|
53
54
|
let jwks_uris = baseConfig.client_auth?.jwks_uri ?? [];
|
|
54
55
|
if (typeof jwks_uris == 'string') {
|
|
@@ -70,6 +71,28 @@ export class CompoundConfigCollector {
|
|
|
70
71
|
for (let uri of jwks_uris) {
|
|
71
72
|
collectors.add(new auth.CachedKeyCollector(new auth.RemoteJWKSCollector(uri, { lookupOptions: jwksLookup })));
|
|
72
73
|
}
|
|
74
|
+
const supabaseAuthDetails = auth.getSupabaseJwksUrl(baseConfig.replication?.connections?.[0]);
|
|
75
|
+
keyStore.supabaseAuthDebug.jwksDetails = supabaseAuthDetails;
|
|
76
|
+
if (baseConfig.client_auth?.supabase) {
|
|
77
|
+
// Automatic support for Supabase signing keys:
|
|
78
|
+
// https://supabase.com/docs/guides/auth/signing-keys
|
|
79
|
+
if (supabaseAuthDetails != null) {
|
|
80
|
+
const collector = new auth.RemoteJWKSCollector(supabaseAuthDetails.url, {
|
|
81
|
+
lookupOptions: jwksLookup,
|
|
82
|
+
// Special case aud and max lifetime for Supabase keys
|
|
83
|
+
keyOptions: auth.SUPABASE_KEY_OPTIONS
|
|
84
|
+
});
|
|
85
|
+
collectors.add(new auth.CachedKeyCollector(collector));
|
|
86
|
+
keyStore.supabaseAuthDebug.jwksEnabled = true;
|
|
87
|
+
logger.info(`Configured Supabase Auth with ${supabaseAuthDetails.url}`);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
logger.warn('Supabase Auth is enabled, but no Supabase connection string found. Skipping Supabase JWKS URL configuration.');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (supabaseAuthDetails != null) {
|
|
94
|
+
logger.warn(`Supabase connection string found, but Supabase Auth is not enabled in the config.`);
|
|
95
|
+
}
|
|
73
96
|
const sync_rules = await this.collectSyncRules(baseConfig, runnerConfig);
|
|
74
97
|
let jwt_audiences = baseConfig.client_auth?.audience ?? [];
|
|
75
98
|
let config = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compound-config-collector.js","sourceRoot":"","sources":["../../../src/util/config/compound-config-collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EACL,kCAAkC,EAClC,kCAAkC,EAClC,kCAAkC,EAClC,mCAAmC,EACnC,qBAAqB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AA4B5F,MAAM,yBAAyB,GAAmC;IAChE,gBAAgB,EAAE,CAAC,IAAI,qBAAqB,EAAE,EAAE,IAAI,yBAAyB,EAAE,EAAE,IAAI,uBAAuB,EAAE,CAAC;IAC/G,mBAAmB,EAAE;QACnB,IAAI,wBAAwB,EAAE;QAC9B,IAAI,4BAA4B,EAAE;QAClC,IAAI,wBAAwB,EAAE;KAC/B;CACF,CAAC;AAEF,MAAM,OAAO,uBAAuB;IACZ;IAAtB,YAAsB,UAA0C,yBAAyB;QAAnE,YAAO,GAAP,OAAO,CAA4D;IAAG,CAAC;IAE7F;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,eAA6B,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAE9D,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;QAC9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAC3D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC5E,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAEhC,IAAI,UAAU,CAAC,WAAW,EAAE,QAAQ,IAAI,UAAU,CAAC,WAAW,EAAE,mBAAmB,IAAI,IAAI,EAAE,CAAC;YAC5F,gFAAgF;YAChF,4EAA4E;YAC5E,4BAA4B;YAC5B,gFAAgF;YAChF,sCAAsC;YACtC,UAAU,CAAC,GAAG,CACZ,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;gBAC/C;oBACE,GAAG,EAAE,KAAK;oBACV,GAAG,EAAE,OAAO;oBACZ,mDAAmD;oBACnD,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;oBACxF,GAAG,EAAE,SAAS,CAAC,mCAAmC;iBACnD;aACF,CAAC,CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"compound-config-collector.js","sourceRoot":"","sources":["../../../src/util/config/compound-config-collector.ts"],"names":[],"mappings":"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"}
|
package/dist/util/lsn.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsn.js","sourceRoot":"","sources":["../../src/util/lsn.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,CAA4B,EAAE,CAA4B;IAC/E,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC"}
|