@caracalai/identity 0.1.2 → 0.1.4-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # Caracal Identity for TypeScript
2
+
3
+ TypeScript JWT verification, JWKS cache, scope checks, and claim contracts for Caracal resource servers.
4
+
5
+ This package requires authoritative token claims including `exp`, `iat`, `jti`, `sub`, `sid`, `client_id`, `zone_id`, and `use`. Verification failures are authentication failures; callers should not fall back to anonymous or partially trusted identity state.
6
+
7
+ Docs: https://caracal.run/sdks/identity/
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // Copyright (C) 2026 Garudex Labs. All Rights Reserved.
2
2
  // Caracal, a product of Garudex Labs
3
3
  //
4
- // @caracalai/identity JWT verify, JWKS cache, scope evaluation, and claim types.
4
+ // @caracalai/identity: JWT verify, JWKS cache, scope evaluation, and claim types.
5
5
  export * from './jwks.js';
6
6
  export * from './scope.js';
7
7
  export * from './types.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,mFAAmF;AAEnF,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,kFAAkF;AAElF,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
package/dist/jwks.d.ts CHANGED
@@ -1,3 +1,16 @@
1
1
  import { type JWTVerifyGetKey } from 'jose';
2
+ export interface JwksCacheOptions {
3
+ ttlMs?: number;
4
+ fetchTimeoutMs?: number;
5
+ fetchImpl?: typeof fetch;
6
+ }
7
+ export interface JwksCache {
8
+ getKeySet: (issuer: string) => Promise<JWTVerifyGetKey>;
9
+ warm: (issuer: string) => Promise<void>;
10
+ clear: (issuer?: string) => void;
11
+ }
12
+ export declare function createJwksCache(opts?: JwksCacheOptions): JwksCache;
2
13
  export declare function getKeySet(issuer: string): Promise<JWTVerifyGetKey>;
14
+ export declare function warmJwks(issuer: string): Promise<void>;
15
+ export declare function clearJwksCache(issuer?: string): void;
3
16
  //# sourceMappingURL=jwks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jwks.d.ts","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,MAAM,CAAA;AAY9D,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAmBxE"}
1
+ {"version":3,"file":"jwks.d.ts","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,MAAM,CAAA;AAQ9D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACvD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC;AAyBD,wBAAgB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,SAAS,CAuDtE;AAID,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAExE;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAEpD"}
package/dist/jwks.js CHANGED
@@ -1,38 +1,96 @@
1
1
  // Copyright (C) 2026 Garudex Labs. All Rights Reserved.
2
2
  // Caracal, a product of Garudex Labs
3
3
  //
4
- // JWKS cache with 5-min TTL and stale-while-revalidate.
4
+ // JWKS cache for mandate signature verification.
5
5
  import { createLocalJWKSet } from 'jose';
6
- const CACHE_TTL_MS = 5 * 60 * 1000;
7
- const cache = new Map();
8
- export async function getKeySet(issuer) {
9
- const now = Date.now();
10
- const entry = cache.get(issuer);
11
- if (entry) {
12
- const age = now - entry.fetchedAt;
13
- if (age < CACHE_TTL_MS)
6
+ const DEFAULT_CACHE_TTL_MS = 5 * 60 * 1000;
7
+ const DEFAULT_FETCH_TIMEOUT_MS = 5_000;
8
+ function assertSecureIssuer(issuer) {
9
+ const parsed = new URL(issuer);
10
+ if (parsed.protocol === 'https:')
11
+ return;
12
+ if (parsed.protocol === 'http:') {
13
+ const insecureAllowed = isLoopbackHost(parsed.hostname) ||
14
+ (process.env.NODE_ENV ?? 'development') === 'development' ||
15
+ process.env.CARACAL_ALLOW_INSECURE_CONFIG_URLS === 'true';
16
+ if (insecureAllowed)
17
+ return;
18
+ throw new Error('insecure issuer scheme: http requires a loopback host or development mode');
19
+ }
20
+ throw new Error(`unsupported issuer scheme: ${parsed.protocol}`);
21
+ }
22
+ function isLoopbackHost(host) {
23
+ if (host === 'localhost')
24
+ return true;
25
+ if (host === '::1' || host === '[::1]')
26
+ return true;
27
+ return /^127(?:\.\d{1,3}){3}$/.test(host);
28
+ }
29
+ export function createJwksCache(opts = {}) {
30
+ const ttlMs = opts.ttlMs ?? DEFAULT_CACHE_TTL_MS;
31
+ const fetchTimeoutMs = opts.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS;
32
+ const fetchImpl = opts.fetchImpl;
33
+ const cache = new Map();
34
+ async function getKeySet(issuer) {
35
+ const now = Date.now();
36
+ const entry = cache.get(issuer);
37
+ if (entry) {
38
+ const age = now - entry.fetchedAt;
39
+ if (age < ttlMs)
40
+ return entry.keySet;
41
+ if (!entry.revalidating) {
42
+ entry.revalidating = fetchAndStore(issuer)
43
+ .catch(() => entry.keySet)
44
+ .finally(() => {
45
+ const current = cache.get(issuer);
46
+ if (current)
47
+ current.revalidating = undefined;
48
+ });
49
+ }
14
50
  return entry.keySet;
15
- if (!entry.revalidating) {
16
- entry.revalidating = true;
17
- fetchAndStore(issuer).catch((err) => {
18
- console.error('JWKS refresh failed:', err);
19
- const e = cache.get(issuer);
20
- if (e)
21
- e.revalidating = false;
22
- });
23
51
  }
24
- return entry.keySet;
52
+ return fetchAndStore(issuer);
53
+ }
54
+ async function fetchAndStore(issuer) {
55
+ assertSecureIssuer(issuer);
56
+ const url = `${issuer.replace(/\/$/, '')}/.well-known/jwks.json`;
57
+ const controller = new AbortController();
58
+ const timeout = setTimeout(() => controller.abort(), fetchTimeoutMs);
59
+ try {
60
+ const res = await (fetchImpl ?? fetch)(url, { signal: controller.signal });
61
+ if (!res.ok)
62
+ throw new Error(`JWKS fetch failed: ${res.status}`);
63
+ const body = (await res.json());
64
+ const keySet = createLocalJWKSet({ keys: body.keys });
65
+ cache.set(issuer, { keySet, fetchedAt: Date.now() });
66
+ return keySet;
67
+ }
68
+ finally {
69
+ clearTimeout(timeout);
70
+ }
25
71
  }
26
- return fetchAndStore(issuer);
72
+ return {
73
+ getKeySet,
74
+ async warm(issuer) {
75
+ await getKeySet(issuer);
76
+ },
77
+ clear(issuer) {
78
+ if (issuer) {
79
+ cache.delete(issuer);
80
+ return;
81
+ }
82
+ cache.clear();
83
+ },
84
+ };
85
+ }
86
+ const defaultCache = createJwksCache();
87
+ export async function getKeySet(issuer) {
88
+ return defaultCache.getKeySet(issuer);
89
+ }
90
+ export async function warmJwks(issuer) {
91
+ await defaultCache.warm(issuer);
27
92
  }
28
- async function fetchAndStore(issuer) {
29
- const url = `${issuer.replace(/\/$/, '')}/.well-known/jwks.json`;
30
- const res = await fetch(url);
31
- if (!res.ok)
32
- throw new Error(`JWKS fetch failed: ${res.status}`);
33
- const body = (await res.json());
34
- const keySet = createLocalJWKSet({ keys: body.keys });
35
- cache.set(issuer, { keySet, fetchedAt: Date.now(), revalidating: false });
36
- return keySet;
93
+ export function clearJwksCache(issuer) {
94
+ defaultCache.clear(issuer);
37
95
  }
38
96
  //# sourceMappingURL=jwks.js.map
package/dist/jwks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jwks.js","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,wDAAwD;AAExD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,MAAM,CAAA;AAQ9D,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAElC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAA;AAE1C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAE/B,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,CAAA;QACjC,IAAI,GAAG,GAAG,YAAY;YAAE,OAAO,KAAK,CAAC,MAAM,CAAA;QAC3C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACxB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAA;YACzB,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClC,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAA;gBAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC3B,IAAI,CAAC;oBAAE,CAAC,CAAC,YAAY,GAAG,KAAK,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAA;IACrB,CAAC;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAc;IACzC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAA;IAChE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;IAChE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAA;IAErD,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAA6C,CAAC,CAAA;IAChG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;IACzE,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"jwks.js","sourceRoot":"","sources":["../src/jwks.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,15 @@
1
1
  export declare const DEFAULT_MAX_HOP_COUNT = 10;
2
+ export declare const MANDATE_USE_SESSION = "session";
3
+ export declare const MANDATE_USE_RESOURCE = "resource";
4
+ export declare const SUBJECT_TYPE_USER = "user";
5
+ export declare const SUBJECT_TYPE_APPLICATION = "application";
2
6
  export interface JwtConfig {
3
7
  issuer: string;
4
8
  audience: string;
5
9
  zoneId?: string;
6
10
  requiredScopes?: string[];
11
+ requiredTargets?: string[];
12
+ requiredUse?: string;
7
13
  requireAgent?: boolean;
8
14
  requireDelegation?: boolean;
9
15
  requireChainContains?: string[];
@@ -19,7 +25,14 @@ export interface Claims {
19
25
  zoneId: string;
20
26
  clientId: string;
21
27
  sid: string;
28
+ rootSid: string;
29
+ use: string;
30
+ subType: string;
31
+ jti: string;
32
+ issuedAt: number;
33
+ expiresAt: number;
22
34
  scope: string;
35
+ targetResources?: string[];
23
36
  agentSessionId?: string;
24
37
  delegationEdgeId?: string;
25
38
  sourceSessionId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,eAAO,MAAM,mBAAmB,YAAY,CAAA;AAC5C,eAAO,MAAM,oBAAoB,aAAa,CAAA;AAC9C,eAAO,MAAM,iBAAiB,SAAS,CAAA;AACvC,eAAO,MAAM,wBAAwB,gBAAgB,CAAA;AAErD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB"}
package/dist/types.js CHANGED
@@ -7,4 +7,8 @@
7
7
  // that would have been blocked at spawn time cannot pass a permissive resource
8
8
  // server.
9
9
  export const DEFAULT_MAX_HOP_COUNT = 10;
10
+ export const MANDATE_USE_SESSION = 'session';
11
+ export const MANDATE_USE_RESOURCE = 'resource';
12
+ export const SUBJECT_TYPE_USER = 'user';
13
+ export const SUBJECT_TYPE_APPLICATION = 'application';
10
14
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,iEAAiE;AAEjE,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,UAAU;AACV,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,iEAAiE;AAEjE,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,UAAU;AACV,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAA;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAA;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAA;AACvC,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CAAA"}
package/dist/verify.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { CaracalError } from '@caracalai/core';
2
+ import { type JwksCache } from './jwks.js';
2
3
  import { type Claims, type JwtConfig } from './types.js';
3
4
  export declare class TokenInvalidError extends CaracalError {
4
5
  constructor(message?: string, cause?: unknown);
@@ -23,6 +24,8 @@ export declare class ChainMismatchError extends CaracalError {
23
24
  export declare class HopCountExceededError extends CaracalError {
24
25
  constructor(message?: string);
25
26
  }
26
- export declare function verify(token: string, config: JwtConfig): Promise<Claims>;
27
+ export declare function verify(token: string, config: JwtConfig & {
28
+ jwksCache?: JwksCache;
29
+ }): Promise<Claims>;
27
30
  export declare function verifyChainContains(claims: Claims, applicationId: string): boolean;
28
31
  //# sourceMappingURL=verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAwC,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAE9F,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,SAA4B,EAAE,KAAK,CAAC,EAAE,OAAO;CAIjE;AAED,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,OAAO,SAAiC;CAIrD;AAED,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBACjB,YAAY,EAAE,MAAM;CAKjC;AAED,qBAAa,0BAA2B,SAAQ,YAAY;gBAC9C,OAAO,SAA4B;CAIhD;AAED,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,OAAO,SAAwB;CAI5C;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;gBACzB,oBAAoB,EAAE,MAAM;CAOzC;AAED,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,OAAO,SAAuB;CAI3C;AAoBD,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAuE9E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAIlF"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAmF,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAIzI,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,SAA4B,EAAE,KAAK,CAAC,EAAE,OAAO;CAIjE;AAED,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,OAAO,SAAiC;CAIrD;AAED,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;gBACjB,YAAY,EAAE,MAAM;CAKjC;AAED,qBAAa,0BAA2B,SAAQ,YAAY;gBAC9C,OAAO,SAA4B;CAIhD;AAED,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,OAAO,SAAwB;CAI5C;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;gBACzB,oBAAoB,EAAE,MAAM;CAOzC;AAED,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,OAAO,SAAuB;CAI3C;AA4DD,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6F1G;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAIlF"}
package/dist/verify.js CHANGED
@@ -5,7 +5,8 @@
5
5
  import { jwtVerify } from 'jose';
6
6
  import { CaracalError, hasScope } from '@caracalai/core';
7
7
  import { getKeySet } from './jwks.js';
8
- import { DEFAULT_MAX_HOP_COUNT } from './types.js';
8
+ import { DEFAULT_MAX_HOP_COUNT, MANDATE_USE_RESOURCE, MANDATE_USE_SESSION } from './types.js';
9
+ const REQUIRED_CLAIMS = ['exp', 'iat', 'jti', 'sub', 'client_id', 'sid', 'root_sid', 'use', 'sub_type'];
9
10
  export class TokenInvalidError extends CaracalError {
10
11
  constructor(message = 'Token validation failed', cause) {
11
12
  super('invalid_token', message, cause !== undefined ? { cause } : {});
@@ -54,62 +55,123 @@ export class HopCountExceededError extends CaracalError {
54
55
  this.name = 'HopCountExceededError';
55
56
  }
56
57
  }
57
- function readChain(raw) {
58
+ function requiredString(payload, name) {
59
+ const value = payload[name];
60
+ if (typeof value !== 'string' || value === '') {
61
+ throw new TokenInvalidError(`Token claim ${name} is required`);
62
+ }
63
+ return value;
64
+ }
65
+ function optionalString(payload, name) {
66
+ const value = payload[name];
67
+ if (value === undefined || value === null || value === '')
68
+ return undefined;
69
+ if (typeof value !== 'string')
70
+ throw new TokenInvalidError(`Token claim ${name} must be a string`);
71
+ return value;
72
+ }
73
+ function optionalInteger(payload, name) {
74
+ const value = payload[name];
75
+ if (value === undefined || value === null)
76
+ return undefined;
77
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {
78
+ throw new TokenInvalidError(`Token claim ${name} must be a non-negative integer`);
79
+ }
80
+ return value;
81
+ }
82
+ function requiredInteger(payload, name) {
83
+ const value = optionalInteger(payload, name);
84
+ if (value === undefined)
85
+ throw new TokenInvalidError(`Token claim ${name} is required`);
86
+ return value;
87
+ }
88
+ function readStringList(raw, name) {
89
+ if (raw === undefined || raw === null)
90
+ return undefined;
58
91
  if (!Array.isArray(raw))
92
+ throw new TokenInvalidError(`Token claim ${name} must be a string array`);
93
+ const out = [];
94
+ for (const value of raw) {
95
+ if (typeof value !== 'string' || value === '')
96
+ throw new TokenInvalidError(`Token claim ${name} must be a string array`);
97
+ out.push(value);
98
+ }
99
+ return out;
100
+ }
101
+ function readChain(raw) {
102
+ if (raw === undefined || raw === null)
59
103
  return undefined;
104
+ if (!Array.isArray(raw))
105
+ throw new TokenInvalidError('Token claim delegation_chain must be an array');
60
106
  const out = [];
61
107
  for (const item of raw) {
62
- if (item && typeof item === 'object') {
63
- const r = item;
64
- const applicationId = typeof r['app'] === 'string' ? r['app'] : '';
65
- if (!applicationId)
66
- continue;
67
- out.push({
68
- applicationId,
69
- agentSessionId: typeof r['session'] === 'string' ? r['session'] : undefined,
70
- delegationEdgeId: typeof r['edge'] === 'string' ? r['edge'] : undefined,
71
- });
108
+ if (!item || typeof item !== 'object' || Array.isArray(item)) {
109
+ throw new TokenInvalidError('Token claim delegation_chain must contain objects');
72
110
  }
111
+ const r = item;
112
+ const applicationId = requiredString(r, 'application_id');
113
+ const agentSessionId = optionalString(r, 'agent_session_id');
114
+ const delegationEdgeId = optionalString(r, 'delegation_edge_id');
115
+ out.push({ applicationId, agentSessionId, delegationEdgeId });
73
116
  }
74
117
  return out.length === 0 ? undefined : out;
75
118
  }
76
119
  export async function verify(token, config) {
77
120
  let payload;
78
121
  try {
79
- const keySet = await getKeySet(config.issuer);
122
+ const keySet = config.jwksCache ? await config.jwksCache.getKeySet(config.issuer) : await getKeySet(config.issuer);
80
123
  ({ payload } = await jwtVerify(token, keySet, {
81
124
  issuer: config.issuer,
82
125
  audience: config.audience,
83
126
  algorithms: ['ES256'],
127
+ requiredClaims: REQUIRED_CLAIMS,
84
128
  }));
85
129
  }
86
130
  catch (err) {
87
131
  throw new TokenInvalidError('Token validation failed', err);
88
132
  }
133
+ const jti = requiredString(payload, 'jti');
134
+ const sub = requiredString(payload, 'sub');
135
+ const clientId = requiredString(payload, 'client_id');
136
+ const sid = requiredString(payload, 'sid');
137
+ const rootSid = requiredString(payload, 'root_sid');
138
+ const use = requiredString(payload, 'use');
139
+ if (use !== MANDATE_USE_SESSION && use !== MANDATE_USE_RESOURCE)
140
+ throw new TokenInvalidError('Token use validation failed');
141
+ const subType = requiredString(payload, 'sub_type');
142
+ if (subType !== 'user' && subType !== 'application')
143
+ throw new TokenInvalidError('Token subject type validation failed');
144
+ const issuedAt = requiredInteger(payload, 'iat');
145
+ const expiresAt = requiredInteger(payload, 'exp');
89
146
  const scope = payload['scope'] ?? '';
90
- const zoneId = payload['zone_id'];
91
- if (typeof zoneId !== 'string' || zoneId === '' || (config.zoneId && zoneId !== config.zoneId)) {
147
+ if (typeof scope !== 'string')
148
+ throw new TokenInvalidError('Token claim scope must be a string');
149
+ const targetResources = readStringList(payload['target'], 'target');
150
+ const rawZoneId = payload['zone_id'];
151
+ if (typeof rawZoneId !== 'string' || rawZoneId === '' || (config.zoneId && rawZoneId !== config.zoneId)) {
92
152
  throw new ZoneInvalidError();
93
153
  }
154
+ const zoneId = rawZoneId;
155
+ if (config.requiredUse && use !== config.requiredUse)
156
+ throw new TokenInvalidError('Token use validation failed');
94
157
  for (const required of config.requiredScopes ?? []) {
95
158
  if (!hasScope(scope, required)) {
96
159
  throw new ScopeInsufficientError(required);
97
160
  }
98
161
  }
99
- const sid = typeof payload['sid'] === 'string' ? payload['sid'] : '';
100
- const clientId = typeof payload['client_id'] === 'string' ? payload['client_id'] : '';
101
- const agentSessionId = typeof payload['agent_session_id'] === 'string' ? payload['agent_session_id'] : undefined;
102
- const delegationEdgeId = typeof payload['delegation_edge_id'] === 'string' ? payload['delegation_edge_id'] : undefined;
103
- const sourceSessionId = typeof payload['source_session_id'] === 'string' ? payload['source_session_id'] : undefined;
104
- const targetSessionId = typeof payload['target_session_id'] === 'string' ? payload['target_session_id'] : undefined;
105
- const delegationPath = Array.isArray(payload['delegation_path'])
106
- ? payload['delegation_path'].filter((v) => typeof v === 'string')
107
- : undefined;
162
+ for (const target of config.requiredTargets ?? []) {
163
+ if (!targetResources?.includes(target)) {
164
+ throw new TokenInvalidError('Token target resource validation failed');
165
+ }
166
+ }
167
+ const agentSessionId = optionalString(payload, 'agent_session_id');
168
+ const delegationEdgeId = optionalString(payload, 'delegation_edge_id');
169
+ const sourceSessionId = optionalString(payload, 'source_session_id');
170
+ const targetSessionId = optionalString(payload, 'target_session_id');
171
+ const delegationPath = readStringList(payload['delegation_path'], 'delegation_path');
108
172
  const delegationChain = readChain(payload['delegation_chain']);
109
- const graphEpoch = typeof payload['delegation_graph_epoch'] === 'number'
110
- ? payload['delegation_graph_epoch']
111
- : undefined;
112
- const hopCount = typeof payload['hop_count'] === 'number' ? payload['hop_count'] : undefined;
173
+ const graphEpoch = optionalInteger(payload, 'delegation_graph_epoch');
174
+ const hopCount = optionalInteger(payload, 'hop_count');
113
175
  if (config.requireAgent && !agentSessionId) {
114
176
  throw new AgentIdentityRequiredError();
115
177
  }
@@ -128,11 +190,18 @@ export async function verify(token, config) {
128
190
  throw new ChainMismatchError(expected);
129
191
  }
130
192
  return {
131
- sub: typeof payload.sub === 'string' ? payload.sub : '',
193
+ sub,
132
194
  zoneId,
133
195
  clientId,
134
196
  sid,
197
+ rootSid,
198
+ use,
199
+ subType,
200
+ jti,
201
+ issuedAt,
202
+ expiresAt,
135
203
  scope,
204
+ targetResources,
136
205
  agentSessionId,
137
206
  delegationEdgeId,
138
207
  sourceSessionId,
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caracalai/identity",
3
- "version": "0.1.2",
3
+ "version": "0.1.4-rc.1",
4
4
  "description": "Caracal identity primitives: JWT verification, JWKS, scope, claims.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Garudex-Labs/caracal",
@@ -26,8 +26,8 @@
26
26
  },
27
27
  "files": [
28
28
  "dist",
29
- "README.md",
30
- "LICENSE"
29
+ "LICENSE",
30
+ "README.md"
31
31
  ],
32
32
  "publishConfig": {
33
33
  "access": "public"
@@ -40,7 +40,7 @@
40
40
  "prepublishOnly": "tsc"
41
41
  },
42
42
  "dependencies": {
43
- "@caracalai/core": "0.1.2",
43
+ "@caracalai/core": "0.1.4-rc.1",
44
44
  "jose": "^6.2.3"
45
45
  },
46
46
  "devDependencies": {