@kya-os/mcp-i-cloudflare 1.15.0 → 1.16.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/README.md +37 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +81 -51
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +9 -12
- package/dist/app.js.map +1 -1
- package/dist/audit/deployment-binding.d.ts +12 -12
- package/dist/config.d.ts +28 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/constants/storage-keys.d.ts +9 -0
- package/dist/constants/storage-keys.d.ts.map +1 -1
- package/dist/constants/storage-keys.js +9 -0
- package/dist/constants/storage-keys.js.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -1
- package/dist/delegation-http/bearer-retry.d.ts +20 -4
- package/dist/delegation-http/bearer-retry.d.ts.map +1 -1
- package/dist/delegation-http/bearer-retry.js +56 -10
- package/dist/delegation-http/bearer-retry.js.map +1 -1
- package/dist/delegation-http/consent-anchor-bridge.d.ts.map +1 -1
- package/dist/delegation-http/consent-anchor-bridge.js +72 -13
- package/dist/delegation-http/consent-anchor-bridge.js.map +1 -1
- package/dist/delegation-http/native-oauth-state.d.ts +16 -0
- package/dist/delegation-http/native-oauth-state.d.ts.map +1 -1
- package/dist/delegation-http/native-oauth-state.js +24 -9
- package/dist/delegation-http/native-oauth-state.js.map +1 -1
- package/dist/delegation-http/native-oauth.d.ts.map +1 -1
- package/dist/delegation-http/native-oauth.js +26 -7
- package/dist/delegation-http/native-oauth.js.map +1 -1
- package/dist/delegation-http/oauth-recovery.d.ts +3 -0
- package/dist/delegation-http/oauth-recovery.d.ts.map +1 -0
- package/dist/delegation-http/oauth-recovery.js +39 -0
- package/dist/delegation-http/oauth-recovery.js.map +1 -0
- package/dist/delegation-http/remote-issuer.d.ts +15 -0
- package/dist/delegation-http/remote-issuer.d.ts.map +1 -1
- package/dist/delegation-http/remote-issuer.js +27 -8
- package/dist/delegation-http/remote-issuer.js.map +1 -1
- package/dist/helpers/env-mapper.d.ts.map +1 -1
- package/dist/helpers/env-mapper.js +28 -6
- package/dist/helpers/env-mapper.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/proof-generator.d.ts +8 -7
- package/dist/proof-generator.d.ts.map +1 -1
- package/dist/proof-generator.js +32 -34
- package/dist/proof-generator.js.map +1 -1
- package/dist/runtime/oauth-handler.d.ts.map +1 -1
- package/dist/runtime/oauth-handler.js +43 -31
- package/dist/runtime/oauth-handler.js.map +1 -1
- package/dist/runtime/tool-activity.d.ts +31 -4
- package/dist/runtime/tool-activity.d.ts.map +1 -1
- package/dist/runtime/tool-activity.js +48 -0
- package/dist/runtime/tool-activity.js.map +1 -1
- package/dist/runtime.d.ts +31 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +65 -0
- package/dist/runtime.js.map +1 -1
- package/dist/security/admission-refusal.d.ts +32 -0
- package/dist/security/admission-refusal.d.ts.map +1 -0
- package/dist/security/admission-refusal.js +97 -0
- package/dist/security/admission-refusal.js.map +1 -0
- package/dist/security/card-proof-support.d.ts +66 -0
- package/dist/security/card-proof-support.d.ts.map +1 -0
- package/dist/security/card-proof-support.js +121 -0
- package/dist/security/card-proof-support.js.map +1 -0
- package/dist/security/mcp-admission.d.ts +28 -2
- package/dist/security/mcp-admission.d.ts.map +1 -1
- package/dist/security/mcp-admission.js +129 -29
- package/dist/security/mcp-admission.js.map +1 -1
- package/dist/security/mcp-holder-admission.d.ts +12 -1
- package/dist/security/mcp-holder-admission.d.ts.map +1 -1
- package/dist/security/mcp-holder-admission.js +46 -8
- package/dist/security/mcp-holder-admission.js.map +1 -1
- package/dist/security/presented-delegation.d.ts +10 -0
- package/dist/security/presented-delegation.d.ts.map +1 -1
- package/dist/security/presented-delegation.js +23 -3
- package/dist/security/presented-delegation.js.map +1 -1
- package/dist/services/admin.service.d.ts.map +1 -1
- package/dist/services/admin.service.js +24 -9
- package/dist/services/admin.service.js.map +1 -1
- package/dist/services/approval-route.d.ts +48 -0
- package/dist/services/approval-route.d.ts.map +1 -0
- package/dist/services/approval-route.js +87 -0
- package/dist/services/approval-route.js.map +1 -0
- package/dist/services/consent-config.service.d.ts.map +1 -1
- package/dist/services/consent-config.service.js +20 -5
- package/dist/services/consent-config.service.js.map +1 -1
- package/dist/services/consent.service.d.ts +113 -5
- package/dist/services/consent.service.d.ts.map +1 -1
- package/dist/services/consent.service.js +746 -904
- package/dist/services/consent.service.js.map +1 -1
- package/dist/services/credential-auth.handler.d.ts +2 -0
- package/dist/services/credential-auth.handler.d.ts.map +1 -1
- package/dist/services/credential-auth.handler.js +19 -3
- package/dist/services/credential-auth.handler.js.map +1 -1
- package/dist/services/delegation-trust.d.ts +97 -0
- package/dist/services/delegation-trust.d.ts.map +1 -0
- package/dist/services/delegation-trust.js +378 -0
- package/dist/services/delegation-trust.js.map +1 -0
- package/dist/services/delegation.service.d.ts +56 -14
- package/dist/services/delegation.service.d.ts.map +1 -1
- package/dist/services/delegation.service.js +160 -68
- package/dist/services/delegation.service.js.map +1 -1
- package/dist/services/multipart-parser.d.ts +73 -0
- package/dist/services/multipart-parser.d.ts.map +1 -0
- package/dist/services/multipart-parser.js +116 -0
- package/dist/services/multipart-parser.js.map +1 -0
- package/dist/services/proof.service.d.ts +38 -0
- package/dist/services/proof.service.d.ts.map +1 -1
- package/dist/services/proof.service.js +41 -2
- package/dist/services/proof.service.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/checkpoint-project-id.d.ts +31 -0
- package/dist/utils/checkpoint-project-id.d.ts.map +1 -0
- package/dist/utils/checkpoint-project-id.js +35 -0
- package/dist/utils/checkpoint-project-id.js.map +1 -0
- package/dist/utils/oauth-profile.d.ts +7 -0
- package/dist/utils/oauth-profile.d.ts.map +1 -0
- package/dist/utils/oauth-profile.js +24 -0
- package/dist/utils/oauth-profile.js.map +1 -0
- package/package.json +7 -6
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
* for MCP-I Cloudflare servers.
|
|
6
6
|
*
|
|
7
7
|
* Supports both:
|
|
8
|
-
* - Local VC-JWT verification (offline, cryptographic)
|
|
8
|
+
* - Local VC-JWT verification (offline, cryptographic), restricted to pinned
|
|
9
|
+
* issuers and accepted audiences (see ./delegation-trust)
|
|
9
10
|
* - Checkpoint API verification (online, centralized)
|
|
10
11
|
*/
|
|
11
12
|
import type { CloudflareEnv } from "../types";
|
|
12
13
|
import type { CloudflareRuntime } from "../runtime";
|
|
14
|
+
import { type DelegationDidResolver, type DelegationTrustOptions } from "./delegation-trust";
|
|
15
|
+
export interface DelegationServiceOptions extends DelegationTrustOptions {
|
|
16
|
+
/** DID resolution seam. Defaults to one shared did:key + did:web resolver. */
|
|
17
|
+
didResolver?: DelegationDidResolver;
|
|
18
|
+
}
|
|
13
19
|
/**
|
|
14
20
|
* Result of VC-JWT verification with extracted delegation data
|
|
15
21
|
*/
|
|
@@ -18,7 +24,7 @@ export interface VCJWTVerificationResult {
|
|
|
18
24
|
valid: boolean;
|
|
19
25
|
/** Error message if invalid */
|
|
20
26
|
error?: string;
|
|
21
|
-
/**
|
|
27
|
+
/** The credential's handle: `vc.id`, else the `jti` claim */
|
|
22
28
|
delegationId?: string;
|
|
23
29
|
/** Agent DID (from sub claim) */
|
|
24
30
|
agentDid?: string;
|
|
@@ -36,11 +42,15 @@ export interface VCJWTVerificationResult {
|
|
|
36
42
|
issuerDid?: string;
|
|
37
43
|
/** Expiration timestamp (seconds since epoch) */
|
|
38
44
|
expiresAt?: number;
|
|
45
|
+
/** Whether a credentialStatus entry was read and found clear */
|
|
46
|
+
hasCredentialStatus?: boolean;
|
|
39
47
|
}
|
|
40
48
|
export declare class DelegationService {
|
|
41
49
|
private env;
|
|
42
50
|
private runtime?;
|
|
43
|
-
|
|
51
|
+
private trust;
|
|
52
|
+
private didResolver;
|
|
53
|
+
constructor(env: CloudflareEnv, runtime?: CloudflareRuntime, options?: DelegationServiceOptions);
|
|
44
54
|
/**
|
|
45
55
|
* Get delegation token from cache or storage
|
|
46
56
|
* @param sessionId - Optional session ID for session-based lookup
|
|
@@ -52,15 +62,42 @@ export declare class DelegationService {
|
|
|
52
62
|
*
|
|
53
63
|
* VC-JWTs are distinguished from legacy delegation tokens by:
|
|
54
64
|
* - alg: 'EdDSA' (Ed25519 signing) vs legacy HS256
|
|
55
|
-
* - typ: 'vc+jwt' or 'JWT' (both are valid VC-JWT type indicators)
|
|
65
|
+
* - typ: 'vc+jwt' or 'JWT' (both are valid VC-JWT type indicators), or any
|
|
66
|
+
* typ when the payload carries a `vc` object (Checkpoint's own rule), so a
|
|
67
|
+
* nonstandard typ cannot route a credential around local verification
|
|
56
68
|
*
|
|
57
69
|
* This allows legacy HS256 tokens to fall through to API verification
|
|
58
70
|
* while VC-JWTs are verified locally using cryptographic verification.
|
|
59
71
|
*/
|
|
60
72
|
private isVCJWT;
|
|
61
73
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
74
|
+
* Whether a cached development verdict still holds under THIS deployment's
|
|
75
|
+
* trust: the token's issuer is the one the verdict was granted to, it is
|
|
76
|
+
* still pinned, and the token's `aud` is still accepted (a KV namespace may
|
|
77
|
+
* be shared by deployments with different audiences). Development only, so
|
|
78
|
+
* no audience is deferred to Checkpoint here.
|
|
79
|
+
*/
|
|
80
|
+
private servesCachedVerdict;
|
|
81
|
+
/** Whether `issuerDid` is pinned: statically, or as the Checkpoint platform signer. */
|
|
82
|
+
private isPinnedIssuer;
|
|
83
|
+
/**
|
|
84
|
+
* Verify a VC-JWT locally: audience, issuer pin, signature, content and
|
|
85
|
+
* credential status, in that order. The cheap checks come first, and the
|
|
86
|
+
* only fetch an unpinned issuer can cause is the configured Checkpoint's own
|
|
87
|
+
* DID document (cached).
|
|
88
|
+
*
|
|
89
|
+
* Audience: `aud` must name this worker (see ./delegation-trust). Only a
|
|
90
|
+
* self-issued credential (issuer = this worker's own DID) may omit it: the
|
|
91
|
+
* anchor flow mints self-issued delegations without `aud`, while the
|
|
92
|
+
* Checkpoint platform mint, the hosted-consent org mint and the native
|
|
93
|
+
* issuer always set it. One exception: with a Checkpoint API key, a
|
|
94
|
+
* platform-signed credential may carry an `aud` this worker cannot name
|
|
95
|
+
* (its project UUID, while CHECKPOINT_PROJECT_ID is often the friendly id).
|
|
96
|
+
* Checkpoint's confirm pins that `aud` to the API key's project, so the
|
|
97
|
+
* check is left to it.
|
|
98
|
+
*
|
|
99
|
+
* Issuer: only pinned issuers are resolved and verified. An untrusted or
|
|
100
|
+
* unresolvable issuer fails closed.
|
|
64
101
|
*
|
|
65
102
|
* @param vcJwt - The VC-JWT string to verify
|
|
66
103
|
* @returns Verification result with extracted delegation data
|
|
@@ -88,18 +125,23 @@ export declare class DelegationService {
|
|
|
88
125
|
*
|
|
89
126
|
* Verification strategy:
|
|
90
127
|
* 1. Early expiration check (cheap, before any crypto)
|
|
91
|
-
* 2. Check cache
|
|
92
|
-
* 3. If token is a VC-JWT, verify
|
|
93
|
-
*
|
|
128
|
+
* 2. Check cache (development only, VC-JWTs only)
|
|
129
|
+
* 3. If token is a VC-JWT, verify it locally: accepted audience, pinned
|
|
130
|
+
* issuer, signature, content and any credentialStatus entry. This refuses
|
|
131
|
+
* a forged, foreign or revoked credential with or without Checkpoint.
|
|
94
132
|
* 4. Confirm with Checkpoint that the delegation is still in force. A valid
|
|
95
133
|
* signature proves who issued the credential, not that it was never
|
|
96
|
-
* revoked; revocation lives at Checkpoint.
|
|
97
|
-
* Checkpoint API key (development) skips this
|
|
134
|
+
* revoked; revocation of status-less credentials lives at Checkpoint.
|
|
135
|
+
* Only a deployment with no Checkpoint API key (development) skips this.
|
|
136
|
+
*
|
|
137
|
+
* Legacy (non VC-JWT) tokens can only be checked by Checkpoint. Without an
|
|
138
|
+
* API key they are refused unless KYA_OS_INSECURE_DEV_TOKENS opts in.
|
|
98
139
|
*
|
|
99
140
|
* With a Checkpoint API key no verdict is cached: every verification asks
|
|
100
|
-
* Checkpoint, so a revocation refuses the very next call.
|
|
101
|
-
*
|
|
102
|
-
*
|
|
141
|
+
* Checkpoint, so a revocation refuses the very next call. Development caches
|
|
142
|
+
* only a pinned issuer's status-less VC-JWT, for
|
|
143
|
+
* DEFAULT_VERIFICATION_CACHE_TTL seconds, and a hit counts only while that
|
|
144
|
+
* issuer is still pinned.
|
|
103
145
|
*
|
|
104
146
|
* @param token - Delegation token to verify
|
|
105
147
|
* @returns True if token is valid, false otherwise
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegation.service.d.ts","sourceRoot":"","sources":["../../src/services/delegation.service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"delegation.service.d.ts","sourceRoot":"","sources":["../../src/services/delegation.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAO9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAWL,KAAK,qBAAqB,EAE1B,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAc5B,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,8EAA8E;IAC9E,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,WAAW,CAAwB;gBAGzC,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,OAAO,GAAE,wBAA6B;IAQxC;;;;OAIG;IACG,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoIpE;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,OAAO;IAyBf;;;;;;OAMG;YACW,mBAAmB;IAejC,uFAAuF;YACzE,cAAc;IAW5B;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,kBAAkB;IAuLhC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IA8BtB;;;;;;;OAOG;YACW,SAAS;IAUvB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+FvD;;;;;OAKG;YACW,qBAAqB;IAoEnC;;;;;OAKG;IACG,eAAe,CACnB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAsDjB"}
|
|
@@ -5,19 +5,34 @@
|
|
|
5
5
|
* for MCP-I Cloudflare servers.
|
|
6
6
|
*
|
|
7
7
|
* Supports both:
|
|
8
|
-
* - Local VC-JWT verification (offline, cryptographic)
|
|
8
|
+
* - Local VC-JWT verification (offline, cryptographic), restricted to pinned
|
|
9
|
+
* issuers and accepted audiences (see ./delegation-trust)
|
|
9
10
|
* - Checkpoint API verification (online, centralized)
|
|
10
11
|
*/
|
|
11
12
|
import { DEFAULT_CHECKPOINT_URL, DEFAULT_VERIFICATION_CACHE_TTL, DEFAULT_SESSION_CACHE_TTL, } from "../constants";
|
|
12
13
|
import { STORAGE_KEYS } from "../constants/storage-keys";
|
|
13
|
-
import { parseVCJWT
|
|
14
|
-
import {
|
|
14
|
+
import { parseVCJWT } from "@kya-os/mcp";
|
|
15
|
+
import { assertionKeys, audienceVerdict, checkCredentialStatusEntry, credentialHandle, credentialStatusEntries, insecureDevTokensEnabled, isCheckpointPlatformIssuer, resolveDelegationTrust, sharedDelegationDidResolver, verifiesWithAnyKey, } from "./delegation-trust";
|
|
16
|
+
/**
|
|
17
|
+
* Prefix of a cached development verdict. The rest is the pinned issuer the
|
|
18
|
+
* verdict was granted to, re-checked on every hit. Earlier releases cached "1"
|
|
19
|
+
* for any self-signed did:key token; those entries never match.
|
|
20
|
+
*/
|
|
21
|
+
const PINNED_VERDICT_PREFIX = "pinned:";
|
|
22
|
+
/** A token-supplied value, quoted and truncated so it cannot forge log lines. */
|
|
23
|
+
function logSafe(value) {
|
|
24
|
+
return JSON.stringify(value.slice(0, 200));
|
|
25
|
+
}
|
|
15
26
|
export class DelegationService {
|
|
16
27
|
env;
|
|
17
28
|
runtime;
|
|
18
|
-
|
|
29
|
+
trust;
|
|
30
|
+
didResolver;
|
|
31
|
+
constructor(env, runtime, options = {}) {
|
|
19
32
|
this.env = env;
|
|
20
33
|
this.runtime = runtime;
|
|
34
|
+
this.trust = resolveDelegationTrust(env, options);
|
|
35
|
+
this.didResolver = options.didResolver ?? sharedDelegationDidResolver();
|
|
21
36
|
}
|
|
22
37
|
/**
|
|
23
38
|
* Get delegation token from cache or storage
|
|
@@ -118,7 +133,9 @@ export class DelegationService {
|
|
|
118
133
|
*
|
|
119
134
|
* VC-JWTs are distinguished from legacy delegation tokens by:
|
|
120
135
|
* - alg: 'EdDSA' (Ed25519 signing) vs legacy HS256
|
|
121
|
-
* - typ: 'vc+jwt' or 'JWT' (both are valid VC-JWT type indicators)
|
|
136
|
+
* - typ: 'vc+jwt' or 'JWT' (both are valid VC-JWT type indicators), or any
|
|
137
|
+
* typ when the payload carries a `vc` object (Checkpoint's own rule), so a
|
|
138
|
+
* nonstandard typ cannot route a credential around local verification
|
|
122
139
|
*
|
|
123
140
|
* This allows legacy HS256 tokens to fall through to API verification
|
|
124
141
|
* while VC-JWTs are verified locally using cryptographic verification.
|
|
@@ -138,60 +155,97 @@ export class DelegationService {
|
|
|
138
155
|
// Accept both 'JWT' and 'vc+jwt' as valid type indicators
|
|
139
156
|
// W3C VC-JWT spec uses 'vc+jwt', but some implementations use 'JWT'
|
|
140
157
|
const validTypes = ["JWT", "vc+jwt"];
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
158
|
+
const vc = parsed.payload.vc;
|
|
159
|
+
return (validTypes.includes(parsed.header.typ) ||
|
|
160
|
+
(typeof vc === "object" && vc !== null));
|
|
144
161
|
}
|
|
145
162
|
catch {
|
|
146
163
|
return false;
|
|
147
164
|
}
|
|
148
165
|
}
|
|
149
166
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
167
|
+
* Whether a cached development verdict still holds under THIS deployment's
|
|
168
|
+
* trust: the token's issuer is the one the verdict was granted to, it is
|
|
169
|
+
* still pinned, and the token's `aud` is still accepted (a KV namespace may
|
|
170
|
+
* be shared by deployments with different audiences). Development only, so
|
|
171
|
+
* no audience is deferred to Checkpoint here.
|
|
172
|
+
*/
|
|
173
|
+
async servesCachedVerdict(token, grantedIssuer) {
|
|
174
|
+
const payload = parseVCJWT(token)?.payload;
|
|
175
|
+
if (!payload || payload.iss !== grantedIssuer)
|
|
176
|
+
return false;
|
|
177
|
+
const audience = audienceVerdict(payload.aud, this.trust);
|
|
178
|
+
if (audience !== "accepted" &&
|
|
179
|
+
!(audience === "missing" && grantedIssuer === this.trust.ownDid))
|
|
180
|
+
return false;
|
|
181
|
+
return this.isPinnedIssuer(grantedIssuer);
|
|
182
|
+
}
|
|
183
|
+
/** Whether `issuerDid` is pinned: statically, or as the Checkpoint platform signer. */
|
|
184
|
+
async isPinnedIssuer(issuerDid) {
|
|
185
|
+
return (this.trust.issuers.has(issuerDid) ||
|
|
186
|
+
(await isCheckpointPlatformIssuer(issuerDid, this.trust, this.didResolver)));
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Verify a VC-JWT locally: audience, issuer pin, signature, content and
|
|
190
|
+
* credential status, in that order. The cheap checks come first, and the
|
|
191
|
+
* only fetch an unpinned issuer can cause is the configured Checkpoint's own
|
|
192
|
+
* DID document (cached).
|
|
193
|
+
*
|
|
194
|
+
* Audience: `aud` must name this worker (see ./delegation-trust). Only a
|
|
195
|
+
* self-issued credential (issuer = this worker's own DID) may omit it: the
|
|
196
|
+
* anchor flow mints self-issued delegations without `aud`, while the
|
|
197
|
+
* Checkpoint platform mint, the hosted-consent org mint and the native
|
|
198
|
+
* issuer always set it. One exception: with a Checkpoint API key, a
|
|
199
|
+
* platform-signed credential may carry an `aud` this worker cannot name
|
|
200
|
+
* (its project UUID, while CHECKPOINT_PROJECT_ID is often the friendly id).
|
|
201
|
+
* Checkpoint's confirm pins that `aud` to the API key's project, so the
|
|
202
|
+
* check is left to it.
|
|
203
|
+
*
|
|
204
|
+
* Issuer: only pinned issuers are resolved and verified. An untrusted or
|
|
205
|
+
* unresolvable issuer fails closed.
|
|
152
206
|
*
|
|
153
207
|
* @param vcJwt - The VC-JWT string to verify
|
|
154
208
|
* @returns Verification result with extracted delegation data
|
|
155
209
|
*/
|
|
156
210
|
async verifyVCJWTLocally(vcJwt) {
|
|
211
|
+
const reject = (error) => {
|
|
212
|
+
console.error("[Delegation] VC-JWT rejected:", error);
|
|
213
|
+
return { valid: false, error };
|
|
214
|
+
};
|
|
157
215
|
try {
|
|
158
216
|
// 1. Parse the JWT
|
|
159
217
|
const parsed = parseVCJWT(vcJwt);
|
|
160
|
-
if (!parsed)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
// 2. Extract issuer DID from payload
|
|
218
|
+
if (!parsed)
|
|
219
|
+
return reject("VC-JWT parsing failed");
|
|
220
|
+
// 2. Issuer DID
|
|
165
221
|
const issuerDid = parsed.payload.iss;
|
|
166
|
-
if (!issuerDid || typeof issuerDid !== "string")
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
222
|
+
if (!issuerDid || typeof issuerDid !== "string")
|
|
223
|
+
return reject("Missing issuer (iss)");
|
|
224
|
+
// 3. Audience, before anything touches the network
|
|
225
|
+
const audience = audienceVerdict(parsed.payload.aud, this.trust);
|
|
226
|
+
if (audience === "missing" && issuerDid !== this.trust.ownDid)
|
|
227
|
+
return reject("Missing audience (aud)");
|
|
228
|
+
if (audience === "unmatched" && !this.env.CHECKPOINT_API_KEY)
|
|
229
|
+
return reject("Audience not accepted");
|
|
230
|
+
// 4. Issuer pin, before the issuer's DID document is resolved
|
|
231
|
+
if (this.trust.issuers.has(issuerDid)) {
|
|
232
|
+
if (audience === "unmatched")
|
|
233
|
+
return reject("Audience not accepted");
|
|
176
234
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
if (!jwk?.x) {
|
|
180
|
-
console.error("[Delegation] DID Document missing public key x value");
|
|
181
|
-
return { valid: false, error: "DID Document missing public key" };
|
|
182
|
-
}
|
|
183
|
-
// 5. Convert to format expected by WebCryptoProvider
|
|
184
|
-
const publicKeyBytes = base64urlDecodeToBytes(jwk.x);
|
|
185
|
-
const publicKeyBase64 = bytesToBase64(publicKeyBytes);
|
|
186
|
-
// 6. Verify JWT signature
|
|
187
|
-
const signingInputBytes = new TextEncoder().encode(parsed.signingInput);
|
|
188
|
-
const signatureBytes = base64urlDecodeToBytes(parsed.signature);
|
|
189
|
-
const crypto = new WebCryptoProvider();
|
|
190
|
-
const isSignatureValid = await crypto.verify(signingInputBytes, signatureBytes, publicKeyBase64);
|
|
191
|
-
if (!isSignatureValid) {
|
|
192
|
-
console.error("[Delegation] VC-JWT signature verification failed");
|
|
193
|
-
return { valid: false, error: "Signature verification failed" };
|
|
235
|
+
else if (!(await isCheckpointPlatformIssuer(issuerDid, this.trust, this.didResolver))) {
|
|
236
|
+
return reject(`Untrusted issuer: ${logSafe(issuerDid)}`);
|
|
194
237
|
}
|
|
238
|
+
// 5. Issuer key, selected by the protected `kid` when present
|
|
239
|
+
const kid = parsed.header.kid;
|
|
240
|
+
if (kid !== undefined && typeof kid !== "string")
|
|
241
|
+
return reject("Malformed key id (kid)");
|
|
242
|
+
const didDoc = await this.didResolver.resolve(issuerDid);
|
|
243
|
+
const keys = didDoc ? assertionKeys(didDoc, kid) : [];
|
|
244
|
+
if (!keys.length)
|
|
245
|
+
return reject(`Cannot resolve issuer key: ${logSafe(issuerDid)}`);
|
|
246
|
+
// 6. Signature
|
|
247
|
+
if (!(await verifiesWithAnyKey(parsed.signingInput, parsed.signature, keys)))
|
|
248
|
+
return reject("Signature verification failed");
|
|
195
249
|
// 7. Run basic VC content validation (type, expiration, required fields)
|
|
196
250
|
const vc = parsed.payload.vc;
|
|
197
251
|
if (!vc) {
|
|
@@ -232,21 +286,24 @@ export class DelegationService {
|
|
|
232
286
|
const credentialSubject = vc.credentialSubject;
|
|
233
287
|
if (!credentialSubject.delegation) {
|
|
234
288
|
console.error("[Delegation] VC-JWT missing delegation in credentialSubject");
|
|
235
|
-
return {
|
|
289
|
+
return {
|
|
290
|
+
valid: false,
|
|
291
|
+
error: "Missing delegation in credentialSubject",
|
|
292
|
+
};
|
|
236
293
|
}
|
|
237
294
|
// 8. Extract delegation data from VC payload
|
|
238
295
|
const delegation = credentialSubject.delegation;
|
|
239
296
|
// Extract standard JWT claims
|
|
240
|
-
const delegationId = parsed.payload
|
|
297
|
+
const delegationId = credentialHandle(parsed.payload);
|
|
241
298
|
const agentDid = parsed.payload.sub || delegation.subjectDid;
|
|
242
299
|
// Per RFC 7519, aud can be string or string[] - normalize to string (first element if array)
|
|
243
300
|
// CLAIM-SLOT CAVEAT: historically this codebase minted project-scoped
|
|
244
301
|
// delegations with aud = project id, which is what "projectId" assumes.
|
|
245
302
|
// Cross-resource delegations (delegation-http anchor registration) mint
|
|
246
303
|
// aud = the resource ORG's DID instead — for those credentials this value
|
|
247
|
-
// is an org DID, not a project id.
|
|
248
|
-
//
|
|
249
|
-
//
|
|
304
|
+
// is an org DID, not a project id. The audience gate above compares the
|
|
305
|
+
// whole claim against every accepted audience; this field is
|
|
306
|
+
// attribution only.
|
|
250
307
|
const rawAud = parsed.payload.aud;
|
|
251
308
|
const projectId = Array.isArray(rawAud) ? rawAud[0] : rawAud;
|
|
252
309
|
// Extract delegation-specific fields (Phase 7: userDid, userIdentifier, sessionId, scopes)
|
|
@@ -256,6 +313,18 @@ export class DelegationService {
|
|
|
256
313
|
const scopes = Array.isArray(delegation.scopes)
|
|
257
314
|
? delegation.scopes.filter((s) => typeof s === "string")
|
|
258
315
|
: undefined;
|
|
316
|
+
// 9. Credential status, fail closed. Status-less credentials rely on the
|
|
317
|
+
// Checkpoint confirm for revocation.
|
|
318
|
+
const statusEntries = credentialStatusEntries(parsed.payload);
|
|
319
|
+
if (!statusEntries)
|
|
320
|
+
return reject("Malformed credentialStatus");
|
|
321
|
+
for (const entry of statusEntries) {
|
|
322
|
+
const verdict = await checkCredentialStatusEntry(entry);
|
|
323
|
+
if (verdict === "revoked")
|
|
324
|
+
return reject("Credential revoked");
|
|
325
|
+
if (verdict !== "clear")
|
|
326
|
+
return reject("Credential status unresolvable");
|
|
327
|
+
}
|
|
259
328
|
console.error("[Delegation] ✅ VC-JWT verified locally (cryptographic)", {
|
|
260
329
|
delegationId,
|
|
261
330
|
agentDid: agentDid ? agentDid.slice(0, 20) + "..." : undefined,
|
|
@@ -274,6 +343,7 @@ export class DelegationService {
|
|
|
274
343
|
projectId,
|
|
275
344
|
issuerDid,
|
|
276
345
|
expiresAt: expClaim,
|
|
346
|
+
hasCredentialStatus: statusEntries.length > 0,
|
|
277
347
|
};
|
|
278
348
|
}
|
|
279
349
|
catch (error) {
|
|
@@ -336,18 +406,23 @@ export class DelegationService {
|
|
|
336
406
|
*
|
|
337
407
|
* Verification strategy:
|
|
338
408
|
* 1. Early expiration check (cheap, before any crypto)
|
|
339
|
-
* 2. Check cache
|
|
340
|
-
* 3. If token is a VC-JWT, verify
|
|
341
|
-
*
|
|
409
|
+
* 2. Check cache (development only, VC-JWTs only)
|
|
410
|
+
* 3. If token is a VC-JWT, verify it locally: accepted audience, pinned
|
|
411
|
+
* issuer, signature, content and any credentialStatus entry. This refuses
|
|
412
|
+
* a forged, foreign or revoked credential with or without Checkpoint.
|
|
342
413
|
* 4. Confirm with Checkpoint that the delegation is still in force. A valid
|
|
343
414
|
* signature proves who issued the credential, not that it was never
|
|
344
|
-
* revoked; revocation lives at Checkpoint.
|
|
345
|
-
* Checkpoint API key (development) skips this
|
|
415
|
+
* revoked; revocation of status-less credentials lives at Checkpoint.
|
|
416
|
+
* Only a deployment with no Checkpoint API key (development) skips this.
|
|
417
|
+
*
|
|
418
|
+
* Legacy (non VC-JWT) tokens can only be checked by Checkpoint. Without an
|
|
419
|
+
* API key they are refused unless KYA_OS_INSECURE_DEV_TOKENS opts in.
|
|
346
420
|
*
|
|
347
421
|
* With a Checkpoint API key no verdict is cached: every verification asks
|
|
348
|
-
* Checkpoint, so a revocation refuses the very next call.
|
|
349
|
-
*
|
|
350
|
-
*
|
|
422
|
+
* Checkpoint, so a revocation refuses the very next call. Development caches
|
|
423
|
+
* only a pinned issuer's status-less VC-JWT, for
|
|
424
|
+
* DEFAULT_VERIFICATION_CACHE_TTL seconds, and a hit counts only while that
|
|
425
|
+
* issuer is still pinned.
|
|
351
426
|
*
|
|
352
427
|
* @param token - Delegation token to verify
|
|
353
428
|
* @returns True if token is valid, false otherwise
|
|
@@ -364,44 +439,58 @@ export class DelegationService {
|
|
|
364
439
|
const verificationCache = this.env.CHECKPOINT_API_KEY
|
|
365
440
|
? undefined
|
|
366
441
|
: this.env.TOOL_PROTECTION_KV;
|
|
367
|
-
|
|
442
|
+
const isVCJWT = this.isVCJWT(token);
|
|
443
|
+
if (verificationCache && isVCJWT) {
|
|
368
444
|
const cacheKey = STORAGE_KEYS.verificationCache(await this.hashToken(token));
|
|
369
445
|
const cached = await verificationCache.get(cacheKey);
|
|
370
|
-
if (cached === "
|
|
446
|
+
if (typeof cached === "string" &&
|
|
447
|
+
cached.startsWith(PINNED_VERDICT_PREFIX) &&
|
|
448
|
+
(await this.servesCachedVerdict(token, cached.slice(PINNED_VERDICT_PREFIX.length)))) {
|
|
371
449
|
console.error("[Delegation] Token verification cached as valid");
|
|
372
450
|
return true;
|
|
373
451
|
}
|
|
374
452
|
}
|
|
375
453
|
let agentDid;
|
|
376
454
|
let scopes = [];
|
|
377
|
-
|
|
455
|
+
let pinnedIssuer;
|
|
378
456
|
if (isVCJWT) {
|
|
379
457
|
console.error("[Delegation] Detected VC-JWT format, attempting local verification");
|
|
380
458
|
const vcResult = await this.verifyVCJWTLocally(token);
|
|
381
459
|
if (!vcResult.valid) {
|
|
382
|
-
// If the cryptographic signature is invalid, the token is invalid
|
|
383
460
|
console.error("[Delegation] Local VC-JWT verification failed:", vcResult.error);
|
|
384
461
|
return false;
|
|
385
462
|
}
|
|
386
463
|
agentDid = vcResult.agentDid ?? "";
|
|
387
464
|
scopes = vcResult.scopes ?? [];
|
|
465
|
+
// A status-bearing credential is re-read every time, so a revocation
|
|
466
|
+
// refuses the very next call; only status-less verdicts are cacheable.
|
|
467
|
+
pinnedIssuer = vcResult.hasCredentialStatus
|
|
468
|
+
? undefined
|
|
469
|
+
: vcResult.issuerDid;
|
|
470
|
+
}
|
|
471
|
+
else if (!this.env.CHECKPOINT_API_KEY) {
|
|
472
|
+
// Nothing local can check a legacy token: it is a bearer string.
|
|
473
|
+
if (!insecureDevTokensEnabled(this.env)) {
|
|
474
|
+
console.error("[Delegation] Legacy (non VC-JWT) token refused: no CHECKPOINT_API_KEY to verify it. " +
|
|
475
|
+
"Set KYA_OS_INSECURE_DEV_TOKENS=1 for local development only.");
|
|
476
|
+
return false;
|
|
477
|
+
}
|
|
478
|
+
console.warn("[Delegation] ⚠️ INSECURE: KYA_OS_INSECURE_DEV_TOKENS is set, so a legacy delegation token " +
|
|
479
|
+
"is accepted WITHOUT ANY VERIFICATION. Anyone can forge one. Never enable this outside local development.");
|
|
480
|
+
return true; // never cached
|
|
388
481
|
}
|
|
389
482
|
else {
|
|
390
483
|
agentDid = this.runtime ? (await this.runtime.getIdentity()).did : "";
|
|
391
484
|
}
|
|
392
485
|
if (!this.env.CHECKPOINT_API_KEY) {
|
|
393
|
-
console.warn("[Delegation] No Checkpoint API key configured: accepting without Checkpoint, which cannot see revocation");
|
|
394
|
-
// Development: a legacy token is allowed unchecked and never cached; a
|
|
395
|
-
// VC-JWT's verified signature is cached as before.
|
|
396
|
-
if (!isVCJWT)
|
|
397
|
-
return true;
|
|
486
|
+
console.warn("[Delegation] No Checkpoint API key configured: accepting a pinned, locally verified VC-JWT without Checkpoint, which cannot see revocation of status-less credentials");
|
|
398
487
|
}
|
|
399
488
|
else if (!(await this.confirmWithCheckpoint(token, agentDid, scopes))) {
|
|
400
489
|
return false;
|
|
401
490
|
}
|
|
402
|
-
if (verificationCache) {
|
|
491
|
+
if (verificationCache && pinnedIssuer) {
|
|
403
492
|
const cacheKey = STORAGE_KEYS.verificationCache(await this.hashToken(token));
|
|
404
|
-
await verificationCache.put(cacheKey,
|
|
493
|
+
await verificationCache.put(cacheKey, PINNED_VERDICT_PREFIX + pinnedIssuer, {
|
|
405
494
|
expirationTtl: DEFAULT_VERIFICATION_CACHE_TTL,
|
|
406
495
|
});
|
|
407
496
|
}
|
|
@@ -419,10 +508,13 @@ export class DelegationService {
|
|
|
419
508
|
try {
|
|
420
509
|
// Use AccessControlApiService if available from runtime
|
|
421
510
|
if (this.runtime && "accessControlService" in this.runtime) {
|
|
422
|
-
const accessControlService = this
|
|
511
|
+
const accessControlService = this
|
|
512
|
+
.runtime.accessControlService;
|
|
423
513
|
if (accessControlService) {
|
|
424
514
|
const response = await accessControlService.verifyDelegation(request);
|
|
425
|
-
|
|
515
|
+
// The runtime client validates its response, but this seam accepts
|
|
516
|
+
// any client: only an explicit `true` admits, as on the fetch path.
|
|
517
|
+
if (response.data.valid === true)
|
|
426
518
|
return true;
|
|
427
519
|
console.error("[Delegation] Token verification failed:", response.data.reason || "Invalid token");
|
|
428
520
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegation.service.js","sourceRoot":"","sources":["../../src/services/delegation.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"delegation.service.js","sourceRoot":"","sources":["../../src/services/delegation.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* multipart-parser.ts
|
|
3
|
+
*
|
|
4
|
+
* Hand-rolled multipart/form-data field extractor.
|
|
5
|
+
*
|
|
6
|
+
* Cloudflare Workers' `Request.formData()` is the primary path for parsing
|
|
7
|
+
* form submissions, but it can fail or misbehave in two ways that we observe
|
|
8
|
+
* in the wild on the consent-approval endpoint:
|
|
9
|
+
*
|
|
10
|
+
* 1. The Content-Type header is `multipart/form-data` but is missing the
|
|
11
|
+
* `boundary=` parameter, so `formData()` throws.
|
|
12
|
+
* 2. `formData()` "succeeds" but returns the entire raw multipart body as a
|
|
13
|
+
* single malformed `[key, value]` entry (the boundary/Content-Disposition
|
|
14
|
+
* preamble ends up in the key).
|
|
15
|
+
*
|
|
16
|
+
* In both cases we fall back to parsing the raw body text ourselves. This
|
|
17
|
+
* module isolates that boundary-detection logic behind a single, testable
|
|
18
|
+
* interface so it is not duplicated across every fallback branch in
|
|
19
|
+
* ConsentService.
|
|
20
|
+
*
|
|
21
|
+
* This is intentionally a *permissive* parser for trusted same-origin form
|
|
22
|
+
* posts, not a general-purpose RFC 7578 implementation. Its behavior is
|
|
23
|
+
* pinned by multipart-parser.test.ts and must remain byte-for-byte compatible
|
|
24
|
+
* with the original inline logic.
|
|
25
|
+
*/
|
|
26
|
+
/** A single extracted multipart field (raw, uncoerced). */
|
|
27
|
+
export interface MultipartField {
|
|
28
|
+
/** The `name="..."` attribute from the Content-Disposition header. */
|
|
29
|
+
name: string;
|
|
30
|
+
/** The field body, with trailing whitespace/newlines trimmed. */
|
|
31
|
+
value: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Extract all form fields from a raw multipart body string.
|
|
35
|
+
*
|
|
36
|
+
* @param rawBody - The raw multipart/form-data body text.
|
|
37
|
+
* @returns The extracted fields in document order. Empty if nothing matched.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseMultipartFields(rawBody: string): MultipartField[];
|
|
40
|
+
/**
|
|
41
|
+
* Reconstruct a parseable multipart body from a malformed single-entry
|
|
42
|
+
* `[key, value]` pair produced by `formData()` when it fails to split the
|
|
43
|
+
* body correctly.
|
|
44
|
+
*
|
|
45
|
+
* When the split lands between the `...name` token and the `"field"...`
|
|
46
|
+
* value, the `=` separator is lost; we re-insert it so the field regex can
|
|
47
|
+
* match. Otherwise the two halves are concatenated as-is.
|
|
48
|
+
*
|
|
49
|
+
* @param keyPart - The malformed entry key.
|
|
50
|
+
* @param valuePart - The malformed entry value.
|
|
51
|
+
* @returns A single string suitable for {@link parseMultipartFields}.
|
|
52
|
+
*/
|
|
53
|
+
export declare function reconstructMalformedMultipart(keyPart: string, valuePart: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Detect whether a `formData()` result is the "single malformed entry" case
|
|
56
|
+
* where the entire multipart body leaked into one `[key, value]` pair.
|
|
57
|
+
*
|
|
58
|
+
* @param entries - The materialized entries from `formData().entries()`.
|
|
59
|
+
*/
|
|
60
|
+
export declare function isMalformedSingleEntry(entries: Array<[string, unknown]>): entries is [[string, string]];
|
|
61
|
+
/**
|
|
62
|
+
* Extract a clean field name from a (possibly malformed) FormData entry key.
|
|
63
|
+
*
|
|
64
|
+
* Returns the original key for normal entries, the parsed `name="..."` value
|
|
65
|
+
* when the key contains a Content-Disposition preamble, or `null` for keys
|
|
66
|
+
* that are pure boundary noise / unparseable and should be skipped: a
|
|
67
|
+
* preamble with no name, a boundary line, or undici's `formdata-undici`
|
|
68
|
+
* boundary.
|
|
69
|
+
*
|
|
70
|
+
* @param key - A raw FormData entry key.
|
|
71
|
+
*/
|
|
72
|
+
export declare function extractFieldNameFromKey(key: string): string | null;
|
|
73
|
+
//# sourceMappingURL=multipart-parser.d.ts.map
|