@pagopa/io-react-native-jwt 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/lib/commonjs/jwk/index.js +26 -1
- package/lib/commonjs/jwk/index.js.map +1 -1
- package/lib/commonjs/jwt/index.js +49 -3
- package/lib/commonjs/jwt/index.js.map +1 -1
- package/lib/commonjs/types.js +63 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/errors.js +23 -1
- package/lib/commonjs/utils/errors.js.map +1 -1
- package/lib/module/jwk/index.js +25 -0
- package/lib/module/jwk/index.js.map +1 -1
- package/lib/module/jwt/index.js +47 -3
- package/lib/module/jwt/index.js.map +1 -1
- package/lib/module/types.js +56 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/errors.js +20 -0
- package/lib/module/utils/errors.js.map +1 -1
- package/lib/typescript/jwk/index.d.ts +9 -1
- package/lib/typescript/jwk/index.d.ts.map +1 -1
- package/lib/typescript/jwt/index.d.ts +31 -3
- package/lib/typescript/jwt/index.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +328 -31
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/errors.d.ts +14 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/jwk/index.ts +28 -1
- package/src/jwt/index.ts +58 -5
- package/src/types.ts +43 -32
- package/src/utils/errors.ts +22 -0
package/README.md
CHANGED
|
@@ -52,6 +52,20 @@ const {protectedHeader, payload} = await verify(jwt, pubJwk, options);
|
|
|
52
52
|
console.log(protectedHeader, payload)
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
+
### Verify JWT with JWKS fetched from remote URL
|
|
56
|
+
|
|
57
|
+
```js
|
|
58
|
+
import { verify, getRemoteJWKSet } from '@pagopa/io-react-native-jwt';
|
|
59
|
+
|
|
60
|
+
// ...
|
|
61
|
+
const wellKnownUrl = 'https://example.com/.well-known/openid-federation';
|
|
62
|
+
const jwks = await getRemoteJWKSet(wellKnownUrl);
|
|
63
|
+
|
|
64
|
+
const jwt = "eyJ0eXAiOiJlbnRpdHktc3.....";
|
|
65
|
+
|
|
66
|
+
const {protectedHeader, payload} = await verify(jwt, jwks);
|
|
67
|
+
console.log(protectedHeader, payload)
|
|
68
|
+
```
|
|
55
69
|
|
|
56
70
|
### Verify a JWT signature (JWS)
|
|
57
71
|
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.thumbprint = void 0;
|
|
6
|
+
exports.thumbprint = exports.getRemoteJWKSet = void 0;
|
|
7
7
|
var _proxy = require("../utils/proxy");
|
|
8
|
+
var _types = require("../types");
|
|
9
|
+
var _errors = require("../utils/errors");
|
|
10
|
+
var _ = require("..");
|
|
8
11
|
/**
|
|
9
12
|
* Calculate JWK thumbprint
|
|
10
13
|
*
|
|
@@ -25,5 +28,27 @@ var _proxy = require("../utils/proxy");
|
|
|
25
28
|
* @param jwk JSON Web Key
|
|
26
29
|
*/
|
|
27
30
|
const thumbprint = jwk => _proxy.IoReactNativeJwt.thumbprint(jwk);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Returns a JSON Web Key Set (JWKS) downloaded from a remote endpoint,
|
|
34
|
+
* that is, for example, an OAuth 2.0 or OIDC jwks_uri.
|
|
35
|
+
*
|
|
36
|
+
* @param url URL string to fetch the JSON Web Key Set from.
|
|
37
|
+
* @param appFetch fetch function (optional)
|
|
38
|
+
*/
|
|
28
39
|
exports.thumbprint = thumbprint;
|
|
40
|
+
const getRemoteJWKSet = async function (url) {
|
|
41
|
+
let appFetch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : fetch;
|
|
42
|
+
let response = await appFetch(url);
|
|
43
|
+
if (response.status === 200) {
|
|
44
|
+
const jwt = await response.text();
|
|
45
|
+
const {
|
|
46
|
+
payload
|
|
47
|
+
} = await (0, _.decode)(jwt);
|
|
48
|
+
const parsedPayload = _types.WithJWKS.parse(payload);
|
|
49
|
+
return parsedPayload.jwks.keys;
|
|
50
|
+
}
|
|
51
|
+
throw new _errors.JWKSetInvalid(`Unable to obtain JWKSet from given url. Response status: ${response.status}`);
|
|
52
|
+
};
|
|
53
|
+
exports.getRemoteJWKSet = getRemoteJWKSet;
|
|
29
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_proxy","require","thumbprint","jwk","IoReactNativeJwt","exports"],"sourceRoot":"../../../src","sources":["jwk/index.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_proxy","require","_types","_errors","_","thumbprint","jwk","IoReactNativeJwt","exports","getRemoteJWKSet","url","appFetch","arguments","length","undefined","fetch","response","status","jwt","text","payload","decode","parsedPayload","WithJWKS","parse","jwks","keys","JWKSetInvalid"],"sourceRoot":"../../../src","sources":["jwk/index.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,CAAA,GAAAH,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,UAAU,GAAIC,GAAQ,IACjCC,uBAAgB,CAACF,UAAU,CAACC,GAAG,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AANAE,OAAA,CAAAH,UAAA,GAAAA,UAAA;AAOO,MAAMI,eAAe,GAAG,eAAAA,CAC7BC,GAAW,EAEQ;EAAA,IADnBC,QAA8B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,KAAK;EAEtC,IAAIC,QAAQ,GAAG,MAAML,QAAQ,CAACD,GAAG,CAAC;EAElC,IAAIM,QAAQ,CAACC,MAAM,KAAK,GAAG,EAAE;IAC3B,MAAMC,GAAG,GAAG,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;IACjC,MAAM;MAAEC;IAAQ,CAAC,GAAG,MAAM,IAAAC,QAAM,EAACH,GAAG,CAAC;IACrC,MAAMI,aAAa,GAAGC,eAAQ,CAACC,KAAK,CAACJ,OAAO,CAAC;IAC7C,OAAOE,aAAa,CAACG,IAAI,CAACC,IAAI;EAChC;EAEA,MAAM,IAAIC,qBAAa,CACpB,4DAA2DX,QAAQ,CAACC,MAAO,EAC9E,CAAC;AACH,CAAC;AAACT,OAAA,CAAAC,eAAA,GAAAA,eAAA"}
|
|
@@ -7,6 +7,7 @@ var _exportNames = {
|
|
|
7
7
|
decode: true,
|
|
8
8
|
isSignatureValid: true,
|
|
9
9
|
verify: true,
|
|
10
|
+
getJwkFromHeader: true,
|
|
10
11
|
derToJose: true,
|
|
11
12
|
encodeBase64: true,
|
|
12
13
|
decodeBase64: true,
|
|
@@ -31,7 +32,7 @@ Object.defineProperty(exports, "encodeBase64", {
|
|
|
31
32
|
return _base.encodeBase64;
|
|
32
33
|
}
|
|
33
34
|
});
|
|
34
|
-
exports.isSignatureValid = void 0;
|
|
35
|
+
exports.isSignatureValid = exports.getJwkFromHeader = void 0;
|
|
35
36
|
Object.defineProperty(exports, "sha256ToBase64", {
|
|
36
37
|
enumerable: true,
|
|
37
38
|
get: function () {
|
|
@@ -54,6 +55,7 @@ Object.keys(_sign).forEach(function (key) {
|
|
|
54
55
|
}
|
|
55
56
|
});
|
|
56
57
|
});
|
|
58
|
+
var _algorithms = require("../algorithms");
|
|
57
59
|
var _produce = require("./produce");
|
|
58
60
|
Object.keys(_produce).forEach(function (key) {
|
|
59
61
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -145,8 +147,23 @@ const isSignatureValid = (token, jwk) => _proxy.IoReactNativeJwt.verify(token, j
|
|
|
145
147
|
* })
|
|
146
148
|
* ```
|
|
147
149
|
*
|
|
150
|
+
* * @example Usage with a JWKSet
|
|
151
|
+
*
|
|
152
|
+
* ```js
|
|
153
|
+
* const wellKnownUrl = 'https://example.com/.well-known/openid-federation';
|
|
154
|
+
* const jwks = await getRemoteJWKSet(wellKnownUrl);
|
|
155
|
+
*
|
|
156
|
+
* const jwt =
|
|
157
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
158
|
+
*
|
|
159
|
+
* const { payload, protectedHeader } = await verify(jwt, jwks, {
|
|
160
|
+
* typ: 'entity-statement+jwt',
|
|
161
|
+
* requiredClaims: ['iss', 'sub', 'metadata'],
|
|
162
|
+
* })
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
148
165
|
* @param jwt JSON Web Token value (encoded as JWS).
|
|
149
|
-
* @param key Public key to verify the JWT in JWK format.
|
|
166
|
+
* @param key Public key to verify the JWT in JWK format or JWKS (array of JWK).
|
|
150
167
|
* @param options JWT Decryption and JWT Claims Set validation options.
|
|
151
168
|
*/
|
|
152
169
|
exports.isSignatureValid = isSignatureValid;
|
|
@@ -156,7 +173,8 @@ const verify = async function (token, jwk) {
|
|
|
156
173
|
protectedHeader,
|
|
157
174
|
payload
|
|
158
175
|
} = await decode(token);
|
|
159
|
-
const
|
|
176
|
+
const selectedJwk = Array.isArray(jwk) ? getJwkFromHeader(protectedHeader, jwk) : jwk;
|
|
177
|
+
const signatureIsValid = await isSignatureValid(token, selectedJwk);
|
|
160
178
|
if (signatureIsValid) {
|
|
161
179
|
const verifiedPayload = (0, _jwt_claims_set.default)(protectedHeader, payload, options);
|
|
162
180
|
return {
|
|
@@ -167,5 +185,33 @@ const verify = async function (token, jwk) {
|
|
|
167
185
|
throw new _errors.JWSSignatureVerificationFailed();
|
|
168
186
|
}
|
|
169
187
|
};
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Given the header of a JWT return the corresponding key from a JWKS.
|
|
191
|
+
*
|
|
192
|
+
* It uses the "alg" (JWS Algorithm) Header Parameter to determine the right JWK "kty" (Key Type),
|
|
193
|
+
* then proceeds to match the JWK "kid" (Key ID) with one found in the JWS Header Parameters (if
|
|
194
|
+
* there is one).
|
|
195
|
+
* Only a single public key must match the selection process.
|
|
196
|
+
*
|
|
197
|
+
* @param header JWT header
|
|
198
|
+
* @param jwks Json Web Key Set (JWKS)
|
|
199
|
+
*
|
|
200
|
+
*/
|
|
170
201
|
exports.verify = verify;
|
|
202
|
+
const getJwkFromHeader = (header, jwks) => {
|
|
203
|
+
const {
|
|
204
|
+
alg,
|
|
205
|
+
kid
|
|
206
|
+
} = header;
|
|
207
|
+
if (alg && kid) {
|
|
208
|
+
const kty = (0, _algorithms.getKtyFromAlg)(alg);
|
|
209
|
+
const filteredJwks = jwks.find(el => el.kty === kty && el.kid === kid);
|
|
210
|
+
if (filteredJwks) {
|
|
211
|
+
return filteredJwks;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
throw new _errors.JWKNotFound(`No JWKs found that match alg:${alg} and kid:${kid}`);
|
|
215
|
+
};
|
|
216
|
+
exports.getJwkFromHeader = getJwkFromHeader;
|
|
171
217
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_jwt_claims_set","_interopRequireDefault","require","_errors","_proxy","_sign","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_produce","_unsecured","_asn","_base","_hash","obj","__esModule","default","decode","token","SignJWT","isSignatureValid","jwk","IoReactNativeJwt","verify","options","arguments","length","undefined","protectedHeader","payload","signatureIsValid","verifiedPayload","jwtPayload","JWSSignatureVerificationFailed"],"sourceRoot":"../../../src","sources":["jwt/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_jwt_claims_set","_interopRequireDefault","require","_errors","_proxy","_sign","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_algorithms","_produce","_unsecured","_asn","_base","_hash","obj","__esModule","default","decode","token","SignJWT","isSignatureValid","jwk","IoReactNativeJwt","verify","options","arguments","length","undefined","protectedHeader","payload","selectedJwk","Array","isArray","getJwkFromHeader","signatureIsValid","verifiedPayload","jwtPayload","JWSSignatureVerificationFailed","header","jwks","alg","kid","kty","getKtyFromAlg","filteredJwks","find","el","JWKNotFound"],"sourceRoot":"../../../src","sources":["jwt/index.ts"],"mappings":"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"}
|
package/lib/commonjs/types.js
CHANGED
|
@@ -1,2 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.WithJWKS = exports.JWK = void 0;
|
|
7
|
+
var _zod = require("zod");
|
|
8
|
+
/** Recognized JWS Header Parameters, any other Header Members may also be present. */
|
|
9
|
+
|
|
10
|
+
/** Recognized Compact JWS Header Parameters, any other Header Members may also be present. */
|
|
11
|
+
|
|
12
|
+
/** Recognized JWE Header Parameters, any other Header members may also be present. */
|
|
13
|
+
|
|
14
|
+
/** Recognized JWT Claims Set members, any other members may also be present. */
|
|
15
|
+
|
|
16
|
+
/** JWT Claims Set verification options. */
|
|
17
|
+
|
|
18
|
+
const JWK = _zod.z.object({
|
|
19
|
+
'alg': _zod.z.string().optional(),
|
|
20
|
+
'crv': _zod.z.string().optional(),
|
|
21
|
+
'd': _zod.z.string().optional(),
|
|
22
|
+
'dp': _zod.z.string().optional(),
|
|
23
|
+
'dq': _zod.z.string().optional(),
|
|
24
|
+
'e': _zod.z.string().optional(),
|
|
25
|
+
/** JWK "ext" (Extractable) Parameter. */
|
|
26
|
+
'ext': _zod.z.boolean().optional(),
|
|
27
|
+
'k': _zod.z.string().optional(),
|
|
28
|
+
/** JWK "key_ops" (Key Operations) Parameter. */
|
|
29
|
+
'key_ops': _zod.z.array(_zod.z.string()).optional(),
|
|
30
|
+
/** JWK "kid" (Key ID) Parameter. */
|
|
31
|
+
'kid': _zod.z.string().optional(),
|
|
32
|
+
/** JWK "kty" (Key Type) Parameter.
|
|
33
|
+
* This attribute is required to discriminate the
|
|
34
|
+
* type of EC/RSA algorithm */
|
|
35
|
+
'kty': _zod.z.string(),
|
|
36
|
+
'n': _zod.z.string().optional(),
|
|
37
|
+
'oth': _zod.z.array(_zod.z.object({
|
|
38
|
+
d: _zod.z.string().optional(),
|
|
39
|
+
r: _zod.z.string().optional(),
|
|
40
|
+
t: _zod.z.string().optional()
|
|
41
|
+
})).optional(),
|
|
42
|
+
'p': _zod.z.string().optional(),
|
|
43
|
+
'q': _zod.z.string().optional(),
|
|
44
|
+
'qi': _zod.z.string().optional(),
|
|
45
|
+
/** JWK "use" (Public Key Use) Parameter. */
|
|
46
|
+
'use': _zod.z.string().optional(),
|
|
47
|
+
'x': _zod.z.string().optional(),
|
|
48
|
+
'y': _zod.z.string().optional(),
|
|
49
|
+
/** JWK "x5c" (X.509 Certificate Chain) Parameter. */
|
|
50
|
+
'x5c': _zod.z.array(_zod.z.string()).optional(),
|
|
51
|
+
/** JWK "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter. */
|
|
52
|
+
'x5t': _zod.z.string().optional(),
|
|
53
|
+
/** "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Parameter. */
|
|
54
|
+
'x5t#S256': _zod.z.string().optional(),
|
|
55
|
+
/** JWK "x5u" (X.509 URL) Parameter. */
|
|
56
|
+
'x5u': _zod.z.string().optional()
|
|
57
|
+
});
|
|
58
|
+
exports.JWK = JWK;
|
|
59
|
+
const WithJWKS = _zod.z.object({
|
|
60
|
+
jwks: _zod.z.object({
|
|
61
|
+
keys: _zod.z.array(JWK)
|
|
62
|
+
})
|
|
63
|
+
});
|
|
64
|
+
exports.WithJWKS = WithJWKS;
|
|
2
65
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":""}
|
|
1
|
+
{"version":3,"names":["_zod","require","JWK","z","object","string","optional","boolean","array","d","r","t","exports","WithJWKS","jwks","keys"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.JWTInvalid = exports.JWTExpired = exports.JWTClaimValidationFailed = exports.JWSSignatureVerificationFailed = exports.JWSInvalid = exports.JWEInvalid = exports.JOSENotSupported = exports.JOSEError = exports.JOSEAlgNotAllowed = void 0;
|
|
6
|
+
exports.JWTInvalid = exports.JWTExpired = exports.JWTClaimValidationFailed = exports.JWSSignatureVerificationFailed = exports.JWSInvalid = exports.JWKSetInvalid = exports.JWKNotFound = exports.JWEInvalid = exports.JOSENotSupported = exports.JOSEError = exports.JOSEAlgNotAllowed = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* A generic Error that all other JOSE specific Error subclasses extend.
|
|
9
9
|
*
|
|
@@ -237,5 +237,27 @@ class JWEInvalid extends JOSEError {
|
|
|
237
237
|
}
|
|
238
238
|
code = 'ERR_JWE_INVALID';
|
|
239
239
|
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* An error subclass thrown when a JWKSet is invalid.
|
|
243
|
+
*/
|
|
240
244
|
exports.JWEInvalid = JWEInvalid;
|
|
245
|
+
class JWKSetInvalid extends JOSEError {
|
|
246
|
+
static get code() {
|
|
247
|
+
return 'ERR_JWKS_INVALID';
|
|
248
|
+
}
|
|
249
|
+
code = 'ERR_JWKS_INVALID';
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* An error subclass thrown when a JWK is not found.
|
|
254
|
+
*/
|
|
255
|
+
exports.JWKSetInvalid = JWKSetInvalid;
|
|
256
|
+
class JWKNotFound extends JOSEError {
|
|
257
|
+
static get code() {
|
|
258
|
+
return 'ERR_JWK_NOT_FOUND';
|
|
259
|
+
}
|
|
260
|
+
code = 'ERR_JWK_NOT_FOUND';
|
|
261
|
+
}
|
|
262
|
+
exports.JWKNotFound = JWKNotFound;
|
|
241
263
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","exports","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","exports","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid","JWKSetInvalid","JWKNotFound"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
|
package/lib/module/jwk/index.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { IoReactNativeJwt } from '../utils/proxy';
|
|
2
|
+
import { WithJWKS } from '../types';
|
|
3
|
+
import { JWKSetInvalid } from '../utils/errors';
|
|
4
|
+
import { decode } from '..';
|
|
5
|
+
|
|
2
6
|
/**
|
|
3
7
|
* Calculate JWK thumbprint
|
|
4
8
|
*
|
|
@@ -19,4 +23,25 @@ import { IoReactNativeJwt } from '../utils/proxy';
|
|
|
19
23
|
* @param jwk JSON Web Key
|
|
20
24
|
*/
|
|
21
25
|
export const thumbprint = jwk => IoReactNativeJwt.thumbprint(jwk);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Returns a JSON Web Key Set (JWKS) downloaded from a remote endpoint,
|
|
29
|
+
* that is, for example, an OAuth 2.0 or OIDC jwks_uri.
|
|
30
|
+
*
|
|
31
|
+
* @param url URL string to fetch the JSON Web Key Set from.
|
|
32
|
+
* @param appFetch fetch function (optional)
|
|
33
|
+
*/
|
|
34
|
+
export const getRemoteJWKSet = async function (url) {
|
|
35
|
+
let appFetch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : fetch;
|
|
36
|
+
let response = await appFetch(url);
|
|
37
|
+
if (response.status === 200) {
|
|
38
|
+
const jwt = await response.text();
|
|
39
|
+
const {
|
|
40
|
+
payload
|
|
41
|
+
} = await decode(jwt);
|
|
42
|
+
const parsedPayload = WithJWKS.parse(payload);
|
|
43
|
+
return parsedPayload.jwks.keys;
|
|
44
|
+
}
|
|
45
|
+
throw new JWKSetInvalid(`Unable to obtain JWKSet from given url. Response status: ${response.status}`);
|
|
46
|
+
};
|
|
22
47
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["IoReactNativeJwt","thumbprint","jwk"],"sourceRoot":"../../../src","sources":["jwk/index.ts"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"names":["IoReactNativeJwt","WithJWKS","JWKSetInvalid","decode","thumbprint","jwk","getRemoteJWKSet","url","appFetch","arguments","length","undefined","fetch","response","status","jwt","text","payload","parsedPayload","parse","jwks","keys"],"sourceRoot":"../../../src","sources":["jwk/index.ts"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,QAAQ,QAAa,UAAU;AACxC,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,MAAM,QAAQ,IAAI;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,GAAQ,IACjCL,gBAAgB,CAACI,UAAU,CAACC,GAAG,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAG,eAAAA,CAC7BC,GAAW,EAEQ;EAAA,IADnBC,QAA8B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,KAAK;EAEtC,IAAIC,QAAQ,GAAG,MAAML,QAAQ,CAACD,GAAG,CAAC;EAElC,IAAIM,QAAQ,CAACC,MAAM,KAAK,GAAG,EAAE;IAC3B,MAAMC,GAAG,GAAG,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;IACjC,MAAM;MAAEC;IAAQ,CAAC,GAAG,MAAMd,MAAM,CAACY,GAAG,CAAC;IACrC,MAAMG,aAAa,GAAGjB,QAAQ,CAACkB,KAAK,CAACF,OAAO,CAAC;IAC7C,OAAOC,aAAa,CAACE,IAAI,CAACC,IAAI;EAChC;EAEA,MAAM,IAAInB,aAAa,CACpB,4DAA2DW,QAAQ,CAACC,MAAO,EAC9E,CAAC;AACH,CAAC"}
|
package/lib/module/jwt/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import jwtPayload from './jwt_claims_set';
|
|
2
|
-
import { JWSSignatureVerificationFailed } from '../utils/errors';
|
|
2
|
+
import { JWKNotFound, JWSSignatureVerificationFailed } from '../utils/errors';
|
|
3
3
|
import { IoReactNativeJwt } from '../utils/proxy';
|
|
4
4
|
import { SignJWT } from './sign';
|
|
5
|
+
import { getKtyFromAlg } from '../algorithms';
|
|
5
6
|
export * from './produce';
|
|
6
7
|
export * from './sign';
|
|
7
8
|
export * from './unsecured';
|
|
@@ -70,8 +71,23 @@ export const isSignatureValid = (token, jwk) => IoReactNativeJwt.verify(token, j
|
|
|
70
71
|
* })
|
|
71
72
|
* ```
|
|
72
73
|
*
|
|
74
|
+
* * @example Usage with a JWKSet
|
|
75
|
+
*
|
|
76
|
+
* ```js
|
|
77
|
+
* const wellKnownUrl = 'https://example.com/.well-known/openid-federation';
|
|
78
|
+
* const jwks = await getRemoteJWKSet(wellKnownUrl);
|
|
79
|
+
*
|
|
80
|
+
* const jwt =
|
|
81
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
82
|
+
*
|
|
83
|
+
* const { payload, protectedHeader } = await verify(jwt, jwks, {
|
|
84
|
+
* typ: 'entity-statement+jwt',
|
|
85
|
+
* requiredClaims: ['iss', 'sub', 'metadata'],
|
|
86
|
+
* })
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
73
89
|
* @param jwt JSON Web Token value (encoded as JWS).
|
|
74
|
-
* @param key Public key to verify the JWT in JWK format.
|
|
90
|
+
* @param key Public key to verify the JWT in JWK format or JWKS (array of JWK).
|
|
75
91
|
* @param options JWT Decryption and JWT Claims Set validation options.
|
|
76
92
|
*/
|
|
77
93
|
export const verify = async function (token, jwk) {
|
|
@@ -80,7 +96,8 @@ export const verify = async function (token, jwk) {
|
|
|
80
96
|
protectedHeader,
|
|
81
97
|
payload
|
|
82
98
|
} = await decode(token);
|
|
83
|
-
const
|
|
99
|
+
const selectedJwk = Array.isArray(jwk) ? getJwkFromHeader(protectedHeader, jwk) : jwk;
|
|
100
|
+
const signatureIsValid = await isSignatureValid(token, selectedJwk);
|
|
84
101
|
if (signatureIsValid) {
|
|
85
102
|
const verifiedPayload = jwtPayload(protectedHeader, payload, options);
|
|
86
103
|
return {
|
|
@@ -91,4 +108,31 @@ export const verify = async function (token, jwk) {
|
|
|
91
108
|
throw new JWSSignatureVerificationFailed();
|
|
92
109
|
}
|
|
93
110
|
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Given the header of a JWT return the corresponding key from a JWKS.
|
|
114
|
+
*
|
|
115
|
+
* It uses the "alg" (JWS Algorithm) Header Parameter to determine the right JWK "kty" (Key Type),
|
|
116
|
+
* then proceeds to match the JWK "kid" (Key ID) with one found in the JWS Header Parameters (if
|
|
117
|
+
* there is one).
|
|
118
|
+
* Only a single public key must match the selection process.
|
|
119
|
+
*
|
|
120
|
+
* @param header JWT header
|
|
121
|
+
* @param jwks Json Web Key Set (JWKS)
|
|
122
|
+
*
|
|
123
|
+
*/
|
|
124
|
+
export const getJwkFromHeader = (header, jwks) => {
|
|
125
|
+
const {
|
|
126
|
+
alg,
|
|
127
|
+
kid
|
|
128
|
+
} = header;
|
|
129
|
+
if (alg && kid) {
|
|
130
|
+
const kty = getKtyFromAlg(alg);
|
|
131
|
+
const filteredJwks = jwks.find(el => el.kty === kty && el.kid === kid);
|
|
132
|
+
if (filteredJwks) {
|
|
133
|
+
return filteredJwks;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
throw new JWKNotFound(`No JWKs found that match alg:${alg} and kid:${kid}`);
|
|
137
|
+
};
|
|
94
138
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jwtPayload","JWSSignatureVerificationFailed","IoReactNativeJwt","SignJWT","derToJose","encodeBase64","decodeBase64","sha256ToBase64","decode","token","isSignatureValid","jwk","verify","options","arguments","length","undefined","protectedHeader","payload","signatureIsValid","verifiedPayload"],"sourceRoot":"../../../src","sources":["jwt/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["jwtPayload","JWKNotFound","JWSSignatureVerificationFailed","IoReactNativeJwt","SignJWT","getKtyFromAlg","derToJose","encodeBase64","decodeBase64","sha256ToBase64","decode","token","isSignatureValid","jwk","verify","options","arguments","length","undefined","protectedHeader","payload","selectedJwk","Array","isArray","getJwkFromHeader","signatureIsValid","verifiedPayload","header","jwks","alg","kid","kty","filteredJwks","find","el"],"sourceRoot":"../../../src","sources":["jwt/index.ts"],"mappings":"AAKA,OAAOA,UAAU,MAAM,kBAAkB;AACzC,SAASC,WAAW,EAAEC,8BAA8B,QAAQ,iBAAiB;AAC7E,SAASC,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,OAAO,QAAQ,QAAQ;AAEhC,SAASC,aAAa,QAAQ,eAAe;AAE7C,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,YAAY,EAAEC,YAAY,QAAQ,iBAAiB;AAC5D,SAASC,cAAc,QAAQ,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAIC,KAAa,IAAsBP,OAAO,CAACM,MAAM,CAACC,KAAK,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAACD,KAAa,EAAEE,GAAQ,KACtDV,gBAAgB,CAACW,MAAM,CAACH,KAAK,EAAEE,GAAG,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAG,eAAAA,CACpBH,KAAa,EACbE,GAAgB,EAEa;EAAA,IAD7BE,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEzC,MAAM;IAAEG,eAAe;IAAEC;EAAQ,CAAC,GAAG,MAAMV,MAAM,CAACC,KAAK,CAAC;EAExD,MAAMU,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACV,GAAG,CAAC,GAClCW,gBAAgB,CAACL,eAAe,EAAEN,GAAG,CAAC,GACtCA,GAAG;EAEP,MAAMY,gBAAgB,GAAG,MAAMb,gBAAgB,CAACD,KAAK,EAAEU,WAAW,CAAC;EACnE,IAAII,gBAAgB,EAAE;IACpB,MAAMC,eAAe,GAAG1B,UAAU,CAACmB,eAAe,EAAEC,OAAO,EAAEL,OAAO,CAAC;IACrE,OAAO;MAAEK,OAAO,EAAEM,eAAe;MAAEP;IAAgB,CAAC;EACtD,CAAC,MAAM;IACL,MAAM,IAAIjB,8BAA8B,CAAC,CAAC;EAC5C;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMsB,gBAAgB,GAAGA,CAC9BG,MAA2B,EAC3BC,IAAW,KACH;EACR,MAAM;IAAEC,GAAG;IAAEC;EAAI,CAAC,GAAGH,MAAM;EAC3B,IAAIE,GAAG,IAAIC,GAAG,EAAE;IACd,MAAMC,GAAG,GAAG1B,aAAa,CAACwB,GAAG,CAAC;IAC9B,MAAMG,YAAY,GAAGJ,IAAI,CAACK,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACH,GAAG,KAAKA,GAAG,IAAIG,EAAE,CAACJ,GAAG,KAAKA,GAAG,CAAC;IAExE,IAAIE,YAAY,EAAE;MAChB,OAAOA,YAAY;IACrB;EACF;EAEA,MAAM,IAAI/B,WAAW,CAAE,gCAA+B4B,GAAI,YAAWC,GAAI,EAAC,CAAC;AAC7E,CAAC"}
|
package/lib/module/types.js
CHANGED
|
@@ -1,2 +1,58 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
|
|
3
|
+
/** Recognized JWS Header Parameters, any other Header Members may also be present. */
|
|
4
|
+
|
|
5
|
+
/** Recognized Compact JWS Header Parameters, any other Header Members may also be present. */
|
|
6
|
+
|
|
7
|
+
/** Recognized JWE Header Parameters, any other Header members may also be present. */
|
|
8
|
+
|
|
9
|
+
/** Recognized JWT Claims Set members, any other members may also be present. */
|
|
10
|
+
|
|
11
|
+
/** JWT Claims Set verification options. */
|
|
12
|
+
|
|
13
|
+
export const JWK = z.object({
|
|
14
|
+
'alg': z.string().optional(),
|
|
15
|
+
'crv': z.string().optional(),
|
|
16
|
+
'd': z.string().optional(),
|
|
17
|
+
'dp': z.string().optional(),
|
|
18
|
+
'dq': z.string().optional(),
|
|
19
|
+
'e': z.string().optional(),
|
|
20
|
+
/** JWK "ext" (Extractable) Parameter. */
|
|
21
|
+
'ext': z.boolean().optional(),
|
|
22
|
+
'k': z.string().optional(),
|
|
23
|
+
/** JWK "key_ops" (Key Operations) Parameter. */
|
|
24
|
+
'key_ops': z.array(z.string()).optional(),
|
|
25
|
+
/** JWK "kid" (Key ID) Parameter. */
|
|
26
|
+
'kid': z.string().optional(),
|
|
27
|
+
/** JWK "kty" (Key Type) Parameter.
|
|
28
|
+
* This attribute is required to discriminate the
|
|
29
|
+
* type of EC/RSA algorithm */
|
|
30
|
+
'kty': z.string(),
|
|
31
|
+
'n': z.string().optional(),
|
|
32
|
+
'oth': z.array(z.object({
|
|
33
|
+
d: z.string().optional(),
|
|
34
|
+
r: z.string().optional(),
|
|
35
|
+
t: z.string().optional()
|
|
36
|
+
})).optional(),
|
|
37
|
+
'p': z.string().optional(),
|
|
38
|
+
'q': z.string().optional(),
|
|
39
|
+
'qi': z.string().optional(),
|
|
40
|
+
/** JWK "use" (Public Key Use) Parameter. */
|
|
41
|
+
'use': z.string().optional(),
|
|
42
|
+
'x': z.string().optional(),
|
|
43
|
+
'y': z.string().optional(),
|
|
44
|
+
/** JWK "x5c" (X.509 Certificate Chain) Parameter. */
|
|
45
|
+
'x5c': z.array(z.string()).optional(),
|
|
46
|
+
/** JWK "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter. */
|
|
47
|
+
'x5t': z.string().optional(),
|
|
48
|
+
/** "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Parameter. */
|
|
49
|
+
'x5t#S256': z.string().optional(),
|
|
50
|
+
/** JWK "x5u" (X.509 URL) Parameter. */
|
|
51
|
+
'x5u': z.string().optional()
|
|
52
|
+
});
|
|
53
|
+
export const WithJWKS = z.object({
|
|
54
|
+
jwks: z.object({
|
|
55
|
+
keys: z.array(JWK)
|
|
56
|
+
})
|
|
57
|
+
});
|
|
2
58
|
//# sourceMappingURL=types.js.map
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":""}
|
|
1
|
+
{"version":3,"names":["z","JWK","object","string","optional","boolean","array","d","r","t","WithJWKS","jwks","keys"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"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"}
|
|
@@ -223,4 +223,24 @@ export class JWEInvalid extends JOSEError {
|
|
|
223
223
|
}
|
|
224
224
|
code = 'ERR_JWE_INVALID';
|
|
225
225
|
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* An error subclass thrown when a JWKSet is invalid.
|
|
229
|
+
*/
|
|
230
|
+
export class JWKSetInvalid extends JOSEError {
|
|
231
|
+
static get code() {
|
|
232
|
+
return 'ERR_JWKS_INVALID';
|
|
233
|
+
}
|
|
234
|
+
code = 'ERR_JWKS_INVALID';
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* An error subclass thrown when a JWK is not found.
|
|
239
|
+
*/
|
|
240
|
+
export class JWKNotFound extends JOSEError {
|
|
241
|
+
static get code() {
|
|
242
|
+
return 'ERR_JWK_NOT_FOUND';
|
|
243
|
+
}
|
|
244
|
+
code = 'ERR_JWK_NOT_FOUND';
|
|
245
|
+
}
|
|
226
246
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid","JWKSetInvalid","JWKNotFound"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { JWK } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* Calculate JWK thumbprint
|
|
4
4
|
*
|
|
@@ -19,4 +19,12 @@ import type { JWK } from '../types';
|
|
|
19
19
|
* @param jwk JSON Web Key
|
|
20
20
|
*/
|
|
21
21
|
export declare const thumbprint: (jwk: JWK) => Promise<string>;
|
|
22
|
+
/**
|
|
23
|
+
* Returns a JSON Web Key Set (JWKS) downloaded from a remote endpoint,
|
|
24
|
+
* that is, for example, an OAuth 2.0 or OIDC jwks_uri.
|
|
25
|
+
*
|
|
26
|
+
* @param url URL string to fetch the JSON Web Key Set from.
|
|
27
|
+
* @param appFetch fetch function (optional)
|
|
28
|
+
*/
|
|
29
|
+
export declare const getRemoteJWKSet: (url: string, appFetch?: GlobalFetch['fetch']) => Promise<JWK[]>;
|
|
22
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jwk/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jwk/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,GAAG,EAAE,MAAM,UAAU,CAAC;AAIzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,QAAS,GAAG,KAAG,QAAQ,MAAM,CAClB,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,QACrB,MAAM,aACD,WAAW,CAAC,OAAO,CAAC,KAC7B,QAAQ,GAAG,EAAE,CAaf,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { JWTClaimVerificationOptions, JWTDecodeResult } from '../types';
|
|
1
|
+
import type { JWSHeaderParameters, JWTClaimVerificationOptions, JWTDecodeResult } from '../types';
|
|
2
2
|
import type { JWK } from '../types';
|
|
3
3
|
export * from './produce';
|
|
4
4
|
export * from './sign';
|
|
@@ -66,9 +66,37 @@ export declare const isSignatureValid: (token: string, jwk: JWK) => Promise<bool
|
|
|
66
66
|
* })
|
|
67
67
|
* ```
|
|
68
68
|
*
|
|
69
|
+
* * @example Usage with a JWKSet
|
|
70
|
+
*
|
|
71
|
+
* ```js
|
|
72
|
+
* const wellKnownUrl = 'https://example.com/.well-known/openid-federation';
|
|
73
|
+
* const jwks = await getRemoteJWKSet(wellKnownUrl);
|
|
74
|
+
*
|
|
75
|
+
* const jwt =
|
|
76
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
77
|
+
*
|
|
78
|
+
* const { payload, protectedHeader } = await verify(jwt, jwks, {
|
|
79
|
+
* typ: 'entity-statement+jwt',
|
|
80
|
+
* requiredClaims: ['iss', 'sub', 'metadata'],
|
|
81
|
+
* })
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
69
84
|
* @param jwt JSON Web Token value (encoded as JWS).
|
|
70
|
-
* @param key Public key to verify the JWT in JWK format.
|
|
85
|
+
* @param key Public key to verify the JWT in JWK format or JWKS (array of JWK).
|
|
71
86
|
* @param options JWT Decryption and JWT Claims Set validation options.
|
|
72
87
|
*/
|
|
73
|
-
export declare const verify: (token: string, jwk: JWK, options?: JWTClaimVerificationOptions) => Promise<JWTDecodeResult>;
|
|
88
|
+
export declare const verify: (token: string, jwk: JWK | JWK[], options?: JWTClaimVerificationOptions) => Promise<JWTDecodeResult>;
|
|
89
|
+
/**
|
|
90
|
+
* Given the header of a JWT return the corresponding key from a JWKS.
|
|
91
|
+
*
|
|
92
|
+
* It uses the "alg" (JWS Algorithm) Header Parameter to determine the right JWK "kty" (Key Type),
|
|
93
|
+
* then proceeds to match the JWK "kid" (Key ID) with one found in the JWS Header Parameters (if
|
|
94
|
+
* there is one).
|
|
95
|
+
* Only a single public key must match the selection process.
|
|
96
|
+
*
|
|
97
|
+
* @param header JWT header
|
|
98
|
+
* @param jwks Json Web Key Set (JWKS)
|
|
99
|
+
*
|
|
100
|
+
*/
|
|
101
|
+
export declare const getJwkFromHeader: (header: JWSHeaderParameters, jwks: JWK[]) => JWK;
|
|
74
102
|
//# sourceMappingURL=index.d.ts.map
|