jinaga-server 3.7.0 → 3.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authorization/authorization-keystore.js +7 -3
- package/dist/authorization/authorization-keystore.js.map +1 -1
- package/dist/http/router.js +34 -1
- package/dist/http/router.js.map +1 -1
- package/package.json +2 -2
- package/src/authorization/authorization-keystore.ts +10 -3
- package/src/http/router.ts +39 -1
- package/test/http/graphSaveMultiHopAuthSpec.ts +126 -0
|
@@ -12,6 +12,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.AuthorizationKeystore = void 0;
|
|
13
13
|
const jinaga_1 = require("jinaga");
|
|
14
14
|
const distributed_fact_cache_1 = require("./distributed-fact-cache");
|
|
15
|
+
function factKey(reference) {
|
|
16
|
+
return `${reference.type}:${reference.hash}`;
|
|
17
|
+
}
|
|
15
18
|
class AuthorizationKeystore {
|
|
16
19
|
constructor(factManager, store, keystore, authorizationRules, distributionRules) {
|
|
17
20
|
this.factManager = factManager;
|
|
@@ -129,14 +132,15 @@ class AuthorizationKeystore {
|
|
|
129
132
|
const signedFacts = (userIdentity && factsToSign.length > 0)
|
|
130
133
|
? yield this.keystore.signFacts(userIdentity, factsToSign)
|
|
131
134
|
: [];
|
|
135
|
+
const envelopeByFact = new Map(envelopes.map(e => [factKey(e.fact), e]));
|
|
136
|
+
const signedFactByFact = new Map(signedFacts.map(f => [factKey(f.fact), f]));
|
|
132
137
|
const authorizedEnvelopes = results.map(r => {
|
|
133
|
-
const
|
|
134
|
-
const envelope = envelopes.find(e => isFact(e.fact));
|
|
138
|
+
const envelope = envelopeByFact.get(factKey(r.fact));
|
|
135
139
|
if (!envelope) {
|
|
136
140
|
throw new Error("Fact not found in envelopes.");
|
|
137
141
|
}
|
|
138
142
|
if (r.verdict === "Accept") {
|
|
139
|
-
const signedFact =
|
|
143
|
+
const signedFact = signedFactByFact.get(factKey(r.fact));
|
|
140
144
|
const userSignatures = signedFact
|
|
141
145
|
? signedFact.signatures
|
|
142
146
|
: [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization-keystore.js","sourceRoot":"","sources":["../../src/authorization/authorization-keystore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"authorization-keystore.js","sourceRoot":"","sources":["../../src/authorization/authorization-keystore.ts"],"names":[],"mappings":"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"}
|
package/dist/http/router.js
CHANGED
|
@@ -363,12 +363,25 @@ class HttpRouter {
|
|
|
363
363
|
save(user, graphSource) {
|
|
364
364
|
return jinaga_1.Trace.dependency("save", "", () => __awaiter(this, void 0, void 0, function* () {
|
|
365
365
|
const userIdentity = serializeUserIdentity(user);
|
|
366
|
+
// Signatures are verified per flush as they stream in, but the
|
|
367
|
+
// envelopes are accumulated and authorized as a single batch.
|
|
368
|
+
// Otherwise, a graph body that flushes in chunks (GraphDeserializer
|
|
369
|
+
// flushes every 20 facts) would authorize each chunk independently,
|
|
370
|
+
// and a fact whose rule needs a predecessor from an earlier chunk
|
|
371
|
+
// would fail with "The fact <type>:<hash> is not defined." (issue #175).
|
|
372
|
+
const allEnvelopes = [];
|
|
366
373
|
yield graphSource.read((envelopes) => __awaiter(this, void 0, void 0, function* () {
|
|
367
374
|
if (!(0, jinaga_1.verifyEnvelopes)(envelopes)) {
|
|
368
375
|
throw new jinaga_1.Forbidden("The signatures on the facts are invalid.");
|
|
369
376
|
}
|
|
370
|
-
|
|
377
|
+
allEnvelopes.push(...envelopes);
|
|
371
378
|
}));
|
|
379
|
+
try {
|
|
380
|
+
yield this.authorization.save(userIdentity, allEnvelopes);
|
|
381
|
+
}
|
|
382
|
+
catch (error) {
|
|
383
|
+
throw toSaveAuthorizationError(error, allEnvelopes);
|
|
384
|
+
}
|
|
372
385
|
}));
|
|
373
386
|
}
|
|
374
387
|
/**
|
|
@@ -802,6 +815,26 @@ class FeedNotFound extends Error {
|
|
|
802
815
|
}
|
|
803
816
|
}
|
|
804
817
|
exports.FeedNotFound = FeedNotFound;
|
|
818
|
+
// Authorization rule evaluation reports a missing predecessor as a plain
|
|
819
|
+
// Error of this shape (see authorizationRules.ts / specification-runner.ts
|
|
820
|
+
// in jinaga). It surfaces when the client's save request didn't include the
|
|
821
|
+
// full closure of facts a rule needs to walk. Map it to a diagnosable 4xx
|
|
822
|
+
// instead of an opaque 500 (issue #175).
|
|
823
|
+
const FACT_NOT_DEFINED_PATTERN = /^The fact (\S+):(\S+) is not defined\.$/;
|
|
824
|
+
function toSaveAuthorizationError(error, envelopes) {
|
|
825
|
+
if (error instanceof Error) {
|
|
826
|
+
const match = FACT_NOT_DEFINED_PATTERN.exec(error.message);
|
|
827
|
+
if (match) {
|
|
828
|
+
const [, factType, factHash] = match;
|
|
829
|
+
const factTypesInBatch = Array.from(new Set(envelopes.map(e => e.fact.type))).join(", ");
|
|
830
|
+
jinaga_1.Trace.warn(`Save authorization could not resolve predecessor ${factType}:${factHash} ` +
|
|
831
|
+
`among ${envelopes.length} fact(s) in the request (types: ${factTypesInBatch}).`);
|
|
832
|
+
return new jinaga_1.Invalid(`The fact ${factType}:${factHash} is required to authorize this save but was not included in the request. ` +
|
|
833
|
+
`Ensure the full closure of predecessors needed by your authorization rules is sent together.`);
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
return error;
|
|
837
|
+
}
|
|
805
838
|
function handleError(error, req, res, next) {
|
|
806
839
|
const requestPath = req.path;
|
|
807
840
|
if (error instanceof FeedNotFound) {
|
package/dist/http/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/http/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/http/router.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jinaga-server",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.1",
|
|
4
4
|
"description": "Data management for web and mobile applications.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"csv-stringify": "^6.6.0",
|
|
51
51
|
"express": "^4.21.2",
|
|
52
|
-
"jinaga": "^6.
|
|
52
|
+
"jinaga": "^6.11.1",
|
|
53
53
|
"pg": "^8.13.1"
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -65,6 +65,10 @@ export interface SubscriptionAuthorizer {
|
|
|
65
65
|
import { Keystore } from "../keystore";
|
|
66
66
|
import { DistributedFactCache } from "./distributed-fact-cache";
|
|
67
67
|
|
|
68
|
+
function factKey(reference: FactReference): string {
|
|
69
|
+
return `${reference.type}:${reference.hash}`;
|
|
70
|
+
}
|
|
71
|
+
|
|
68
72
|
export class AuthorizationKeystore implements Authorization, SubscriptionAuthorizer {
|
|
69
73
|
private authorizationEngine: AuthorizationEngine | null;
|
|
70
74
|
private distributionEngine: DistributionEngine | null;
|
|
@@ -188,14 +192,17 @@ export class AuthorizationKeystore implements Authorization, SubscriptionAuthori
|
|
|
188
192
|
const signedFacts = (userIdentity && factsToSign.length > 0)
|
|
189
193
|
? await this.keystore.signFacts(userIdentity, factsToSign)
|
|
190
194
|
: [];
|
|
195
|
+
const envelopeByFact = new Map<string, FactEnvelope>(
|
|
196
|
+
envelopes.map(e => [factKey(e.fact), e]));
|
|
197
|
+
const signedFactByFact = new Map<string, FactEnvelope>(
|
|
198
|
+
signedFacts.map(f => [factKey(f.fact), f]));
|
|
191
199
|
const authorizedEnvelopes: FactEnvelope[] = results.map(r => {
|
|
192
|
-
const
|
|
193
|
-
const envelope = envelopes.find(e => isFact(e.fact));
|
|
200
|
+
const envelope = envelopeByFact.get(factKey(r.fact));
|
|
194
201
|
if (!envelope) {
|
|
195
202
|
throw new Error("Fact not found in envelopes.");
|
|
196
203
|
}
|
|
197
204
|
if (r.verdict === "Accept") {
|
|
198
|
-
const signedFact =
|
|
205
|
+
const signedFact = signedFactByFact.get(factKey(r.fact));
|
|
199
206
|
const userSignatures = signedFact
|
|
200
207
|
? signedFact.signatures
|
|
201
208
|
: [];
|
package/src/http/router.ts
CHANGED
|
@@ -469,12 +469,24 @@ export class HttpRouter {
|
|
|
469
469
|
private save(user: RequestUser | null, graphSource: GraphSource): Promise<void> {
|
|
470
470
|
return Trace.dependency("save", "", async () => {
|
|
471
471
|
const userIdentity = serializeUserIdentity(user);
|
|
472
|
+
// Signatures are verified per flush as they stream in, but the
|
|
473
|
+
// envelopes are accumulated and authorized as a single batch.
|
|
474
|
+
// Otherwise, a graph body that flushes in chunks (GraphDeserializer
|
|
475
|
+
// flushes every 20 facts) would authorize each chunk independently,
|
|
476
|
+
// and a fact whose rule needs a predecessor from an earlier chunk
|
|
477
|
+
// would fail with "The fact <type>:<hash> is not defined." (issue #175).
|
|
478
|
+
const allEnvelopes: FactEnvelope[] = [];
|
|
472
479
|
await graphSource.read(async (envelopes) => {
|
|
473
480
|
if (!verifyEnvelopes(envelopes)) {
|
|
474
481
|
throw new Forbidden("The signatures on the facts are invalid.");
|
|
475
482
|
}
|
|
476
|
-
|
|
483
|
+
allEnvelopes.push(...envelopes);
|
|
477
484
|
});
|
|
485
|
+
try {
|
|
486
|
+
await this.authorization.save(userIdentity, allEnvelopes);
|
|
487
|
+
} catch (error) {
|
|
488
|
+
throw toSaveAuthorizationError(error, allEnvelopes);
|
|
489
|
+
}
|
|
478
490
|
});
|
|
479
491
|
}
|
|
480
492
|
|
|
@@ -976,6 +988,32 @@ export class FeedNotFound extends Error {
|
|
|
976
988
|
}
|
|
977
989
|
}
|
|
978
990
|
|
|
991
|
+
// Authorization rule evaluation reports a missing predecessor as a plain
|
|
992
|
+
// Error of this shape (see authorizationRules.ts / specification-runner.ts
|
|
993
|
+
// in jinaga). It surfaces when the client's save request didn't include the
|
|
994
|
+
// full closure of facts a rule needs to walk. Map it to a diagnosable 4xx
|
|
995
|
+
// instead of an opaque 500 (issue #175).
|
|
996
|
+
const FACT_NOT_DEFINED_PATTERN = /^The fact (\S+):(\S+) is not defined\.$/;
|
|
997
|
+
|
|
998
|
+
function toSaveAuthorizationError(error: any, envelopes: FactEnvelope[]): any {
|
|
999
|
+
if (error instanceof Error) {
|
|
1000
|
+
const match = FACT_NOT_DEFINED_PATTERN.exec(error.message);
|
|
1001
|
+
if (match) {
|
|
1002
|
+
const [, factType, factHash] = match;
|
|
1003
|
+
const factTypesInBatch = Array.from(new Set(envelopes.map(e => e.fact.type))).join(", ");
|
|
1004
|
+
Trace.warn(
|
|
1005
|
+
`Save authorization could not resolve predecessor ${factType}:${factHash} ` +
|
|
1006
|
+
`among ${envelopes.length} fact(s) in the request (types: ${factTypesInBatch}).`
|
|
1007
|
+
);
|
|
1008
|
+
return new Invalid(
|
|
1009
|
+
`The fact ${factType}:${factHash} is required to authorize this save but was not included in the request. ` +
|
|
1010
|
+
`Ensure the full closure of predecessors needed by your authorization rules is sent together.`
|
|
1011
|
+
);
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
return error;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
979
1017
|
function handleError(error: any, req: Request, res: Response, next: NextFunction) {
|
|
980
1018
|
const requestPath = req.path;
|
|
981
1019
|
if (error instanceof FeedNotFound) {
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AuthorizationRules,
|
|
3
|
+
buildModel,
|
|
4
|
+
dehydrateFact,
|
|
5
|
+
DistributionRules,
|
|
6
|
+
FactEnvelope,
|
|
7
|
+
FactManager,
|
|
8
|
+
FactRecord,
|
|
9
|
+
FeedCache,
|
|
10
|
+
GraphDeserializer,
|
|
11
|
+
GraphSerializer,
|
|
12
|
+
MemoryStore,
|
|
13
|
+
NetworkNoOp,
|
|
14
|
+
ObservableSource,
|
|
15
|
+
PassThroughFork,
|
|
16
|
+
User
|
|
17
|
+
} from "jinaga";
|
|
18
|
+
|
|
19
|
+
import { AuthorizationKeystore } from "../../src/authorization/authorization-keystore";
|
|
20
|
+
import { HttpRouter, RequestUser } from "../../src/http/router";
|
|
21
|
+
import { MemoryKeystore } from "../../src/memory/memory-keystore";
|
|
22
|
+
|
|
23
|
+
class Filler {
|
|
24
|
+
static Type = "GraphSave.Filler" as const;
|
|
25
|
+
public type = Filler.Type;
|
|
26
|
+
constructor(public value: number) { }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
class Workspace {
|
|
30
|
+
static Type = "GraphSave.Workspace" as const;
|
|
31
|
+
public type = Workspace.Type;
|
|
32
|
+
constructor(public owner: User, public identifier: string) { }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
class Application {
|
|
36
|
+
static Type = "GraphSave.Application" as const;
|
|
37
|
+
public type = Application.Type;
|
|
38
|
+
constructor(public workspace: Workspace, public name: string) { }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const model = buildModel(b => b
|
|
42
|
+
.type(User)
|
|
43
|
+
.type(Filler)
|
|
44
|
+
.type(Workspace, w => w.predecessor("owner", User))
|
|
45
|
+
.type(Application, a => a.predecessor("workspace", Workspace))
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
function createReadLine(input: string) {
|
|
49
|
+
const lines = input.split("\n");
|
|
50
|
+
if (lines[lines.length - 1] === "") {
|
|
51
|
+
lines.pop();
|
|
52
|
+
}
|
|
53
|
+
return async () => {
|
|
54
|
+
const line = lines.shift();
|
|
55
|
+
return line !== undefined ? line : null;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Regression test for issue #175: HttpRouter.save() used to pass its
|
|
60
|
+
// authorization call directly as GraphDeserializer's per-flush callback, so
|
|
61
|
+
// a graph body that split across flush boundaries (every 20 facts)
|
|
62
|
+
// authorized each flush independently. A fact whose rule needs a multi-hop
|
|
63
|
+
// predecessor chain landing in an earlier flush then failed with
|
|
64
|
+
// "The fact <type>:<hash> is not defined." (surfaced to clients as a 500). This drives
|
|
65
|
+
// the real application/x-jinaga-graph-v1 code path end to end.
|
|
66
|
+
describe("POST /save with a multi-flush graph body", () => {
|
|
67
|
+
it("authorizes a fact whose multi-hop predecessors landed in a prior flush batch", async () => {
|
|
68
|
+
const store = new MemoryStore();
|
|
69
|
+
const keystore = new MemoryKeystore();
|
|
70
|
+
const ownerIdentity = { provider: "mock", id: "owner" };
|
|
71
|
+
const ownerFact = await keystore.getOrCreateUserFact(ownerIdentity);
|
|
72
|
+
const owner = new User(ownerFact.fields.publicKey);
|
|
73
|
+
|
|
74
|
+
const fork = new PassThroughFork(store);
|
|
75
|
+
const observable = new ObservableSource(store);
|
|
76
|
+
const network = new NetworkNoOp();
|
|
77
|
+
const factManager = new FactManager(fork, observable, store, network, []);
|
|
78
|
+
|
|
79
|
+
const authorizationRules = new AuthorizationRules(model)
|
|
80
|
+
.any(Filler.Type)
|
|
81
|
+
.any(User.Type)
|
|
82
|
+
.any(Workspace.Type)
|
|
83
|
+
.type(Application, app => app.workspace.owner);
|
|
84
|
+
const distributionRules = new DistributionRules([]);
|
|
85
|
+
const authorization = new AuthorizationKeystore(
|
|
86
|
+
factManager, store, keystore, authorizationRules, distributionRules);
|
|
87
|
+
const feedCache = new FeedCache();
|
|
88
|
+
const router = new HttpRouter(factManager, authorization, feedCache, "*");
|
|
89
|
+
|
|
90
|
+
const requestUser: RequestUser = {
|
|
91
|
+
provider: ownerIdentity.provider,
|
|
92
|
+
id: ownerIdentity.id,
|
|
93
|
+
profile: {} as any
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// Pad the graph with enough leading facts that the real predecessor
|
|
97
|
+
// chain (owner -> workspace -> application) crosses the
|
|
98
|
+
// GraphDeserializer's default 20-fact flush threshold, landing
|
|
99
|
+
// Application in a later flush than its predecessors.
|
|
100
|
+
const fillerRecords: FactRecord[] = [];
|
|
101
|
+
for (let i = 0; i < 18; i++) {
|
|
102
|
+
fillerRecords.push(...dehydrateFact(new Filler(i)));
|
|
103
|
+
}
|
|
104
|
+
const chainRecords = dehydrateFact(new Application(new Workspace(owner, "workspace-1"), "application-1"));
|
|
105
|
+
|
|
106
|
+
const allRecords = [...fillerRecords, ...chainRecords];
|
|
107
|
+
expect(allRecords.length).toBeGreaterThan(20);
|
|
108
|
+
expect(allRecords[allRecords.length - 1].type).toBe(Application.Type);
|
|
109
|
+
|
|
110
|
+
const envelopes: FactEnvelope[] = allRecords.map(fact => ({ fact, signatures: [] }));
|
|
111
|
+
|
|
112
|
+
// Round-trip through the wire protocol so the test exercises the
|
|
113
|
+
// real GraphDeserializer flush boundary, not a hand-picked batch.
|
|
114
|
+
const lines: string[] = [];
|
|
115
|
+
new GraphSerializer(chunk => lines.push(chunk)).serialize(envelopes);
|
|
116
|
+
const wireText = lines.join("");
|
|
117
|
+
const readLine = createReadLine(wireText);
|
|
118
|
+
const graphSource = new GraphDeserializer(readLine);
|
|
119
|
+
|
|
120
|
+
await expect((router as any).save(requestUser, graphSource)).resolves.toBeUndefined();
|
|
121
|
+
|
|
122
|
+
const applicationRecord = chainRecords.find(f => f.type === Application.Type)!;
|
|
123
|
+
const saved = await store.whichExist([{ type: Application.Type, hash: applicationRecord.hash }]);
|
|
124
|
+
expect(saved.length).toBe(1);
|
|
125
|
+
});
|
|
126
|
+
});
|