@kya-os/mcp-i-cloudflare 1.11.1 → 1.12.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/agent.d.ts.map +1 -1
- package/dist/agent.js +2 -1
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +8 -4
- package/dist/app.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/delegation-http/anchor-do.d.ts.map +1 -1
- package/dist/delegation-http/anchor-do.js +13 -2
- package/dist/delegation-http/anchor-do.js.map +1 -1
- package/dist/delegation-http/anchor-registration-validate.d.ts +57 -0
- package/dist/delegation-http/anchor-registration-validate.d.ts.map +1 -0
- package/dist/delegation-http/anchor-registration-validate.js +154 -0
- package/dist/delegation-http/anchor-registration-validate.js.map +1 -0
- package/dist/delegation-http/anchor-registration.d.ts +62 -0
- package/dist/delegation-http/anchor-registration.d.ts.map +1 -0
- package/dist/delegation-http/anchor-registration.js +225 -0
- package/dist/delegation-http/anchor-registration.js.map +1 -0
- package/dist/delegation-http/consent-anchor-bridge.d.ts.map +1 -1
- package/dist/delegation-http/consent-anchor-bridge.js +43 -7
- package/dist/delegation-http/consent-anchor-bridge.js.map +1 -1
- package/dist/delegation-http/constants.d.ts +8 -0
- package/dist/delegation-http/constants.d.ts.map +1 -1
- package/dist/delegation-http/constants.js +8 -0
- package/dist/delegation-http/constants.js.map +1 -1
- package/dist/delegation-http/register.d.ts +9 -2
- package/dist/delegation-http/register.d.ts.map +1 -1
- package/dist/delegation-http/register.js +23 -3
- package/dist/delegation-http/register.js.map +1 -1
- package/dist/delegation-http/registrar-auth.d.ts +24 -0
- package/dist/delegation-http/registrar-auth.d.ts.map +1 -0
- package/dist/delegation-http/registrar-auth.js +61 -0
- package/dist/delegation-http/registrar-auth.js.map +1 -0
- package/dist/delegation-http/types.d.ts +17 -0
- package/dist/delegation-http/types.d.ts.map +1 -1
- package/dist/delegation-http/well-known-capability.d.ts +11 -4
- package/dist/delegation-http/well-known-capability.d.ts.map +1 -1
- package/dist/delegation-http/well-known-capability.js +12 -4
- package/dist/delegation-http/well-known-capability.js.map +1 -1
- package/dist/helpers/env-mapper.d.ts.map +1 -1
- package/dist/helpers/env-mapper.js +6 -0
- package/dist/helpers/env-mapper.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* draft-kya-http-02 delegation layer — external anchor registration
|
|
3
|
+
* (`POST /api/v1/bouncer/sessions`).
|
|
4
|
+
*
|
|
5
|
+
* The cross-resource authorization-host surface: an external PEP in the same
|
|
6
|
+
* project (checkpoint's gateway `registration-client.ts`, the .NET
|
|
7
|
+
* `DelegationAnchorRegistrar`) provisions a pickup anchor on THIS worker for a
|
|
8
|
+
* challenge the worker didn't issue, so the §8.1 challenge that PEP emits can
|
|
9
|
+
* point `consent_uri`/`pickup_uri` at this deployment — no reverse proxy. Path
|
|
10
|
+
* and request/response shapes are the EXACT contract checkpoint's own bouncer
|
|
11
|
+
* sessions route serves (frozen by the vendored `registration.request.json` /
|
|
12
|
+
* `registration.response.json` fixtures), so pointing an existing registrar at
|
|
13
|
+
* a different base URL is the whole integration. Auth lives in
|
|
14
|
+
* `registrar-auth.ts` (the deployment's own `AGENTSHIELD_API_KEY` as Bearer).
|
|
15
|
+
*
|
|
16
|
+
* Semantics mirror checkpoint's route: idempotent first-write-wins per sid
|
|
17
|
+
* (re-registering a live sid returns 200 echoing the ORIGINAL anchor's scopes;
|
|
18
|
+
* a fresh sid returns 201). A non-`kya-` session_id maps to a deterministic
|
|
19
|
+
* `kya-` sid returned in `data.session_id` — the .NET client adopts the
|
|
20
|
+
* response sid; the gateway client already generates `kya-` sids.
|
|
21
|
+
*
|
|
22
|
+
* @module @kya-os/mcp-i-cloudflare/delegation-http/anchor-registration
|
|
23
|
+
*/
|
|
24
|
+
import { INTERNAL_PICKUP_CREATE, INTERNAL_PICKUP_INFO } from "./constants";
|
|
25
|
+
import { isAnchorSid } from "./sid";
|
|
26
|
+
import { sha256Hex } from "./hash";
|
|
27
|
+
import { buildConsentUri, signChallengeProof } from "./challenge";
|
|
28
|
+
import { registrarAuthorized, registrationRateLimited } from "./registrar-auth";
|
|
29
|
+
import { validateRegistrationBody, } from "./anchor-registration-validate";
|
|
30
|
+
/** Internal origin for durable-object stub fetches — the DO routes by pathname only. */
|
|
31
|
+
const DO_INTERNAL_ORIGIN = "https://do.internal";
|
|
32
|
+
/**
|
|
33
|
+
* Whether this deployment serves the anchor-registration route: the layer is ON,
|
|
34
|
+
* the ops kill switch hasn't disabled it, and the registrar bearer
|
|
35
|
+
* (`AGENTSHIELD_API_KEY`) is configured. Single source of truth for the route
|
|
36
|
+
* gate AND the well-known capability advertisement.
|
|
37
|
+
*/
|
|
38
|
+
export function isAnchorRegistrationEnabled(cfg, env) {
|
|
39
|
+
return (cfg !== null &&
|
|
40
|
+
cfg.remoteAnchorRegistration &&
|
|
41
|
+
typeof env.AGENTSHIELD_API_KEY === "string" &&
|
|
42
|
+
env.AGENTSHIELD_API_KEY.length > 0);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Map a registrar-chosen session_id to the worker's anchor-sid namespace. A
|
|
46
|
+
* conforming `kya-` sid (what the gateway and this package both generate) is
|
|
47
|
+
* used verbatim; anything else derives a deterministic `kya-` sid so repeated
|
|
48
|
+
* registrations of the same session still reuse one anchor. The response's
|
|
49
|
+
* `data.session_id` carries the result — the authoritative sid for callers.
|
|
50
|
+
*/
|
|
51
|
+
export function deriveRegistrationSid(sessionId) {
|
|
52
|
+
if (isAnchorSid(sessionId))
|
|
53
|
+
return sessionId;
|
|
54
|
+
return `kya-${sha256Hex(sessionId).slice(0, 32)}`;
|
|
55
|
+
}
|
|
56
|
+
/** JSON error envelope matching checkpoint's `{ success: false, error: {…} }`. */
|
|
57
|
+
function errorResponse(status, code, message, details) {
|
|
58
|
+
return new Response(JSON.stringify({
|
|
59
|
+
success: false,
|
|
60
|
+
error: { code, message, ...(details ? { details } : {}) },
|
|
61
|
+
}), {
|
|
62
|
+
status,
|
|
63
|
+
headers: {
|
|
64
|
+
"Content-Type": "application/json",
|
|
65
|
+
"Cache-Control": "no-store",
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** POST a JSON body to one of the anchor's `/_internal/pickup/*` routes. */
|
|
70
|
+
async function callAnchor(env, deps, sid, internalPath, body) {
|
|
71
|
+
const stub = deps.getAnchorStub(env, sid);
|
|
72
|
+
const response = await stub.fetch(new URL(internalPath, DO_INTERNAL_ORIGIN).toString(), {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: { "Content-Type": "application/json" },
|
|
75
|
+
body: JSON.stringify(body),
|
|
76
|
+
});
|
|
77
|
+
return response;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Ensure a live anchor exists for `sid`, first-write-wins: a live anchor is
|
|
81
|
+
* reused as-is (its stored scopes are authoritative, mirroring checkpoint's
|
|
82
|
+
* COALESCE-on-conflict); otherwise create one from this registration, honoring
|
|
83
|
+
* a `challenge_pin` ONLY when unverified keyid holders are enabled — a pinned
|
|
84
|
+
* keyid the pickup surface would reject (W2) must not brick the anchor.
|
|
85
|
+
*
|
|
86
|
+
* Fresh-vs-existing (`isNew`) comes from the create response's `reused`
|
|
87
|
+
* discriminator, NOT a separate look-then-create: the DO input gate serializes
|
|
88
|
+
* creates, so two racing registrations get exactly one fresh and one reused —
|
|
89
|
+
* one 201 and one 200, checkpoint status parity under concurrency. The
|
|
90
|
+
* follow-up INFO read makes the echoed values the STORED ones in either case.
|
|
91
|
+
*/
|
|
92
|
+
async function ensureAnchor(env, cfg, deps, sid, challenge, session) {
|
|
93
|
+
const pin = challenge.challengePin && cfg.allowUnverifiedKeyidHolders
|
|
94
|
+
? { type: "keyid", valueSha256: sha256Hex(challenge.challengePin) }
|
|
95
|
+
: undefined;
|
|
96
|
+
const created = await callAnchor(env, deps, sid, INTERNAL_PICKUP_CREATE, {
|
|
97
|
+
sid,
|
|
98
|
+
requiredScopes: challenge.requiredScopes,
|
|
99
|
+
pollIntervalS: cfg.pollIntervalS,
|
|
100
|
+
anchorTtlS: cfg.anchorTtlS,
|
|
101
|
+
delegationExpiresInS: cfg.delegationExpiresInS,
|
|
102
|
+
agentDid: challenge.detectedAgentDid ?? session.agentDid,
|
|
103
|
+
// Cross-resource claim inputs (drive the minted VC's aud / server_did —
|
|
104
|
+
// see consent-anchor-bridge's withCrossResourceClaims).
|
|
105
|
+
...(challenge.audience ? { audience: challenge.audience } : {}),
|
|
106
|
+
...(session.serverDid ? { serverDid: session.serverDid } : {}),
|
|
107
|
+
...(pin ? { pin } : {}),
|
|
108
|
+
});
|
|
109
|
+
if (created.status !== 201) {
|
|
110
|
+
return {
|
|
111
|
+
error: errorResponse(502, "anchor_unavailable", "The anchor store did not accept the registration"),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
let reused = false;
|
|
115
|
+
try {
|
|
116
|
+
reused =
|
|
117
|
+
(await created.json()).reused === true;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// A missing/malformed create body reads as fresh — status already proved
|
|
121
|
+
// the anchor exists, and 201-for-fresh is the safe default.
|
|
122
|
+
}
|
|
123
|
+
const readBack = await callAnchor(env, deps, sid, INTERNAL_PICKUP_INFO, {
|
|
124
|
+
sid,
|
|
125
|
+
});
|
|
126
|
+
if (readBack.status !== 200) {
|
|
127
|
+
return {
|
|
128
|
+
error: errorResponse(502, "anchor_unavailable", "The registered anchor could not be read back"),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
isNew: !reused,
|
|
133
|
+
snapshot: (await readBack.json()),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Handle `POST /api/v1/bouncer/sessions`. The route gate
|
|
138
|
+
* (`isAnchorRegistrationEnabled` + layer flag) lives in `register.ts`; by the
|
|
139
|
+
* time this runs the layer is ON and a registrar bearer is configured.
|
|
140
|
+
*/
|
|
141
|
+
export async function handleAnchorRegistration(c, env, cfg, deps) {
|
|
142
|
+
// AuthN first, reading only the header — never the body (checkpoint parity).
|
|
143
|
+
if (!registrarAuthorized(env, c.req.header("Authorization"))) {
|
|
144
|
+
return errorResponse(401, "unauthorized", "Invalid or missing API key");
|
|
145
|
+
}
|
|
146
|
+
if (registrationRateLimited(Date.now())) {
|
|
147
|
+
return errorResponse(429, "rate_limited", "Too many anchor registrations; retry shortly");
|
|
148
|
+
}
|
|
149
|
+
let raw;
|
|
150
|
+
try {
|
|
151
|
+
raw = await c.req.raw.clone().json();
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return errorResponse(400, "invalid_request", "Invalid request body", [
|
|
155
|
+
{ path: "", message: "body must be JSON" },
|
|
156
|
+
]);
|
|
157
|
+
}
|
|
158
|
+
const validated = validateRegistrationBody(raw);
|
|
159
|
+
if (!validated.ok) {
|
|
160
|
+
return errorResponse(400, "invalid_request", "Invalid request body", validated.issues);
|
|
161
|
+
}
|
|
162
|
+
// This surface exists ONLY to anchor challenges (mirrors checkpoint's
|
|
163
|
+
// gateway-service branch): a non-challenge session registration belongs to
|
|
164
|
+
// checkpoint's own route, which owns the sessions table this worker lacks.
|
|
165
|
+
const { challenge } = validated.input;
|
|
166
|
+
if (!challenge) {
|
|
167
|
+
return errorResponse(401, "unauthorized", "This endpoint only accepts challenge registration");
|
|
168
|
+
}
|
|
169
|
+
const sid = deriveRegistrationSid(validated.input.sessionId);
|
|
170
|
+
const anchor = await ensureAnchor(env, cfg, deps, sid, challenge, {
|
|
171
|
+
agentDid: validated.input.agentDid,
|
|
172
|
+
serverDid: validated.input.serverDid,
|
|
173
|
+
});
|
|
174
|
+
if ("error" in anchor)
|
|
175
|
+
return anchor.error;
|
|
176
|
+
// W4: pin the advertised host to the configured realm when set, so a
|
|
177
|
+
// Host-header-reflecting request cannot mint consent/pickup URIs (and a
|
|
178
|
+
// signed proof over them) pointing at an attacker host.
|
|
179
|
+
const host = cfg.realm || new URL(c.req.url).host;
|
|
180
|
+
const verdict = {
|
|
181
|
+
requiredScopes: anchor.snapshot.requiredScopes,
|
|
182
|
+
authorizationHost: host,
|
|
183
|
+
realm: host,
|
|
184
|
+
sid,
|
|
185
|
+
pollIntervalS: cfg.pollIntervalS,
|
|
186
|
+
};
|
|
187
|
+
const consentUri = buildConsentUri(verdict);
|
|
188
|
+
let challengeProof;
|
|
189
|
+
try {
|
|
190
|
+
challengeProof = await signChallengeProof(await deps.proofGenerator(), {
|
|
191
|
+
sid,
|
|
192
|
+
consent_uri: consentUri,
|
|
193
|
+
required_scopes: anchor.snapshot.requiredScopes,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
// The anchor persisted but is unreachable without a proof-bearing response;
|
|
198
|
+
// it expires via its ≤600s TTL (same orphan rationale as the challenge
|
|
199
|
+
// emitter's signing-failure path).
|
|
200
|
+
console.warn(`[kya-http] registration challenge_proof signing failed (sid=${sid}):`, error instanceof Error ? error.message : String(error));
|
|
201
|
+
return errorResponse(502, "proof_unavailable", "The challenge proof could not be signed");
|
|
202
|
+
}
|
|
203
|
+
return new Response(JSON.stringify({
|
|
204
|
+
success: true,
|
|
205
|
+
data: {
|
|
206
|
+
session_id: sid,
|
|
207
|
+
registered: true,
|
|
208
|
+
created_at: new Date(validated.input.createdAt).toISOString(),
|
|
209
|
+
challenge: {
|
|
210
|
+
consent_uri: consentUri,
|
|
211
|
+
challenge_proof: challengeProof,
|
|
212
|
+
required_scopes: anchor.snapshot.requiredScopes,
|
|
213
|
+
issued_at: Date.now(),
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
}), {
|
|
217
|
+
status: anchor.isNew ? 201 : 200,
|
|
218
|
+
headers: {
|
|
219
|
+
"Content-Type": "application/json",
|
|
220
|
+
// Checkpoint's route parity (its success responses are private/no-cache).
|
|
221
|
+
"Cache-Control": "private, no-cache",
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=anchor-registration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor-registration.js","sourceRoot":"","sources":["../../src/delegation-http/anchor-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EACL,wBAAwB,GAGzB,MAAM,gCAAgC,CAAC;AA6BxC,wFAAwF;AACxF,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAyC,EACzC,GAAkB;IAElB,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,GAAG,CAAC,wBAAwB;QAC5B,OAAO,GAAG,CAAC,mBAAmB,KAAK,QAAQ;QAC3C,GAAG,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CACnC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,IAAI,WAAW,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,kFAAkF;AAClF,SAAS,aAAa,CACpB,MAAc,EACd,IAAY,EACZ,OAAe,EACf,OAA2B;IAE3B,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;KAC1D,CAAC,EACF;QACE,MAAM;QACN,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU;SAC5B;KACF,CACF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,UAAU,CACvB,GAAkB,EAClB,IAAsB,EACtB,GAAW,EACX,YAAoB,EACpB,IAAa;IAEb,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B,IAAI,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,QAAQ,EAAE,EACpD;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CACF,CAAC;IACF,OAAO,QAA0C,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,YAAY,CACzB,GAAkB,EAClB,GAAkC,EAClC,IAAsB,EACtB,GAAW,EACX,SAAgC,EAChC,OAAiD;IAEjD,MAAM,GAAG,GACP,SAAS,CAAC,YAAY,IAAI,GAAG,CAAC,2BAA2B;QACvD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;QACnE,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,sBAAsB,EAAE;QACvE,GAAG;QACH,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;QAC9C,QAAQ,EAAE,SAAS,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ;QACxD,wEAAwE;QACxE,wDAAwD;QACxD,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxB,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC3B,OAAO;YACL,KAAK,EAAE,aAAa,CAClB,GAAG,EACH,oBAAoB,EACpB,kDAAkD,CACnD;SACF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,MAAM;YACH,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAA0B,CAAC,MAAM,KAAK,IAAI,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,4DAA4D;IAC9D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,oBAAoB,EAAE;QACtE,GAAG;KACJ,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,aAAa,CAClB,GAAG,EACH,oBAAoB,EACpB,8CAA8C,CAC/C;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,CAAC,MAAM;QACd,QAAQ,EAAE,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB;KACpD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,CAA6B,EAC7B,GAAkB,EAClB,GAAkC,EAClC,IAAsB;IAEtB,6EAA6E;IAC7E,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,4BAA4B,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACxC,OAAO,aAAa,CAClB,GAAG,EACH,cAAc,EACd,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IAED,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,sBAAsB,EAAE;YACnE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IACD,MAAM,SAAS,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,OAAO,aAAa,CAClB,GAAG,EACH,iBAAiB,EACjB,sBAAsB,EACtB,SAAS,CAAC,MAAM,CACjB,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,aAAa,CAClB,GAAG,EACH,cAAc,EACd,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;QAChE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ;QAClC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS;KACrC,CAAC,CAAC;IACH,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAE3C,qEAAqE;IACrE,wEAAwE;IACxE,wDAAwD;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAClD,MAAM,OAAO,GAA0B;QACrC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc;QAC9C,iBAAiB,EAAE,IAAI;QACvB,KAAK,EAAE,IAAI;QACX,GAAG;QACH,aAAa,EAAE,GAAG,CAAC,aAAa;KACjC,CAAC;IACF,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,cAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,kBAAkB,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE;YACrE,GAAG;YACH,WAAW,EAAE,UAAU;YACvB,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc;SAChD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4EAA4E;QAC5E,uEAAuE;QACvE,mCAAmC;QACnC,OAAO,CAAC,IAAI,CACV,+DAA+D,GAAG,IAAI,EACtE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,aAAa,CAClB,GAAG,EACH,mBAAmB,EACnB,yCAAyC,CAC1C,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,IAAI;QACb,IAAI,EAAE;YACJ,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAC7D,SAAS,EAAE;gBACT,WAAW,EAAE,UAAU;gBACvB,eAAe,EAAE,cAAc;gBAC/B,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc;gBAC/C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB;SACF;KACF,CAAC,EACF;QACE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QAChC,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,0EAA0E;YAC1E,eAAe,EAAE,mBAAmB;SACrC;KACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-anchor-bridge.d.ts","sourceRoot":"","sources":["../../src/delegation-http/consent-anchor-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"consent-anchor-bridge.d.ts","sourceRoot":"","sources":["../../src/delegation-http/consent-anchor-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAyarD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,CAAC,EAAE,WAAW,EACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAClC,OAAO,CAAC,QAAQ,CAAC,CAiBnB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,CAAC,EAAE,WAAW,EACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GACjC,OAAO,CAAC,QAAQ,CAAC,CAyEnB"}
|
|
@@ -216,6 +216,37 @@ function isTestConsentMode(env) {
|
|
|
216
216
|
return environment === "development";
|
|
217
217
|
}
|
|
218
218
|
// ── VC-JWT minting (same primitive chain as consent.service.issueDelegationVC) ──
|
|
219
|
+
/**
|
|
220
|
+
* draft-kya-http-02 §4.3 claims for a CROSS-RESOURCE delegation. An anchor
|
|
221
|
+
* registered by an external PEP carries the resource org's DID; the minted
|
|
222
|
+
* VC-JWT must then present exactly what checkpoint's claim gate
|
|
223
|
+
* (`delegation-claims.ts` `checkDelegationClaims`) pins:
|
|
224
|
+
* - `aud` === the resource org's DID (`kyaos/audience-mismatch` otherwise) —
|
|
225
|
+
* the ORG, not the resource URL: scope remains the per-resource boundary,
|
|
226
|
+
* and per-resource audience would require rewriting the verifier's
|
|
227
|
+
* audience/trust model;
|
|
228
|
+
* - `sid` — the anchor sid, required non-empty (`kyaos/session-mismatch`);
|
|
229
|
+
* - `server_did` — the challenged resource's DID, attribution only (nothing
|
|
230
|
+
* verifies it today; it gives audit trails a per-resource record and a
|
|
231
|
+
* re-mint-free path to tighten audience later).
|
|
232
|
+
*
|
|
233
|
+
* A SELF-ISSUED anchor has no `audience`, so this returns the unsigned parts'
|
|
234
|
+
* original `signingInput` untouched — the self-gating VC-JWT stays
|
|
235
|
+
* byte-identical (the regression guard). `encodedHeader` is reused verbatim so
|
|
236
|
+
* the only re-encoded segment is the payload actually being extended (via this
|
|
237
|
+
* module's own base64url helper — the CSRF token codec below).
|
|
238
|
+
*/
|
|
239
|
+
function withCrossResourceClaims(unsigned, info, sid) {
|
|
240
|
+
if (!info.audience)
|
|
241
|
+
return unsigned.signingInput;
|
|
242
|
+
const payload = {
|
|
243
|
+
...unsigned.payload,
|
|
244
|
+
aud: info.audience,
|
|
245
|
+
sid,
|
|
246
|
+
...(info.serverDid ? { server_did: info.serverDid } : {}),
|
|
247
|
+
};
|
|
248
|
+
return `${unsigned.encodedHeader}.${base64UrlEncodeString(JSON.stringify(payload))}`;
|
|
249
|
+
}
|
|
219
250
|
/**
|
|
220
251
|
* Mint a delegation VC-JWT for an approved anchor, wrap it as a VC, and sign it —
|
|
221
252
|
* the primitive chain `consent.service.ts` uses, called here directly (the service
|
|
@@ -247,12 +278,14 @@ async function mintDelegationVcJwt(env, sid, info, expiresInS) {
|
|
|
247
278
|
keyId = `${issuerDid}#${didKeyFragment(issuerDid)}`;
|
|
248
279
|
signingPrivateKey = rawKeyPair.privateKey;
|
|
249
280
|
}
|
|
250
|
-
// Subject (the agent the delegation is granted to).
|
|
251
|
-
//
|
|
252
|
-
//
|
|
253
|
-
//
|
|
254
|
-
//
|
|
255
|
-
|
|
281
|
+
// Subject (the agent the delegation is granted to). An externally-registered
|
|
282
|
+
// anchor carries the registering PEP's agent DID (verified `detected_agent_did`
|
|
283
|
+
// when present, else the session `agent_did` — possibly the anonymous-principal
|
|
284
|
+
// sentinel); a self-issued anchor does not, so fall back to the worker's
|
|
285
|
+
// configured agent DID when present (the same value as the issuer when an
|
|
286
|
+
// identity is configured, and an independent ephemeral holder DID when it
|
|
287
|
+
// isn't — both were already true of the subject's own fallback before this).
|
|
288
|
+
const agentDid = info.agentDid || env.MCP_IDENTITY_AGENT_DID || issuerDid;
|
|
256
289
|
const nowS = Math.floor(Date.now() / 1000);
|
|
257
290
|
const delegation = {
|
|
258
291
|
id: `urn:uuid:${sid}`,
|
|
@@ -273,7 +306,10 @@ async function mintDelegationVcJwt(env, sid, info, expiresInS) {
|
|
|
273
306
|
issuanceDate: new Date().toISOString(),
|
|
274
307
|
});
|
|
275
308
|
const vcWithIssuer = { ...unsignedVC, issuer: issuerDid };
|
|
276
|
-
const
|
|
309
|
+
const unsigned = createUnsignedVCJWT(vcWithIssuer, { keyId });
|
|
310
|
+
// Cross-resource anchors extend the payload (aud/sid/server_did) BEFORE
|
|
311
|
+
// signing; self-issued anchors sign the original input, byte-identical.
|
|
312
|
+
const signingInput = withCrossResourceClaims(unsigned, info, sid);
|
|
277
313
|
const signatureBytes = await cryptoProvider.sign(new TextEncoder().encode(signingInput), signingPrivateKey);
|
|
278
314
|
const signature = base64urlEncodeFromBytes(signatureBytes);
|
|
279
315
|
return completeVCJWT(signingInput, signature);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-anchor-bridge.js","sourceRoot":"","sources":["../../src/delegation-http/consent-anchor-bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consent-anchor-bridge.js","sourceRoot":"","sources":["../../src/delegation-http/consent-anchor-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,14 @@ export declare const PICKUP_ROUTE = "/api/delegation/pickup/:sid";
|
|
|
16
16
|
* falls through with `next()`.
|
|
17
17
|
*/
|
|
18
18
|
export declare const CONSENT_ROUTE = "/consent";
|
|
19
|
+
/**
|
|
20
|
+
* Anchor-registration endpoint — the SAME path and wire contract as checkpoint's
|
|
21
|
+
* bouncer sessions route, so an external PEP that already registers challenge
|
|
22
|
+
* anchors against checkpoint (gateway `registration-client.ts`, .NET
|
|
23
|
+
* `DelegationAnchorRegistrar`) can be pointed at this worker unmodified. Shape is
|
|
24
|
+
* frozen by the vendored `registration.request.json` / `registration.response.json`.
|
|
25
|
+
*/
|
|
26
|
+
export declare const ANCHOR_REGISTRATION_ROUTE = "/api/v1/bouncer/sessions";
|
|
19
27
|
/** Raw pickup-token header for token-path holders (hashed before storage). */
|
|
20
28
|
export declare const PICKUP_TOKEN_HEADER = "X-KYA-Pickup-Token";
|
|
21
29
|
/** Fallback delegation header used when `Authorization` is occupied by an OAuth bearer. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/delegation-http/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oFAAoF;AACpF,eAAO,MAAM,YAAY,gCAAgC,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAExD,2FAA2F;AAC3F,eAAO,MAAM,0BAA0B,mBAAmB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,sGASxB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/delegation-http/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oFAAoF;AACpF,eAAO,MAAM,YAAY,gCAAgC,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AAEpE,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAExD,2FAA2F;AAC3F,eAAO,MAAM,0BAA0B,mBAAmB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,sGASxB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AACjE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,2BAA2B,CAAC"}
|
|
@@ -16,6 +16,14 @@ export const PICKUP_ROUTE = "/api/delegation/pickup/:sid";
|
|
|
16
16
|
* falls through with `next()`.
|
|
17
17
|
*/
|
|
18
18
|
export const CONSENT_ROUTE = "/consent";
|
|
19
|
+
/**
|
|
20
|
+
* Anchor-registration endpoint — the SAME path and wire contract as checkpoint's
|
|
21
|
+
* bouncer sessions route, so an external PEP that already registers challenge
|
|
22
|
+
* anchors against checkpoint (gateway `registration-client.ts`, .NET
|
|
23
|
+
* `DelegationAnchorRegistrar`) can be pointed at this worker unmodified. Shape is
|
|
24
|
+
* frozen by the vendored `registration.request.json` / `registration.response.json`.
|
|
25
|
+
*/
|
|
26
|
+
export const ANCHOR_REGISTRATION_ROUTE = "/api/v1/bouncer/sessions";
|
|
19
27
|
/** Raw pickup-token header for token-path holders (hashed before storage). */
|
|
20
28
|
export const PICKUP_TOKEN_HEADER = "X-KYA-Pickup-Token";
|
|
21
29
|
/** Fallback delegation header used when `Authorization` is occupied by an OAuth bearer. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/delegation-http/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oFAAoF;AACpF,MAAM,CAAC,MAAM,YAAY,GAAG,6BAA6B,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AAExC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAExD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,0BAA0B,GAAG,gBAAgB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO;IACP,KAAK;IACL,aAAa;IACb,YAAY;IACZ,OAAO;IACP,eAAe;IACf,UAAU;IACV,MAAM;CACE,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,qBAAqB,EAAE,8BAA8B;IACrD,YAAY,EAAE,qBAAqB;IACnC,cAAc,EAAE,uBAAuB;IACvC,aAAa,EAAE,sBAAsB;IACrC,OAAO,EAAE,eAAe;IACxB,WAAW,EAAE,oBAAoB;IACjC,iBAAiB,EAAE,0BAA0B;CACrC,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/delegation-http/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oFAAoF;AACpF,MAAM,CAAC,MAAM,YAAY,GAAG,6BAA6B,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,0BAA0B,CAAC;AAEpE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAExD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,0BAA0B,GAAG,gBAAgB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO;IACP,KAAK;IACL,aAAa;IACb,YAAY;IACZ,OAAO;IACP,eAAe;IACf,UAAU;IACV,MAAM;CACE,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,qBAAqB,EAAE,8BAA8B;IACrD,YAAY,EAAE,qBAAqB;IACnC,cAAc,EAAE,uBAAuB;IACvC,aAAa,EAAE,sBAAsB;IACrC,OAAO,EAAE,eAAe;IACxB,WAAW,EAAE,oBAAoB;IACjC,iBAAiB,EAAE,0BAA0B;CACrC,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC"}
|
|
@@ -11,9 +11,16 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { Hono } from "hono";
|
|
13
13
|
import type { CreateMCPIAppOptions } from "../app";
|
|
14
|
+
import type { CloudflareProofGenerator } from "../proof-generator";
|
|
15
|
+
/** App-provided dependencies for routes that must sign (anchor registration). */
|
|
16
|
+
export interface DelegationHttpRouteDeps {
|
|
17
|
+
/** Lazily build a proof generator bound to the request's env (see app.ts). */
|
|
18
|
+
proofGenerator?: (c: unknown) => Promise<CloudflareProofGenerator>;
|
|
19
|
+
}
|
|
14
20
|
/**
|
|
15
21
|
* Register the kya-http delegation routes (worker-served pickup, anchor consent
|
|
16
|
-
* interception). Call this BEFORE the legacy
|
|
22
|
+
* interception, external anchor registration). Call this BEFORE the legacy
|
|
23
|
+
* `/consent` registrations.
|
|
17
24
|
*/
|
|
18
|
-
export declare function registerDelegationHttpRoutes(app: Hono, options: CreateMCPIAppOptions): void;
|
|
25
|
+
export declare function registerDelegationHttpRoutes(app: Hono, options: CreateMCPIAppOptions, deps?: DelegationHttpRouteDeps): void;
|
|
19
26
|
//# sourceMappingURL=register.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/delegation-http/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,MAAM,CAAC;AAMvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/delegation-http/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,MAAM,CAAC;AAMvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAkBnE,iFAAiF;AACjF,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACpE;AA2BD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,oBAAoB,EAC7B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAmDN"}
|
|
@@ -11,10 +11,12 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { mapPrefixedEnv } from "../helpers/env-mapper";
|
|
13
13
|
import { resolveHttpChallengeConfig } from "../config";
|
|
14
|
-
import { PICKUP_ROUTE, CONSENT_ROUTE } from "./constants";
|
|
14
|
+
import { PICKUP_ROUTE, CONSENT_ROUTE, ANCHOR_REGISTRATION_ROUTE, } from "./constants";
|
|
15
15
|
import { isAnchorSid } from "./sid";
|
|
16
16
|
import { handlePickupGet } from "./pickup-routes";
|
|
17
17
|
import { handleAnchorConsentGet, handleAnchorConsentApprove, } from "./consent-anchor-bridge";
|
|
18
|
+
import { getAnchorStub } from "./anchor-routing";
|
|
19
|
+
import { handleAnchorRegistration, isAnchorRegistrationEnabled, } from "./anchor-registration";
|
|
18
20
|
/**
|
|
19
21
|
* Resolve the request's mapped env and the (flag-gated) http-challenge config.
|
|
20
22
|
* Never throws — a config failure resolves to `cfg: null` (layer OFF) so the legacy
|
|
@@ -37,9 +39,10 @@ c, options) {
|
|
|
37
39
|
}
|
|
38
40
|
/**
|
|
39
41
|
* Register the kya-http delegation routes (worker-served pickup, anchor consent
|
|
40
|
-
* interception). Call this BEFORE the legacy
|
|
42
|
+
* interception, external anchor registration). Call this BEFORE the legacy
|
|
43
|
+
* `/consent` registrations.
|
|
41
44
|
*/
|
|
42
|
-
export function registerDelegationHttpRoutes(app, options) {
|
|
45
|
+
export function registerDelegationHttpRoutes(app, options, deps) {
|
|
43
46
|
// §8.2 worker-served pickup. New path — when OFF, `next()` yields the app's 404.
|
|
44
47
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
48
|
app.get(PICKUP_ROUTE, async (c, next) => {
|
|
@@ -68,5 +71,22 @@ export function registerDelegationHttpRoutes(app, options) {
|
|
|
68
71
|
return next();
|
|
69
72
|
return handleAnchorConsentApprove(c, sid, env, cfg);
|
|
70
73
|
});
|
|
74
|
+
// External anchor registration (checkpoint's bouncer-sessions wire contract).
|
|
75
|
+
// Serves only when the layer is ON, the ops kill switch hasn't disabled it,
|
|
76
|
+
// the registrar bearer (AGENTSHIELD_API_KEY) is configured, AND the app wired
|
|
77
|
+
// a proof generator; otherwise next() yields the app's 404 — byte-identical
|
|
78
|
+
// to a deployment that predates this surface.
|
|
79
|
+
const proofGenerator = deps?.proofGenerator;
|
|
80
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
81
|
+
app.post(ANCHOR_REGISTRATION_ROUTE, async (c, next) => {
|
|
82
|
+
const { env, cfg } = resolveRequest(c, options);
|
|
83
|
+
if (!cfg || !isAnchorRegistrationEnabled(cfg, env) || !proofGenerator) {
|
|
84
|
+
return next();
|
|
85
|
+
}
|
|
86
|
+
return handleAnchorRegistration(c, env, cfg, {
|
|
87
|
+
getAnchorStub,
|
|
88
|
+
proofGenerator: () => proofGenerator(c),
|
|
89
|
+
});
|
|
90
|
+
});
|
|
71
91
|
}
|
|
72
92
|
//# sourceMappingURL=register.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/delegation-http/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/delegation-http/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* draft-kya-http-02 delegation layer — anchor-registration registrar auth.
|
|
3
|
+
*
|
|
4
|
+
* The registration surface authenticates external PEPs with the deployment's
|
|
5
|
+
* own per-project dashboard API key (`AGENTSHIELD_API_KEY`) presented as
|
|
6
|
+
* `Authorization: Bearer …` — the same credential (and header) the .NET
|
|
7
|
+
* `DelegationAnchorRegistrar` already sends to checkpoint's bouncer sessions
|
|
8
|
+
* route, so no new secret is provisioned and no caller changes shape. The raw
|
|
9
|
+
* key is never logged; comparison is constant-time over SHA-256 digests.
|
|
10
|
+
*
|
|
11
|
+
* @module @kya-os/mcp-i-cloudflare/delegation-http/registrar-auth
|
|
12
|
+
*/
|
|
13
|
+
import type { CloudflareEnv } from "../types";
|
|
14
|
+
/**
|
|
15
|
+
* Validate the presented registrar bearer against the deployment's own
|
|
16
|
+
* per-project API key. Digest-then-compare keeps the comparison constant-time
|
|
17
|
+
* and length-independent.
|
|
18
|
+
*/
|
|
19
|
+
export declare function registrarAuthorized(env: CloudflareEnv, authorizationHeader: string | undefined): boolean;
|
|
20
|
+
/** Count one registration attempt; true when the isolate's window is exhausted. */
|
|
21
|
+
export declare function registrationRateLimited(now: number): boolean;
|
|
22
|
+
/** Test seam: reset the per-isolate rate window. */
|
|
23
|
+
export declare function resetRegistrationRateLimiterForTests(): void;
|
|
24
|
+
//# sourceMappingURL=registrar-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registrar-auth.d.ts","sourceRoot":"","sources":["../../src/delegation-http/registrar-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAa9C;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACtC,OAAO,CAMT;AAYD,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED,oDAAoD;AACpD,wBAAgB,oCAAoC,IAAI,IAAI,CAG3D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* draft-kya-http-02 delegation layer — anchor-registration registrar auth.
|
|
3
|
+
*
|
|
4
|
+
* The registration surface authenticates external PEPs with the deployment's
|
|
5
|
+
* own per-project dashboard API key (`AGENTSHIELD_API_KEY`) presented as
|
|
6
|
+
* `Authorization: Bearer …` — the same credential (and header) the .NET
|
|
7
|
+
* `DelegationAnchorRegistrar` already sends to checkpoint's bouncer sessions
|
|
8
|
+
* route, so no new secret is provisioned and no caller changes shape. The raw
|
|
9
|
+
* key is never logged; comparison is constant-time over SHA-256 digests.
|
|
10
|
+
*
|
|
11
|
+
* @module @kya-os/mcp-i-cloudflare/delegation-http/registrar-auth
|
|
12
|
+
*/
|
|
13
|
+
import { sha256Hex } from "./hash";
|
|
14
|
+
/** Constant-time comparison of two equal-length hex digests. */
|
|
15
|
+
function constantTimeEqualHex(a, b) {
|
|
16
|
+
if (a.length !== b.length)
|
|
17
|
+
return false;
|
|
18
|
+
let diff = 0;
|
|
19
|
+
for (let i = 0; i < a.length; i++) {
|
|
20
|
+
diff |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
21
|
+
}
|
|
22
|
+
return diff === 0;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Validate the presented registrar bearer against the deployment's own
|
|
26
|
+
* per-project API key. Digest-then-compare keeps the comparison constant-time
|
|
27
|
+
* and length-independent.
|
|
28
|
+
*/
|
|
29
|
+
export function registrarAuthorized(env, authorizationHeader) {
|
|
30
|
+
const expected = env.AGENTSHIELD_API_KEY;
|
|
31
|
+
if (!expected || !authorizationHeader)
|
|
32
|
+
return false;
|
|
33
|
+
const match = /^Bearer\s+(.+)$/i.exec(authorizationHeader.trim());
|
|
34
|
+
if (!match)
|
|
35
|
+
return false;
|
|
36
|
+
return constantTimeEqualHex(sha256Hex(match[1]), sha256Hex(expected));
|
|
37
|
+
}
|
|
38
|
+
// ── Rate backstop ─────────────────────────────────────────────────────────────
|
|
39
|
+
// Per-isolate fixed window. Registrars are already authenticated project peers,
|
|
40
|
+
// so this only bounds a runaway/buggy registrar (a retry loop minting anchors),
|
|
41
|
+
// not an adversary holding the project key; an isolate restart resets it by
|
|
42
|
+
// design. Anchors are additionally TTL-bounded (≤600s) and sid-idempotent.
|
|
43
|
+
const RATE_WINDOW_MS = 60_000;
|
|
44
|
+
const RATE_MAX_PER_WINDOW = 60;
|
|
45
|
+
let rateWindowStart = 0;
|
|
46
|
+
let rateCount = 0;
|
|
47
|
+
/** Count one registration attempt; true when the isolate's window is exhausted. */
|
|
48
|
+
export function registrationRateLimited(now) {
|
|
49
|
+
if (now - rateWindowStart >= RATE_WINDOW_MS) {
|
|
50
|
+
rateWindowStart = now;
|
|
51
|
+
rateCount = 0;
|
|
52
|
+
}
|
|
53
|
+
rateCount += 1;
|
|
54
|
+
return rateCount > RATE_MAX_PER_WINDOW;
|
|
55
|
+
}
|
|
56
|
+
/** Test seam: reset the per-isolate rate window. */
|
|
57
|
+
export function resetRegistrationRateLimiterForTests() {
|
|
58
|
+
rateWindowStart = 0;
|
|
59
|
+
rateCount = 0;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=registrar-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registrar-auth.js","sourceRoot":"","sources":["../../src/delegation-http/registrar-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,gEAAgE;AAChE,SAAS,oBAAoB,CAAC,CAAS,EAAE,CAAS;IAChD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAkB,EAClB,mBAAuC;IAEvC,MAAM,QAAQ,GAAG,GAAG,CAAC,mBAAmB,CAAC;IACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,mBAAmB;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,IAAI,GAAG,GAAG,eAAe,IAAI,cAAc,EAAE,CAAC;QAC5C,eAAe,GAAG,GAAG,CAAC;QACtB,SAAS,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,SAAS,IAAI,CAAC,CAAC;IACf,OAAO,SAAS,GAAG,mBAAmB,CAAC;AACzC,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,oCAAoC;IAClD,eAAe,GAAG,CAAC,CAAC;IACpB,SAAS,GAAG,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -24,6 +24,20 @@ export interface AnchorPin {
|
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
26
|
* The full anchor record persisted in `ctx.storage`. All timestamps are epoch ms.
|
|
27
|
+
*
|
|
28
|
+
* `agentDid`, `audience`, and `serverDid` are set only for externally-registered
|
|
29
|
+
* anchors (the `POST /api/v1/bouncer/sessions` surface):
|
|
30
|
+
* - `agentDid` — the registering PEP's `detected_agent_did ?? agent_did`;
|
|
31
|
+
* becomes the minted delegation's SUBJECT.
|
|
32
|
+
* - `audience` — the resource org's DID (`challenge.audience`); becomes the
|
|
33
|
+
* minted VC-JWT's `aud`, the value checkpoint's §4.3 claim gate pins
|
|
34
|
+
* (`aud === resource org DID`). Its presence is what switches the mint into
|
|
35
|
+
* cross-resource claim mode.
|
|
36
|
+
* - `serverDid` — the challenged resource server's DID (`server_did`); carried
|
|
37
|
+
* as a `server_did` claim for audit attribution only (aud stays the ORG —
|
|
38
|
+
* scope is the per-resource boundary).
|
|
39
|
+
* Anchors created by the worker's own challenge emitter carry none of these
|
|
40
|
+
* (the mint's env fallback and byte-exact self-gating VC are unchanged).
|
|
27
41
|
*/
|
|
28
42
|
export interface PickupAnchorRecord {
|
|
29
43
|
sid: string;
|
|
@@ -33,6 +47,9 @@ export interface PickupAnchorRecord {
|
|
|
33
47
|
pollIntervalS: number;
|
|
34
48
|
createdAt: number;
|
|
35
49
|
expiresAt: number;
|
|
50
|
+
agentDid?: string;
|
|
51
|
+
audience?: string;
|
|
52
|
+
serverDid?: string;
|
|
36
53
|
pin?: AnchorPin;
|
|
37
54
|
delegation?: {
|
|
38
55
|
vcJwt: string;
|