@grantex/sdk 0.5.1 → 0.7.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/LICENSE +185 -0
- package/NOTICE +16 -0
- package/README.md +34 -2
- package/dist/authorization-details.d.ts +86 -0
- package/dist/authorization-details.d.ts.map +1 -0
- package/dist/authorization-details.js +209 -0
- package/dist/authorization-details.js.map +1 -0
- package/dist/canonical.d.ts +47 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +163 -0
- package/dist/canonical.js.map +1 -0
- package/dist/caps/index.d.ts +19 -0
- package/dist/caps/index.d.ts.map +1 -0
- package/dist/caps/index.js +19 -0
- package/dist/caps/index.js.map +1 -0
- package/dist/caps/limits.d.ts +40 -0
- package/dist/caps/limits.d.ts.map +1 -0
- package/dist/caps/limits.js +109 -0
- package/dist/caps/limits.js.map +1 -0
- package/dist/caps/memory.d.ts +15 -0
- package/dist/caps/memory.d.ts.map +1 -0
- package/dist/caps/memory.js +57 -0
- package/dist/caps/memory.js.map +1 -0
- package/dist/caps/meter.d.ts +107 -0
- package/dist/caps/meter.d.ts.map +1 -0
- package/dist/caps/meter.js +200 -0
- package/dist/caps/meter.js.map +1 -0
- package/dist/caps/postgres.d.ts +64 -0
- package/dist/caps/postgres.d.ts.map +1 -0
- package/dist/caps/postgres.js +221 -0
- package/dist/caps/postgres.js.map +1 -0
- package/dist/caps/redis.d.ts +45 -0
- package/dist/caps/redis.d.ts.map +1 -0
- package/dist/caps/redis.js +173 -0
- package/dist/caps/redis.js.map +1 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +517 -57
- package/dist/client.js.map +1 -1
- package/dist/decisions/action.d.ts +51 -0
- package/dist/decisions/action.d.ts.map +1 -0
- package/dist/decisions/action.js +237 -0
- package/dist/decisions/action.js.map +1 -0
- package/dist/decisions/index.d.ts +11 -0
- package/dist/decisions/index.d.ts.map +1 -0
- package/dist/decisions/index.js +8 -0
- package/dist/decisions/index.js.map +1 -0
- package/dist/decisions/verify.d.ts +103 -0
- package/dist/decisions/verify.d.ts.map +1 -0
- package/dist/decisions/verify.js +277 -0
- package/dist/decisions/verify.js.map +1 -0
- package/dist/denials.d.ts +132 -0
- package/dist/denials.d.ts.map +1 -0
- package/dist/denials.js +129 -0
- package/dist/denials.js.map +1 -0
- package/dist/evidence/build.d.ts +63 -0
- package/dist/evidence/build.d.ts.map +1 -0
- package/dist/evidence/build.js +201 -0
- package/dist/evidence/build.js.map +1 -0
- package/dist/evidence/canonical.d.ts +3 -0
- package/dist/evidence/canonical.d.ts.map +1 -0
- package/dist/evidence/canonical.js +3 -0
- package/dist/evidence/canonical.js.map +1 -0
- package/dist/evidence/checks.d.ts +13 -0
- package/dist/evidence/checks.d.ts.map +1 -0
- package/dist/evidence/checks.js +406 -0
- package/dist/evidence/checks.js.map +1 -0
- package/dist/evidence/document.d.ts +8 -0
- package/dist/evidence/document.d.ts.map +1 -0
- package/dist/evidence/document.js +298 -0
- package/dist/evidence/document.js.map +1 -0
- package/dist/evidence/hashing.d.ts +37 -0
- package/dist/evidence/hashing.d.ts.map +1 -0
- package/dist/evidence/hashing.js +106 -0
- package/dist/evidence/hashing.js.map +1 -0
- package/dist/evidence/index.d.ts +24 -0
- package/dist/evidence/index.d.ts.map +1 -0
- package/dist/evidence/index.js +24 -0
- package/dist/evidence/index.js.map +1 -0
- package/dist/evidence/result.d.ts +88 -0
- package/dist/evidence/result.d.ts.map +1 -0
- package/dist/evidence/result.js +88 -0
- package/dist/evidence/result.js.map +1 -0
- package/dist/evidence/schema-1.0.d.ts +2 -0
- package/dist/evidence/schema-1.0.d.ts.map +1 -0
- package/dist/evidence/schema-1.0.js +1398 -0
- package/dist/evidence/schema-1.0.js.map +1 -0
- package/dist/evidence/schema.d.ts +13 -0
- package/dist/evidence/schema.d.ts.map +1 -0
- package/dist/evidence/schema.js +264 -0
- package/dist/evidence/schema.js.map +1 -0
- package/dist/evidence/signature.d.ts +23 -0
- package/dist/evidence/signature.d.ts.map +1 -0
- package/dist/evidence/signature.js +136 -0
- package/dist/evidence/signature.js.map +1 -0
- package/dist/evidence/trace.d.ts +23 -0
- package/dist/evidence/trace.d.ts.map +1 -0
- package/dist/evidence/trace.js +69 -0
- package/dist/evidence/trace.js.map +1 -0
- package/dist/evidence/verify.d.ts +29 -0
- package/dist/evidence/verify.d.ts.map +1 -0
- package/dist/evidence/verify.js +163 -0
- package/dist/evidence/verify.js.map +1 -0
- package/dist/http.d.ts +12 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +11 -5
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +16 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -2
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +178 -9
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +379 -16
- package/dist/manifest.js.map +1 -1
- package/dist/prepaid-wallets.d.ts +21 -0
- package/dist/prepaid-wallets.d.ts.map +1 -1
- package/dist/prepaid-wallets.js +6 -0
- package/dist/prepaid-wallets.js.map +1 -1
- package/dist/purpose.d.ts +29 -0
- package/dist/purpose.d.ts.map +1 -0
- package/dist/purpose.js +60 -0
- package/dist/purpose.js.map +1 -0
- package/dist/resources/agents.js +3 -3
- package/dist/resources/agents.js.map +1 -1
- package/dist/resources/anomalies.d.ts +3 -1
- package/dist/resources/anomalies.d.ts.map +1 -1
- package/dist/resources/anomalies.js +7 -1
- package/dist/resources/anomalies.js.map +1 -1
- package/dist/resources/audit.js +1 -1
- package/dist/resources/audit.js.map +1 -1
- package/dist/resources/budgets.js +2 -2
- package/dist/resources/budgets.js.map +1 -1
- package/dist/resources/credentials.js +1 -1
- package/dist/resources/credentials.js.map +1 -1
- package/dist/resources/decisions.d.ts +69 -0
- package/dist/resources/decisions.d.ts.map +1 -0
- package/dist/resources/decisions.js +115 -0
- package/dist/resources/decisions.js.map +1 -0
- package/dist/resources/domains.js +2 -2
- package/dist/resources/domains.js.map +1 -1
- package/dist/resources/dpdp.js +4 -4
- package/dist/resources/dpdp.js.map +1 -1
- package/dist/resources/grants.js +2 -2
- package/dist/resources/grants.js.map +1 -1
- package/dist/resources/policies.js +3 -3
- package/dist/resources/policies.js.map +1 -1
- package/dist/resources/scim.js +5 -5
- package/dist/resources/scim.js.map +1 -1
- package/dist/resources/tokens.d.ts.map +1 -1
- package/dist/resources/tokens.js +5 -1
- package/dist/resources/tokens.js.map +1 -1
- package/dist/resources/vault.js +2 -2
- package/dist/resources/vault.js.map +1 -1
- package/dist/resources/webauthn.d.ts +6 -1
- package/dist/resources/webauthn.d.ts.map +1 -1
- package/dist/resources/webauthn.js +5 -1
- package/dist/resources/webauthn.js.map +1 -1
- package/dist/resources/webhooks.js +1 -1
- package/dist/resources/webhooks.js.map +1 -1
- package/dist/revocations/feed.d.ts +61 -0
- package/dist/revocations/feed.d.ts.map +1 -0
- package/dist/revocations/feed.js +282 -0
- package/dist/revocations/feed.js.map +1 -0
- package/dist/revocations/index.d.ts +20 -0
- package/dist/revocations/index.d.ts.map +1 -0
- package/dist/revocations/index.js +19 -0
- package/dist/revocations/index.js.map +1 -0
- package/dist/revocations/set.d.ts +59 -0
- package/dist/revocations/set.d.ts.map +1 -0
- package/dist/revocations/set.js +87 -0
- package/dist/revocations/set.js.map +1 -0
- package/dist/scopes.d.ts +26 -0
- package/dist/scopes.d.ts.map +1 -0
- package/dist/scopes.js +37 -0
- package/dist/scopes.js.map +1 -0
- package/dist/types.d.ts +121 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/dist/verify.d.ts +31 -2
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +236 -29
- package/dist/verify.js.map +1 -1
- package/package.json +13 -4
package/dist/verify.js
CHANGED
|
@@ -1,5 +1,61 @@
|
|
|
1
1
|
import { createRemoteJWKSet, jwtVerify, decodeJwt } from 'jose';
|
|
2
|
+
import { missingScopes } from './scopes.js';
|
|
2
3
|
import { GrantexTokenError } from './errors.js';
|
|
4
|
+
/** Claim holding Grantex's grant record fields (spec/grant-token-0.6.md). */
|
|
5
|
+
export const GRANT_CLAIM = 'urn:grantex:grant';
|
|
6
|
+
/**
|
|
7
|
+
* Legacy claim aliases and the standard claims that replace them. Reading an
|
|
8
|
+
* alias is deprecated in 0.6 and off by default from 0.7.
|
|
9
|
+
*/
|
|
10
|
+
export const LEGACY_CLAIM_ALIASES = Object.freeze({
|
|
11
|
+
agt: `${GRANT_CLAIM}.agent_did`,
|
|
12
|
+
dev: `${GRANT_CLAIM}.developer_id`,
|
|
13
|
+
grnt: `${GRANT_CLAIM}.grant_id`,
|
|
14
|
+
scp: 'scope',
|
|
15
|
+
parentAgt: 'act.sub',
|
|
16
|
+
parentGrnt: `${GRANT_CLAIM}.parent_grant_id`,
|
|
17
|
+
delegationDepth: `${GRANT_CLAIM}.delegation_depth`,
|
|
18
|
+
});
|
|
19
|
+
const MAX_ACTOR_CHAIN_DEPTH = 10;
|
|
20
|
+
const warnedLegacyAliases = new Set();
|
|
21
|
+
/** @internal Forget which legacy-alias warnings were emitted. Intended for tests. */
|
|
22
|
+
export function clearLegacyClaimWarnings() {
|
|
23
|
+
warnedLegacyAliases.clear();
|
|
24
|
+
}
|
|
25
|
+
function warnLegacyAliases(aliases) {
|
|
26
|
+
for (const alias of aliases) {
|
|
27
|
+
if (warnedLegacyAliases.has(alias))
|
|
28
|
+
continue;
|
|
29
|
+
warnedLegacyAliases.add(alias);
|
|
30
|
+
const message = `Grant token claim "${alias}" is a legacy alias of ${LEGACY_CLAIM_ALIASES[alias]}. `
|
|
31
|
+
+ 'Reading legacy claim aliases is deprecated and stops by default in 0.7; see docs/migration-0.6.md.';
|
|
32
|
+
if (typeof process !== 'undefined' && typeof process.emitWarning === 'function') {
|
|
33
|
+
process.emitWarning(message, { type: 'DeprecationWarning', code: 'GRANTEX_LEGACY_CLAIM' });
|
|
34
|
+
}
|
|
35
|
+
else if (typeof console !== 'undefined') {
|
|
36
|
+
console.warn(`DeprecationWarning: ${message}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Signature algorithms a grant token may use. Each maps to one key type (RSA
|
|
42
|
+
* for RS256, EC P-256 for ES256), and JOSE only selects a JWK Set key of that
|
|
43
|
+
* type, published for that algorithm, under the token's `kid`. `none`, the
|
|
44
|
+
* HMAC family and every other algorithm are refused.
|
|
45
|
+
*/
|
|
46
|
+
export const GRANT_TOKEN_ALGORITHMS = ['RS256', 'ES256'];
|
|
47
|
+
function resolveAlgorithms(requested) {
|
|
48
|
+
if (requested === undefined)
|
|
49
|
+
return [...GRANT_TOKEN_ALGORITHMS];
|
|
50
|
+
if (!Array.isArray(requested) || requested.length === 0) {
|
|
51
|
+
throw new GrantexTokenError('algorithms must list at least one of RS256, ES256');
|
|
52
|
+
}
|
|
53
|
+
const unsupported = requested.filter((alg) => !GRANT_TOKEN_ALGORITHMS.includes(alg));
|
|
54
|
+
if (unsupported.length > 0) {
|
|
55
|
+
throw new GrantexTokenError(`Unsupported grant token algorithm ${unsupported.map(String).join(', ')}; allowed: ${GRANT_TOKEN_ALGORITHMS.join(', ')}`);
|
|
56
|
+
}
|
|
57
|
+
return [...new Set(requested)];
|
|
58
|
+
}
|
|
3
59
|
const PRODUCTION_JWKS_URI = 'https://api.grantex.dev/.well-known/jwks.json';
|
|
4
60
|
const PRODUCTION_ISSUER = 'https://grantex.dev';
|
|
5
61
|
const MAX_REMOTE_JWKS_RESOLVERS = 64;
|
|
@@ -31,11 +87,13 @@ export function clearRemoteJwksCache() {
|
|
|
31
87
|
}
|
|
32
88
|
/**
|
|
33
89
|
* Verify a Grantex grant token locally using JWKS retrieved from the configured URI.
|
|
34
|
-
*
|
|
90
|
+
* The signature must be RS256 or ES256 (`GRANT_TOKEN_ALGORITHMS`); `options.algorithms`
|
|
91
|
+
* can narrow that list but never widen it.
|
|
35
92
|
*
|
|
36
93
|
* @throws {GrantexTokenError} if the token is invalid, expired, or missing required scopes.
|
|
37
94
|
*/
|
|
38
95
|
export async function verifyGrantToken(token, options) {
|
|
96
|
+
const algorithms = resolveAlgorithms(options.algorithms);
|
|
39
97
|
let jwksUri = options.jwksUri;
|
|
40
98
|
let expectedIssuer = options.issuer;
|
|
41
99
|
if (options.issuerDid?.startsWith('did:web:')) {
|
|
@@ -58,11 +116,14 @@ export async function verifyGrantToken(token, options) {
|
|
|
58
116
|
}
|
|
59
117
|
}
|
|
60
118
|
const jwks = getRemoteJwksResolver(jwksUrl);
|
|
119
|
+
const legacyClaims = options.legacyClaims ?? true;
|
|
61
120
|
let payload;
|
|
62
121
|
try {
|
|
63
122
|
const jwtOptions = {
|
|
64
|
-
algorithms
|
|
123
|
+
algorithms,
|
|
65
124
|
issuer: expectedIssuer,
|
|
125
|
+
// Standard-only verification also requires the RFC 9068 token type.
|
|
126
|
+
...(legacyClaims ? {} : { typ: 'at+jwt' }),
|
|
66
127
|
...(options.clockTolerance !== undefined
|
|
67
128
|
? { clockTolerance: options.clockTolerance }
|
|
68
129
|
: {}),
|
|
@@ -77,14 +138,23 @@ export async function verifyGrantToken(token, options) {
|
|
|
77
138
|
const message = err instanceof Error ? err.message : String(err);
|
|
78
139
|
throw new GrantexTokenError(`Grant token verification failed: ${message}`);
|
|
79
140
|
}
|
|
141
|
+
// Validate the claim shape before touching `scp`. A signed-but-foreign JWT
|
|
142
|
+
// from the same issuer (e.g. a session or OAuth access token) may carry no
|
|
143
|
+
// `scp`, or a string `scp` on which `.includes()` degrades to a substring
|
|
144
|
+
// match. Either way this must surface as a GrantexTokenError, not a
|
|
145
|
+
// TypeError or a false positive.
|
|
146
|
+
const verified = normalizeGrantClaims(payload, legacyClaims);
|
|
147
|
+
checkProofOfPossession(verified, options);
|
|
148
|
+
if (verified.legacyClaimsUsed !== undefined)
|
|
149
|
+
warnLegacyAliases(verified.legacyClaimsUsed);
|
|
80
150
|
const requiredScopes = options.requiredScopes ?? [];
|
|
81
151
|
if (requiredScopes.length > 0) {
|
|
82
|
-
const missing =
|
|
152
|
+
const missing = missingScopes(verified.scopes, requiredScopes);
|
|
83
153
|
if (missing.length > 0) {
|
|
84
154
|
throw new GrantexTokenError(`Grant token is missing required scopes: ${missing.join(', ')}`);
|
|
85
155
|
}
|
|
86
156
|
}
|
|
87
|
-
return
|
|
157
|
+
return verified;
|
|
88
158
|
}
|
|
89
159
|
/**
|
|
90
160
|
* Decode a grant token (without re-verifying the signature) and map it to
|
|
@@ -102,34 +172,171 @@ export function mapOnlineVerifyToVerifiedGrant(token) {
|
|
|
102
172
|
const message = err instanceof Error ? err.message : String(err);
|
|
103
173
|
throw new GrantexTokenError(`Failed to decode grant token: ${message}`);
|
|
104
174
|
}
|
|
105
|
-
return
|
|
175
|
+
return normalizeGrantClaims(payload, true);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Map grant claims to a `VerifiedGrant`: standard claims first, legacy aliases
|
|
179
|
+
* where the standard claim is absent (unless `legacyClaims` is false). Used
|
|
180
|
+
* for `/v1/grants/verify` responses, which carry the aliases by design, so it
|
|
181
|
+
* emits no deprecation warning.
|
|
182
|
+
*
|
|
183
|
+
* @throws {GrantexTokenError} a required claim is missing, a claim is malformed,
|
|
184
|
+
* or a standard claim and its alias disagree.
|
|
185
|
+
*/
|
|
186
|
+
export function claimsToVerifiedGrant(payload, options = {}) {
|
|
187
|
+
return normalizeGrantClaims(payload, options.legacyClaims ?? true);
|
|
188
|
+
}
|
|
189
|
+
function isPlainObject(value) {
|
|
190
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
191
|
+
}
|
|
192
|
+
function parseActor(value) {
|
|
193
|
+
let current = value;
|
|
194
|
+
for (let depth = 1;; depth += 1) {
|
|
195
|
+
if (!isPlainObject(current) || typeof current['sub'] !== 'string' || current['sub'].length === 0) {
|
|
196
|
+
throw new GrantexTokenError('Grant token act claim must be an object with a non-empty string sub');
|
|
197
|
+
}
|
|
198
|
+
if (current['act'] === undefined)
|
|
199
|
+
break;
|
|
200
|
+
if (depth >= MAX_ACTOR_CHAIN_DEPTH) {
|
|
201
|
+
throw new GrantexTokenError(`Grant token act chain is deeper than ${MAX_ACTOR_CHAIN_DEPTH}`);
|
|
202
|
+
}
|
|
203
|
+
current = current['act'];
|
|
204
|
+
}
|
|
205
|
+
return value;
|
|
106
206
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
207
|
+
function stringClaim(record, name, label) {
|
|
208
|
+
const value = record[name];
|
|
209
|
+
if (value === undefined)
|
|
210
|
+
return undefined;
|
|
211
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
212
|
+
throw new GrantexTokenError(`Grant token claim ${label} must be a non-empty string`);
|
|
213
|
+
}
|
|
214
|
+
return value;
|
|
215
|
+
}
|
|
216
|
+
function depthClaim(record, name, label) {
|
|
217
|
+
const value = record[name];
|
|
218
|
+
if (value === undefined)
|
|
219
|
+
return undefined;
|
|
220
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {
|
|
221
|
+
throw new GrantexTokenError(`Grant token claim ${label} must be a non-negative integer`);
|
|
222
|
+
}
|
|
223
|
+
return value;
|
|
224
|
+
}
|
|
225
|
+
function checkProofOfPossession(grant, options) {
|
|
226
|
+
if (options.requireProofOfPossession === true && options.proofJkt === undefined) {
|
|
227
|
+
throw new GrantexTokenError('Proof of possession is required but no proof key thumbprint (proofJkt) was given');
|
|
228
|
+
}
|
|
229
|
+
if (options.proofJkt === undefined)
|
|
230
|
+
return;
|
|
231
|
+
const jkt = grant.cnf?.jkt;
|
|
232
|
+
if (typeof jkt !== 'string') {
|
|
233
|
+
throw new GrantexTokenError('Grant token is not key-bound (no cnf.jkt) but proof of possession is required');
|
|
234
|
+
}
|
|
235
|
+
const a = new TextEncoder().encode(jkt);
|
|
236
|
+
const b = new TextEncoder().encode(options.proofJkt);
|
|
237
|
+
let diff = a.length ^ b.length;
|
|
238
|
+
for (let i = 0; i < Math.max(a.length, b.length); i += 1)
|
|
239
|
+
diff |= (a[i] ?? 0) ^ (b[i] ?? 0);
|
|
240
|
+
if (diff !== 0)
|
|
241
|
+
throw new GrantexTokenError('Grant token cnf.jkt does not match the proof key');
|
|
242
|
+
}
|
|
243
|
+
const NON_NULLABLE_CLAIMS = [GRANT_CLAIM, 'scope', 'scp', 'act', 'cnf', 'client_id', 'aud', 'authorization_details'];
|
|
244
|
+
function normalizeGrantClaims(payload, legacyClaims) {
|
|
245
|
+
// A claim present with a null value is refused, never treated as absent.
|
|
246
|
+
for (const name of NON_NULLABLE_CLAIMS) {
|
|
247
|
+
if (payload[name] === null)
|
|
248
|
+
throw new GrantexTokenError(`Grant token claim ${name} must not be null`);
|
|
249
|
+
}
|
|
250
|
+
const used = [];
|
|
251
|
+
const read = (alias, standard, legacy) => {
|
|
252
|
+
if (!legacyClaims)
|
|
253
|
+
return standard;
|
|
254
|
+
const aliasValue = legacy();
|
|
255
|
+
if (standard !== undefined && aliasValue !== undefined
|
|
256
|
+
&& JSON.stringify(standard) !== JSON.stringify(aliasValue)) {
|
|
257
|
+
throw new GrantexTokenError(`Grant token claim ${LEGACY_CLAIM_ALIASES[alias]} disagrees with its legacy alias ${alias}`);
|
|
258
|
+
}
|
|
259
|
+
if (standard === undefined && aliasValue !== undefined)
|
|
260
|
+
used.push(alias);
|
|
261
|
+
return standard ?? aliasValue;
|
|
262
|
+
};
|
|
263
|
+
const rawGrant = payload[GRANT_CLAIM];
|
|
264
|
+
if (rawGrant !== undefined && !isPlainObject(rawGrant)) {
|
|
265
|
+
throw new GrantexTokenError(`Grant token claim ${GRANT_CLAIM} must be an object`);
|
|
266
|
+
}
|
|
267
|
+
const grant = rawGrant ?? {};
|
|
268
|
+
const rawScope = payload['scope'];
|
|
269
|
+
if (rawScope !== undefined && typeof rawScope !== 'string') {
|
|
270
|
+
throw new GrantexTokenError('Grant token claim scope must be a space-delimited string');
|
|
271
|
+
}
|
|
272
|
+
const legacyScopes = () => {
|
|
273
|
+
const scp = payload['scp'];
|
|
274
|
+
if (scp === undefined)
|
|
275
|
+
return undefined;
|
|
276
|
+
if (!Array.isArray(scp) || scp.some((s) => typeof s !== 'string')) {
|
|
277
|
+
throw new GrantexTokenError('Grant token claim scp must be an array of strings');
|
|
278
|
+
}
|
|
279
|
+
return scp;
|
|
280
|
+
};
|
|
281
|
+
let scopes;
|
|
282
|
+
if (legacyClaims && rawGrant === undefined && payload['scp'] !== undefined) {
|
|
283
|
+
// A pre-0.6 token: scope, when present, is a lossy join of scp.
|
|
284
|
+
scopes = legacyScopes();
|
|
285
|
+
used.push('scp');
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
scopes = read('scp', rawScope?.split(' ').filter((s) => s.length > 0), legacyScopes);
|
|
289
|
+
}
|
|
290
|
+
const agentDid = read('agt', stringClaim(grant, 'agent_did', `${GRANT_CLAIM}.agent_did`), () => stringClaim(payload, 'agt', 'agt'));
|
|
291
|
+
const developerId = read('dev', stringClaim(grant, 'developer_id', `${GRANT_CLAIM}.developer_id`), () => stringClaim(payload, 'dev', 'dev'));
|
|
292
|
+
const grantId = read('grnt', stringClaim(grant, 'grant_id', `${GRANT_CLAIM}.grant_id`), () => stringClaim(payload, 'grnt', 'grnt'));
|
|
293
|
+
const parentGrantId = read('parentGrnt', stringClaim(grant, 'parent_grant_id', `${GRANT_CLAIM}.parent_grant_id`), () => stringClaim(payload, 'parentGrnt', 'parentGrnt'));
|
|
294
|
+
const delegationDepth = read('delegationDepth', depthClaim(grant, 'delegation_depth', `${GRANT_CLAIM}.delegation_depth`), () => depthClaim(payload, 'delegationDepth', 'delegationDepth'));
|
|
295
|
+
const act = payload['act'] === undefined ? undefined : parseActor(payload['act']);
|
|
296
|
+
const parentAgentDid = read('parentAgt', parentGrantId !== undefined || delegationDepth !== undefined ? act?.sub : undefined, () => stringClaim(payload, 'parentAgt', 'parentAgt'));
|
|
297
|
+
const jti = payload['jti'];
|
|
298
|
+
const sub = payload['sub'];
|
|
299
|
+
const iat = payload['iat'];
|
|
300
|
+
const exp = payload['exp'];
|
|
301
|
+
if (typeof jti !== 'string' || typeof sub !== 'string' || typeof iat !== 'number' || typeof exp !== 'number'
|
|
302
|
+
|| scopes === undefined || agentDid === undefined || developerId === undefined) {
|
|
303
|
+
throw new GrantexTokenError(legacyClaims
|
|
304
|
+
? 'Grant token is missing required claims (jti, sub, iat, exp, scope or scp, agent_did or agt, developer_id or dev)'
|
|
305
|
+
: `Grant token is missing required claims (jti, sub, iat, exp, scope, ${GRANT_CLAIM}.agent_did, ${GRANT_CLAIM}.developer_id)`);
|
|
306
|
+
}
|
|
307
|
+
const clientId = payload['client_id'];
|
|
308
|
+
if (clientId !== undefined && (typeof clientId !== 'string' || clientId.length === 0)) {
|
|
309
|
+
throw new GrantexTokenError('Grant token claim client_id must be a non-empty string');
|
|
310
|
+
}
|
|
311
|
+
const cnf = payload['cnf'];
|
|
312
|
+
if (cnf !== undefined && !isPlainObject(cnf)) {
|
|
313
|
+
throw new GrantexTokenError('Grant token claim cnf must be an object');
|
|
314
|
+
}
|
|
315
|
+
const aud = payload['aud'];
|
|
316
|
+
if (aud !== undefined && typeof aud !== 'string'
|
|
317
|
+
&& !(Array.isArray(aud) && aud.every((value) => typeof value === 'string'))) {
|
|
318
|
+
throw new GrantexTokenError('Grant token claim aud must be a string or an array of strings');
|
|
116
319
|
}
|
|
117
320
|
return {
|
|
118
|
-
tokenId:
|
|
119
|
-
grantId:
|
|
120
|
-
principalId:
|
|
121
|
-
agentDid
|
|
122
|
-
developerId
|
|
123
|
-
...(
|
|
124
|
-
scopes
|
|
125
|
-
issuedAt:
|
|
126
|
-
expiresAt:
|
|
127
|
-
...(
|
|
128
|
-
...(
|
|
129
|
-
...(
|
|
321
|
+
tokenId: jti,
|
|
322
|
+
grantId: grantId ?? jti,
|
|
323
|
+
principalId: sub,
|
|
324
|
+
agentDid,
|
|
325
|
+
developerId,
|
|
326
|
+
...(typeof clientId === 'string' ? { clientId } : {}),
|
|
327
|
+
scopes,
|
|
328
|
+
issuedAt: iat,
|
|
329
|
+
expiresAt: exp,
|
|
330
|
+
...(parentAgentDid !== undefined ? { parentAgentDid } : {}),
|
|
331
|
+
...(parentGrantId !== undefined ? { parentGrantId } : {}),
|
|
332
|
+
...(delegationDepth !== undefined ? { delegationDepth } : {}),
|
|
333
|
+
...(payload['authorization_details'] !== undefined
|
|
334
|
+
? { authorizationDetails: payload['authorization_details'] }
|
|
335
|
+
: {}),
|
|
336
|
+
...(act !== undefined ? { act } : {}),
|
|
337
|
+
...(cnf !== undefined ? { cnf: cnf } : {}),
|
|
338
|
+
...(typeof aud === 'string' || Array.isArray(aud) ? { audience: aud } : {}),
|
|
339
|
+
...(used.length > 0 ? { legacyClaimsUsed: used } : {}),
|
|
130
340
|
};
|
|
131
341
|
}
|
|
132
|
-
function payloadToVerifiedGrant(payload) {
|
|
133
|
-
return claimsToVerifiedGrant(payload);
|
|
134
|
-
}
|
|
135
342
|
//# sourceMappingURL=verify.js.map
|
package/dist/verify.js.map
CHANGED
|
@@ -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": "@grantex/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "TypeScript SDK for the Grantex delegated authorization protocol",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Sanjeev Kumar",
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
"import": "./dist/index.js",
|
|
18
18
|
"types": "./dist/index.d.ts"
|
|
19
19
|
},
|
|
20
|
+
"./evidence": {
|
|
21
|
+
"import": "./dist/evidence/index.js",
|
|
22
|
+
"types": "./dist/evidence/index.d.ts"
|
|
23
|
+
},
|
|
20
24
|
"./manifests/*": {
|
|
21
25
|
"import": "./dist/manifests/*.js",
|
|
22
26
|
"types": "./dist/manifests/*.d.ts"
|
|
@@ -30,7 +34,8 @@
|
|
|
30
34
|
"types": "./dist/index.d.ts",
|
|
31
35
|
"files": [
|
|
32
36
|
"dist",
|
|
33
|
-
"README.md"
|
|
37
|
+
"README.md",
|
|
38
|
+
"NOTICE"
|
|
34
39
|
],
|
|
35
40
|
"scripts": {
|
|
36
41
|
"build": "tsc -p tsconfig.build.json",
|
|
@@ -46,9 +51,13 @@
|
|
|
46
51
|
},
|
|
47
52
|
"devDependencies": {
|
|
48
53
|
"@types/node": "^26.0.0",
|
|
49
|
-
"@
|
|
54
|
+
"@types/pg": "^8.23.1",
|
|
55
|
+
"@vitest/coverage-v8": "^5.0.0",
|
|
56
|
+
"ajv": "^8.20.0",
|
|
57
|
+
"ioredis": "^6.0.0",
|
|
58
|
+
"pg": "^8.23.0",
|
|
50
59
|
"typescript": "^7.0.2",
|
|
51
|
-
"vitest": "^
|
|
60
|
+
"vitest": "^5.0.0"
|
|
52
61
|
},
|
|
53
62
|
"engines": {
|
|
54
63
|
"node": ">=18.0.0"
|