@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.
Files changed (129) hide show
  1. package/README.md +37 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +81 -51
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts.map +1 -1
  6. package/dist/app.js +9 -12
  7. package/dist/app.js.map +1 -1
  8. package/dist/audit/deployment-binding.d.ts +12 -12
  9. package/dist/config.d.ts +28 -1
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +16 -1
  12. package/dist/config.js.map +1 -1
  13. package/dist/constants/storage-keys.d.ts +9 -0
  14. package/dist/constants/storage-keys.d.ts.map +1 -1
  15. package/dist/constants/storage-keys.js +9 -0
  16. package/dist/constants/storage-keys.js.map +1 -1
  17. package/dist/constants.d.ts +6 -0
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/constants.js +6 -0
  20. package/dist/constants.js.map +1 -1
  21. package/dist/delegation-http/bearer-retry.d.ts +20 -4
  22. package/dist/delegation-http/bearer-retry.d.ts.map +1 -1
  23. package/dist/delegation-http/bearer-retry.js +56 -10
  24. package/dist/delegation-http/bearer-retry.js.map +1 -1
  25. package/dist/delegation-http/consent-anchor-bridge.d.ts.map +1 -1
  26. package/dist/delegation-http/consent-anchor-bridge.js +72 -13
  27. package/dist/delegation-http/consent-anchor-bridge.js.map +1 -1
  28. package/dist/delegation-http/native-oauth-state.d.ts +16 -0
  29. package/dist/delegation-http/native-oauth-state.d.ts.map +1 -1
  30. package/dist/delegation-http/native-oauth-state.js +24 -9
  31. package/dist/delegation-http/native-oauth-state.js.map +1 -1
  32. package/dist/delegation-http/native-oauth.d.ts.map +1 -1
  33. package/dist/delegation-http/native-oauth.js +26 -7
  34. package/dist/delegation-http/native-oauth.js.map +1 -1
  35. package/dist/delegation-http/oauth-recovery.d.ts +3 -0
  36. package/dist/delegation-http/oauth-recovery.d.ts.map +1 -0
  37. package/dist/delegation-http/oauth-recovery.js +39 -0
  38. package/dist/delegation-http/oauth-recovery.js.map +1 -0
  39. package/dist/delegation-http/remote-issuer.d.ts +15 -0
  40. package/dist/delegation-http/remote-issuer.d.ts.map +1 -1
  41. package/dist/delegation-http/remote-issuer.js +27 -8
  42. package/dist/delegation-http/remote-issuer.js.map +1 -1
  43. package/dist/helpers/env-mapper.d.ts.map +1 -1
  44. package/dist/helpers/env-mapper.js +28 -6
  45. package/dist/helpers/env-mapper.js.map +1 -1
  46. package/dist/index.d.ts +6 -3
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +9 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/proof-generator.d.ts +8 -7
  51. package/dist/proof-generator.d.ts.map +1 -1
  52. package/dist/proof-generator.js +32 -34
  53. package/dist/proof-generator.js.map +1 -1
  54. package/dist/runtime/oauth-handler.d.ts.map +1 -1
  55. package/dist/runtime/oauth-handler.js +43 -31
  56. package/dist/runtime/oauth-handler.js.map +1 -1
  57. package/dist/runtime/tool-activity.d.ts +31 -4
  58. package/dist/runtime/tool-activity.d.ts.map +1 -1
  59. package/dist/runtime/tool-activity.js +48 -0
  60. package/dist/runtime/tool-activity.js.map +1 -1
  61. package/dist/runtime.d.ts +31 -0
  62. package/dist/runtime.d.ts.map +1 -1
  63. package/dist/runtime.js +65 -0
  64. package/dist/runtime.js.map +1 -1
  65. package/dist/security/admission-refusal.d.ts +32 -0
  66. package/dist/security/admission-refusal.d.ts.map +1 -0
  67. package/dist/security/admission-refusal.js +97 -0
  68. package/dist/security/admission-refusal.js.map +1 -0
  69. package/dist/security/card-proof-support.d.ts +66 -0
  70. package/dist/security/card-proof-support.d.ts.map +1 -0
  71. package/dist/security/card-proof-support.js +121 -0
  72. package/dist/security/card-proof-support.js.map +1 -0
  73. package/dist/security/mcp-admission.d.ts +28 -2
  74. package/dist/security/mcp-admission.d.ts.map +1 -1
  75. package/dist/security/mcp-admission.js +129 -29
  76. package/dist/security/mcp-admission.js.map +1 -1
  77. package/dist/security/mcp-holder-admission.d.ts +12 -1
  78. package/dist/security/mcp-holder-admission.d.ts.map +1 -1
  79. package/dist/security/mcp-holder-admission.js +46 -8
  80. package/dist/security/mcp-holder-admission.js.map +1 -1
  81. package/dist/security/presented-delegation.d.ts +10 -0
  82. package/dist/security/presented-delegation.d.ts.map +1 -1
  83. package/dist/security/presented-delegation.js +23 -3
  84. package/dist/security/presented-delegation.js.map +1 -1
  85. package/dist/services/admin.service.d.ts.map +1 -1
  86. package/dist/services/admin.service.js +24 -9
  87. package/dist/services/admin.service.js.map +1 -1
  88. package/dist/services/approval-route.d.ts +48 -0
  89. package/dist/services/approval-route.d.ts.map +1 -0
  90. package/dist/services/approval-route.js +87 -0
  91. package/dist/services/approval-route.js.map +1 -0
  92. package/dist/services/consent-config.service.d.ts.map +1 -1
  93. package/dist/services/consent-config.service.js +20 -5
  94. package/dist/services/consent-config.service.js.map +1 -1
  95. package/dist/services/consent.service.d.ts +113 -5
  96. package/dist/services/consent.service.d.ts.map +1 -1
  97. package/dist/services/consent.service.js +746 -904
  98. package/dist/services/consent.service.js.map +1 -1
  99. package/dist/services/credential-auth.handler.d.ts +2 -0
  100. package/dist/services/credential-auth.handler.d.ts.map +1 -1
  101. package/dist/services/credential-auth.handler.js +19 -3
  102. package/dist/services/credential-auth.handler.js.map +1 -1
  103. package/dist/services/delegation-trust.d.ts +97 -0
  104. package/dist/services/delegation-trust.d.ts.map +1 -0
  105. package/dist/services/delegation-trust.js +378 -0
  106. package/dist/services/delegation-trust.js.map +1 -0
  107. package/dist/services/delegation.service.d.ts +56 -14
  108. package/dist/services/delegation.service.d.ts.map +1 -1
  109. package/dist/services/delegation.service.js +160 -68
  110. package/dist/services/delegation.service.js.map +1 -1
  111. package/dist/services/multipart-parser.d.ts +73 -0
  112. package/dist/services/multipart-parser.d.ts.map +1 -0
  113. package/dist/services/multipart-parser.js +116 -0
  114. package/dist/services/multipart-parser.js.map +1 -0
  115. package/dist/services/proof.service.d.ts +38 -0
  116. package/dist/services/proof.service.d.ts.map +1 -1
  117. package/dist/services/proof.service.js +41 -2
  118. package/dist/services/proof.service.js.map +1 -1
  119. package/dist/types.d.ts +17 -0
  120. package/dist/types.d.ts.map +1 -1
  121. package/dist/utils/checkpoint-project-id.d.ts +31 -0
  122. package/dist/utils/checkpoint-project-id.d.ts.map +1 -0
  123. package/dist/utils/checkpoint-project-id.js +35 -0
  124. package/dist/utils/checkpoint-project-id.js.map +1 -0
  125. package/dist/utils/oauth-profile.d.ts +7 -0
  126. package/dist/utils/oauth-profile.d.ts.map +1 -0
  127. package/dist/utils/oauth-profile.js +24 -0
  128. package/dist/utils/oauth-profile.js.map +1 -0
  129. 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
- /** Delegation ID (from jti claim) */
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
- constructor(env: CloudflareEnv, runtime?: CloudflareRuntime);
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
- * Verify a VC-JWT locally using cryptographic verification
63
- * This enables offline/local verification without calling Checkpoint API
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 its signature locally, which refuses a
93
- * forged or malformed credential without a network call
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. Only a deployment with no
97
- * Checkpoint API key (development) skips this and cannot see revocation.
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. Only the
101
- * development path, which cannot see revocation anyway, caches a VC-JWT's
102
- * verified signature for DEFAULT_VERIFICATION_CACHE_TTL seconds.
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;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAO9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AASpD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,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;CACpB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAoB;gBAExB,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAK3D;;;;OAIG;IACG,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoIpE;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO;IAuBf;;;;;;OAMG;YACW,kBAAkB;IAgKhC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IA8BtB;;;;;;;OAOG;YACW,SAAS;IAUvB;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6DvD;;;;;OAKG;YACW,qBAAqB;IAsDnC;;;;;OAKG;IACG,eAAe,CACnB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAoDjB"}
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, createDidKeyResolver, base64urlDecodeToBytes, bytesToBase64, } from "@kya-os/mcp";
14
- import { WebCryptoProvider } from "../providers/crypto";
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
- constructor(env, runtime) {
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
- if (!validTypes.includes(parsed.header.typ))
142
- return false;
143
- return true;
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
- * Verify a VC-JWT locally using cryptographic verification
151
- * This enables offline/local verification without calling Checkpoint API
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
- console.error("[Delegation] VC-JWT parsing failed");
162
- return { valid: false, error: "VC-JWT parsing failed" };
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
- console.error("[Delegation] VC-JWT missing issuer (iss)");
168
- return { valid: false, error: "Missing issuer (iss)" };
169
- }
170
- // 3. Resolve issuer DID to get public key
171
- const resolver = createDidKeyResolver();
172
- const didDoc = await resolver.resolve(issuerDid);
173
- if (!didDoc?.verificationMethod?.[0]?.publicKeyJwk) {
174
- console.error("[Delegation] Cannot resolve issuer DID or missing public key:", issuerDid);
175
- return { valid: false, error: `Cannot resolve issuer DID: ${issuerDid}` };
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
- // 4. Extract public key from DID Document
178
- const jwk = didDoc.verificationMethod[0].publicKeyJwk;
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 { valid: false, error: "Missing delegation in credentialSubject" };
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.jti || delegation.id;
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. It is logged/attributed only, never
248
- // compared, so both meanings are safe here; do not start matching it
249
- // against project ids without discriminating the credential's origin.
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 its signature locally, which refuses a
341
- * forged or malformed credential without a network call
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. Only a deployment with no
345
- * Checkpoint API key (development) skips this and cannot see revocation.
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. Only the
349
- * development path, which cannot see revocation anyway, caches a VC-JWT's
350
- * verified signature for DEFAULT_VERIFICATION_CACHE_TTL seconds.
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
- if (verificationCache) {
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 === "1") {
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
- const isVCJWT = this.isVCJWT(token);
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, "1", {
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.runtime.accessControlService;
511
+ const accessControlService = this
512
+ .runtime.accessControlService;
423
513
  if (accessControlService) {
424
514
  const response = await accessControlService.verifyDelegation(request);
425
- if (response.data.valid)
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