@caracalai/identity 0.1.2 → 0.1.3-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 +6 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +97 -28
- package/dist/verify.js.map +1 -1
- package/package.json +4 -4
package/README.md
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
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
|
+
|
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
|
|
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,
|
|
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/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;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,qBAAqB,KAAK,CAAA;
|
|
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.map
CHANGED
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAA;AAExD,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,OAAO,CAAC,MAAM,CAAC,CA6F9E;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,22 +55,64 @@ export class HopCountExceededError extends CaracalError {
|
|
|
54
55
|
this.name = 'HopCountExceededError';
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
function
|
|
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
|
|
63
|
-
|
|
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
|
}
|
|
@@ -81,35 +124,54 @@ export async function verify(token, config) {
|
|
|
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
|
-
|
|
91
|
-
|
|
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
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
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 =
|
|
110
|
-
|
|
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
|
|
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,
|
package/dist/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,oFAAoF;AAEpF,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,qBAAqB,EAA8C,MAAM,YAAY,CAAA;
|
|
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.
|
|
3
|
+
"version": "0.1.3-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
|
-
"
|
|
30
|
-
"
|
|
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.
|
|
43
|
+
"@caracalai/core": "0.1.3-rc.1",
|
|
44
44
|
"jose": "^6.2.3"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|