@opentdf/sdk 0.9.0-beta.91 → 0.9.0-beta.93
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/dist/cjs/src/access/access-fetch.js +1 -2
- package/dist/cjs/src/access/access-rpc.js +1 -3
- package/dist/cjs/src/access.js +1 -14
- package/dist/cjs/src/auth/auth.js +13 -10
- package/dist/cjs/src/auth/dpop.js +121 -0
- package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +37 -3
- package/dist/cjs/src/auth/oidc-externaljwt-provider.js +37 -3
- package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +37 -3
- package/dist/cjs/src/auth/oidc.js +10 -8
- package/dist/cjs/src/auth/providers.js +35 -12
- package/dist/cjs/src/crypto/index.js +16 -2
- package/dist/cjs/src/crypto/pemPublicToCrypto.js +17 -11
- package/dist/cjs/src/opentdf.js +40 -10
- package/dist/cjs/tdf3/index.js +4 -2
- package/dist/cjs/tdf3/src/assertions.js +71 -31
- package/dist/cjs/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
- package/dist/cjs/tdf3/src/ciphers/symmetric-cipher-base.js +4 -2
- package/dist/cjs/tdf3/src/client/index.js +23 -33
- package/dist/cjs/tdf3/src/crypto/crypto-utils.js +12 -5
- package/dist/cjs/tdf3/src/crypto/declarations.js +1 -1
- package/dist/cjs/tdf3/src/crypto/index.js +849 -88
- package/dist/cjs/tdf3/src/crypto/jose/jwt-claims-set.js +11 -0
- package/dist/cjs/tdf3/src/crypto/jose/validate-crit.js +8 -0
- package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/buffer_utils.js +41 -0
- package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/epoch.js +6 -0
- package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/is_object.js +21 -0
- package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.js +112 -0
- package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/secs.js +60 -0
- package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/validate_crit.js +38 -0
- package/dist/cjs/tdf3/src/crypto/jose/vendor/util/errors.js +135 -0
- package/dist/cjs/tdf3/src/crypto/jwt.js +183 -0
- package/dist/cjs/tdf3/src/crypto/salt.js +14 -8
- package/dist/cjs/tdf3/src/models/encryption-information.js +17 -20
- package/dist/cjs/tdf3/src/models/key-access.js +43 -63
- package/dist/cjs/tdf3/src/tdf.js +75 -75
- package/dist/cjs/tdf3/src/utils/index.js +5 -39
- package/dist/types/src/access/access-fetch.d.ts.map +1 -1
- package/dist/types/src/access/access-rpc.d.ts.map +1 -1
- package/dist/types/src/access.d.ts +0 -5
- package/dist/types/src/access.d.ts.map +1 -1
- package/dist/types/src/auth/auth.d.ts +9 -6
- package/dist/types/src/auth/auth.d.ts.map +1 -1
- package/dist/types/src/auth/dpop.d.ts +60 -0
- package/dist/types/src/auth/dpop.d.ts.map +1 -0
- package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts +3 -2
- package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts.map +1 -1
- package/dist/types/src/auth/oidc-externaljwt-provider.d.ts +3 -2
- package/dist/types/src/auth/oidc-externaljwt-provider.d.ts.map +1 -1
- package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts +3 -2
- package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts.map +1 -1
- package/dist/types/src/auth/oidc.d.ts +6 -4
- package/dist/types/src/auth/oidc.d.ts.map +1 -1
- package/dist/types/src/auth/providers.d.ts +5 -4
- package/dist/types/src/auth/providers.d.ts.map +1 -1
- package/dist/types/src/crypto/index.d.ts +2 -1
- package/dist/types/src/crypto/index.d.ts.map +1 -1
- package/dist/types/src/crypto/pemPublicToCrypto.d.ts +18 -0
- package/dist/types/src/crypto/pemPublicToCrypto.d.ts.map +1 -1
- package/dist/types/src/opentdf.d.ts +13 -4
- package/dist/types/src/opentdf.d.ts.map +1 -1
- package/dist/types/tdf3/index.d.ts +3 -3
- package/dist/types/tdf3/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/assertions.d.ts +23 -8
- package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
- package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts +3 -3
- package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts.map +1 -1
- package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts +4 -4
- package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts.map +1 -1
- package/dist/types/tdf3/src/client/builders.d.ts +2 -2
- package/dist/types/tdf3/src/client/builders.d.ts.map +1 -1
- package/dist/types/tdf3/src/client/index.d.ts +6 -5
- package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/crypto/crypto-utils.d.ts +14 -4
- package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -1
- package/dist/types/tdf3/src/crypto/declarations.d.ts +283 -18
- package/dist/types/tdf3/src/crypto/declarations.d.ts.map +1 -1
- package/dist/types/tdf3/src/crypto/index.d.ts +105 -28
- package/dist/types/tdf3/src/crypto/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/crypto/jose/jwt-claims-set.d.ts +3 -0
- package/dist/types/tdf3/src/crypto/jose/jwt-claims-set.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jose/validate-crit.d.ts +5 -0
- package/dist/types/tdf3/src/crypto/jose/validate-crit.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/buffer_utils.d.ts +6 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/buffer_utils.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/epoch.d.ts +3 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/epoch.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/is_object.d.ts +3 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/is_object.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.d.ts +3 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/secs.d.ts +3 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/secs.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/validate_crit.d.ts +3 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/lib/validate_crit.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/util/errors.d.ts +76 -0
- package/dist/types/tdf3/src/crypto/jose/vendor/util/errors.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/jwt.d.ts +76 -0
- package/dist/types/tdf3/src/crypto/jwt.d.ts.map +1 -0
- package/dist/types/tdf3/src/crypto/salt.d.ts +6 -1
- package/dist/types/tdf3/src/crypto/salt.d.ts.map +1 -1
- package/dist/types/tdf3/src/models/encryption-information.d.ts +4 -4
- package/dist/types/tdf3/src/models/encryption-information.d.ts.map +1 -1
- package/dist/types/tdf3/src/models/key-access.d.ts +8 -5
- package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -1
- package/dist/types/tdf3/src/tdf.d.ts +8 -8
- package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
- package/dist/types/tdf3/src/utils/index.d.ts +4 -3
- package/dist/types/tdf3/src/utils/index.d.ts.map +1 -1
- package/dist/web/src/access/access-fetch.js +3 -4
- package/dist/web/src/access/access-rpc.js +3 -5
- package/dist/web/src/access.js +1 -13
- package/dist/web/src/auth/auth.js +13 -10
- package/dist/web/src/auth/dpop.js +118 -0
- package/dist/web/src/auth/oidc-clientcredentials-provider.js +4 -3
- package/dist/web/src/auth/oidc-externaljwt-provider.js +4 -3
- package/dist/web/src/auth/oidc-refreshtoken-provider.js +4 -3
- package/dist/web/src/auth/oidc.js +11 -9
- package/dist/web/src/auth/providers.js +13 -12
- package/dist/web/src/crypto/index.js +4 -2
- package/dist/web/src/crypto/pemPublicToCrypto.js +11 -9
- package/dist/web/src/opentdf.js +7 -10
- package/dist/web/tdf3/index.js +3 -2
- package/dist/web/tdf3/src/assertions.js +71 -31
- package/dist/web/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
- package/dist/web/tdf3/src/ciphers/symmetric-cipher-base.js +4 -2
- package/dist/web/tdf3/src/client/index.js +25 -35
- package/dist/web/tdf3/src/crypto/crypto-utils.js +12 -5
- package/dist/web/tdf3/src/crypto/declarations.js +1 -1
- package/dist/web/tdf3/src/crypto/index.js +830 -84
- package/dist/web/tdf3/src/crypto/jose/jwt-claims-set.js +5 -0
- package/dist/web/tdf3/src/crypto/jose/validate-crit.js +3 -0
- package/dist/web/tdf3/src/crypto/jose/vendor/lib/buffer_utils.js +35 -0
- package/dist/web/tdf3/src/crypto/jose/vendor/lib/epoch.js +4 -0
- package/dist/web/tdf3/src/crypto/jose/vendor/lib/is_object.js +19 -0
- package/dist/web/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.js +107 -0
- package/dist/web/tdf3/src/crypto/jose/vendor/lib/secs.js +58 -0
- package/dist/web/tdf3/src/crypto/jose/vendor/lib/validate_crit.js +36 -0
- package/dist/web/tdf3/src/crypto/jose/vendor/util/errors.js +117 -0
- package/dist/web/tdf3/src/crypto/jwt.js +174 -0
- package/dist/web/tdf3/src/crypto/salt.js +13 -7
- package/dist/web/tdf3/src/models/encryption-information.js +11 -14
- package/dist/web/tdf3/src/models/key-access.js +44 -31
- package/dist/web/tdf3/src/tdf.js +71 -71
- package/dist/web/tdf3/src/utils/index.js +5 -6
- package/package.json +11 -4
- package/src/access/access-fetch.ts +2 -8
- package/src/access/access-rpc.ts +0 -7
- package/src/access.ts +0 -17
- package/src/auth/auth.ts +21 -12
- package/src/auth/dpop.ts +222 -0
- package/src/auth/oidc-clientcredentials-provider.ts +23 -15
- package/src/auth/oidc-externaljwt-provider.ts +23 -15
- package/src/auth/oidc-refreshtoken-provider.ts +23 -15
- package/src/auth/oidc.ts +21 -10
- package/src/auth/providers.ts +46 -29
- package/src/crypto/index.ts +21 -1
- package/src/crypto/pemPublicToCrypto.ts +11 -9
- package/src/opentdf.ts +19 -14
- package/tdf3/index.ts +32 -5
- package/tdf3/src/assertions.ts +99 -30
- package/tdf3/src/ciphers/aes-gcm-cipher.ts +7 -2
- package/tdf3/src/ciphers/symmetric-cipher-base.ts +7 -4
- package/tdf3/src/client/builders.ts +2 -2
- package/tdf3/src/client/index.ts +60 -59
- package/tdf3/src/crypto/crypto-utils.ts +15 -8
- package/tdf3/src/crypto/declarations.ts +338 -22
- package/tdf3/src/crypto/index.ts +1021 -118
- package/tdf3/src/crypto/jose/jwt-claims-set.ts +10 -0
- package/tdf3/src/crypto/jose/validate-crit.ts +9 -0
- package/tdf3/src/crypto/jose/vendor/lib/buffer_utils.ts +34 -0
- package/tdf3/src/crypto/jose/vendor/lib/epoch.ts +3 -0
- package/tdf3/src/crypto/jose/vendor/lib/is_object.ts +18 -0
- package/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.ts +106 -0
- package/tdf3/src/crypto/jose/vendor/lib/secs.ts +57 -0
- package/tdf3/src/crypto/jose/vendor/lib/validate_crit.ts +35 -0
- package/tdf3/src/crypto/jose/vendor/util/errors.ts +101 -0
- package/tdf3/src/crypto/jwt.ts +256 -0
- package/tdf3/src/crypto/salt.ts +16 -8
- package/tdf3/src/models/encryption-information.ts +14 -21
- package/tdf3/src/models/key-access.ts +57 -41
- package/tdf3/src/tdf.ts +110 -93
- package/tdf3/src/utils/index.ts +5 -6
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as WebCryptoService from '../crypto/index.js';
|
|
2
1
|
import { SplitKey } from '../models/index.js';
|
|
3
2
|
import { AesGcmCipher } from '../ciphers/aes-gcm-cipher.js';
|
|
4
3
|
import { ConfigurationError } from '../../../src/errors.js';
|
|
@@ -237,12 +236,12 @@ export function base64ToBytes(str) {
|
|
|
237
236
|
*
|
|
238
237
|
* @returns {Object}:
|
|
239
238
|
* {
|
|
240
|
-
* keyForEncryption:
|
|
241
|
-
* keyForManifest:
|
|
239
|
+
* keyForEncryption: KeyInfo;
|
|
240
|
+
* keyForManifest: KeyInfo;
|
|
242
241
|
* }
|
|
243
242
|
*/
|
|
244
|
-
export async function keyMiddleware() {
|
|
245
|
-
const cipher = new AesGcmCipher(
|
|
243
|
+
export async function keyMiddleware(cryptoService) {
|
|
244
|
+
const cipher = new AesGcmCipher(cryptoService);
|
|
246
245
|
const encryptionInformation = new SplitKey(cipher);
|
|
247
246
|
if (!encryptionInformation?.generateKey) {
|
|
248
247
|
throw new ConfigurationError('Crypto service not initialised');
|
|
@@ -250,4 +249,4 @@ export async function keyMiddleware() {
|
|
|
250
249
|
const key = await encryptionInformation.generateKey();
|
|
251
250
|
return { keyForEncryption: key, keyForManifest: key };
|
|
252
251
|
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFXLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV4RixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFJdEUsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUNoQyxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQztJQUNwQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFR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
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUl0RSxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBRyxFQUFFO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1QixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM1QixLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentdf/sdk",
|
|
3
|
-
"version": "0.9.0-beta.
|
|
3
|
+
"version": "0.9.0-beta.93",
|
|
4
4
|
"description": "OpenTDF for the Web",
|
|
5
5
|
"homepage": "https://github.com/opentdf/web-sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -48,6 +48,13 @@
|
|
|
48
48
|
"import": "./dist/web/src/encodings/index.js"
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
|
+
"./cryptoutils": {
|
|
52
|
+
"default": {
|
|
53
|
+
"types": "./dist/types/src/crypto/index.d.ts",
|
|
54
|
+
"require": "./dist/cjs/src/crypto/index.js",
|
|
55
|
+
"import": "./dist/web/src/crypto/index.js"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
51
58
|
"./platform": {
|
|
52
59
|
"types": "./dist/types/src/platform.d.ts",
|
|
53
60
|
"require": "./dist/cjs/src/platform.js",
|
|
@@ -60,7 +67,7 @@
|
|
|
60
67
|
}
|
|
61
68
|
},
|
|
62
69
|
"scripts": {
|
|
63
|
-
"build": "npm run clean && tsc && tsc --project tsconfig.commonjs.json && ../scripts/add-module-types.sh",
|
|
70
|
+
"build": "npm run vendor:jose-jwt-helpers && npm run clean && tsc && tsc --project tsconfig.commonjs.json && ../scripts/add-module-types.sh",
|
|
64
71
|
"build:watch": "tsc --watch",
|
|
65
72
|
"clean": "rm -rf {build,coverage,dist,tests/mocha/dist}",
|
|
66
73
|
"coverage:merge": "for x in mocha wtr; do cp coverage/$x/coverage-final.json coverage/$x.json; done; nyc report --reporter text --reporter lcov -t coverage --lines 75 --statements 75 --branches 70 --functions 65 --check-coverage >coverage/coverage.txt",
|
|
@@ -71,6 +78,7 @@
|
|
|
71
78
|
"lint": "eslint ./src/**/*.ts ./tdf3/**/*.ts ./tests/**/*.ts",
|
|
72
79
|
"prepack": "npm run build",
|
|
73
80
|
"test": "npm run build && npm run test:with-server",
|
|
81
|
+
"vendor:jose-jwt-helpers": "node scripts/vendor-jose-jwt-helpers.cjs",
|
|
74
82
|
"mock:platform": "npm run build && node dist/web/tests/server.js",
|
|
75
83
|
"test:with-server": "node dist/web/tests/server.js & trap \"node dist/web/tests/stopServer.js\" EXIT; npm run test:mocha && npm run test:wtr && npm run test:browser && npm run coverage:merge",
|
|
76
84
|
"test:browser": "npx webpack --config webpack.test.config.cjs && npx karma start karma.conf.cjs",
|
|
@@ -83,8 +91,7 @@
|
|
|
83
91
|
"@connectrpc/connect": "^2.0.2",
|
|
84
92
|
"@connectrpc/connect-web": "^2.0.2",
|
|
85
93
|
"buffer-crc32": "^1.0.0",
|
|
86
|
-
"
|
|
87
|
-
"jose": "^6.0.8",
|
|
94
|
+
"jose": "6.0.8",
|
|
88
95
|
"json-canonicalize": "^1.0.6",
|
|
89
96
|
"uuid": "~11.1.0"
|
|
90
97
|
},
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
KasPublicKeyAlgorithm,
|
|
3
|
-
KasPublicKeyInfo,
|
|
4
|
-
noteInvalidPublicKey,
|
|
5
|
-
OriginAllowList,
|
|
6
|
-
} from '../access.js';
|
|
1
|
+
import { KasPublicKeyAlgorithm, KasPublicKeyInfo, OriginAllowList } from '../access.js';
|
|
7
2
|
import { type AuthProvider } from '../auth/auth.js';
|
|
8
3
|
import {
|
|
9
4
|
ConfigurationError,
|
|
@@ -13,7 +8,7 @@ import {
|
|
|
13
8
|
ServiceError,
|
|
14
9
|
UnauthenticatedError,
|
|
15
10
|
} from '../errors.js';
|
|
16
|
-
import {
|
|
11
|
+
import { validateSecureUrl } from '../utils.js';
|
|
17
12
|
|
|
18
13
|
export type RewrapRequest = {
|
|
19
14
|
signedRequestToken: string;
|
|
@@ -194,7 +189,6 @@ export async function fetchKasPubKey(
|
|
|
194
189
|
);
|
|
195
190
|
}
|
|
196
191
|
return {
|
|
197
|
-
key: noteInvalidPublicKey(pkUrlV2, pemToCryptoPublicKey(publicKey)),
|
|
198
192
|
publicKey,
|
|
199
193
|
url: kasEndpoint,
|
|
200
194
|
algorithm: algorithm || 'rsa:2048',
|
package/src/access/access-rpc.ts
CHANGED
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
isPublicKeyAlgorithm,
|
|
4
4
|
KasPublicKeyAlgorithm,
|
|
5
5
|
KasPublicKeyInfo,
|
|
6
|
-
noteInvalidPublicKey,
|
|
7
6
|
OriginAllowList,
|
|
8
7
|
} from '../access.js';
|
|
9
8
|
|
|
@@ -22,7 +21,6 @@ import { ListKeyAccessServersResponse } from '../platform/policy/kasregistry/key
|
|
|
22
21
|
import {
|
|
23
22
|
extractRpcErrorMessage,
|
|
24
23
|
getPlatformUrlFromKasEndpoint,
|
|
25
|
-
pemToCryptoPublicKey,
|
|
26
24
|
validateSecureUrl,
|
|
27
25
|
} from '../utils.js';
|
|
28
26
|
import { X_REWRAP_ADDITIONAL_CONTEXT } from './constants.js';
|
|
@@ -201,7 +199,6 @@ export async function fetchKasPubKey(
|
|
|
201
199
|
v: '2',
|
|
202
200
|
});
|
|
203
201
|
const result: KasPublicKeyInfo = {
|
|
204
|
-
key: noteInvalidPublicKey(new URL(platformUrl), pemToCryptoPublicKey(publicKey)),
|
|
205
202
|
publicKey,
|
|
206
203
|
url: kasEndpoint,
|
|
207
204
|
algorithm: algorithm || 'rsa:2048',
|
|
@@ -240,10 +237,6 @@ export async function fetchKasBasePubKey(kasEndpoint: string): Promise<KasPublic
|
|
|
240
237
|
}
|
|
241
238
|
|
|
242
239
|
const result: KasPublicKeyInfo = {
|
|
243
|
-
key: noteInvalidPublicKey(
|
|
244
|
-
new URL(baseKey.kas_uri),
|
|
245
|
-
pemToCryptoPublicKey(baseKey.public_key.pem)
|
|
246
|
-
),
|
|
247
240
|
publicKey: baseKey.public_key.pem,
|
|
248
241
|
url: baseKey.kas_uri,
|
|
249
242
|
algorithm: baseKey.public_key.algorithm,
|
package/src/access.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type AuthProvider } from './auth/auth.js';
|
|
2
|
-
import { ServiceError } from './errors.js';
|
|
3
2
|
import { RewrapResponse } from './platform/kas/kas_pb.js';
|
|
4
3
|
import { getPlatformUrlFromKasEndpoint, validateSecureUrl } from './utils.js';
|
|
5
4
|
import { base64 } from './encodings/index.js';
|
|
@@ -155,24 +154,8 @@ export type KasPublicKeyInfo = {
|
|
|
155
154
|
|
|
156
155
|
/** The key value, encoded within a PEM envelope */
|
|
157
156
|
publicKey: string;
|
|
158
|
-
|
|
159
|
-
/** A subtle crypto version of the key.
|
|
160
|
-
* This can be used for wrapping key data for key access objects (with RSA)
|
|
161
|
-
* or to derive key data (with EC keys). */
|
|
162
|
-
key: Promise<CryptoKey>;
|
|
163
157
|
};
|
|
164
158
|
|
|
165
|
-
export async function noteInvalidPublicKey(url: URL, r: Promise<CryptoKey>): Promise<CryptoKey> {
|
|
166
|
-
try {
|
|
167
|
-
return await r;
|
|
168
|
-
} catch (e) {
|
|
169
|
-
if (e instanceof TypeError) {
|
|
170
|
-
throw new ServiceError(`invalid public key from [${url}]`, e);
|
|
171
|
-
}
|
|
172
|
-
throw e;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
159
|
/**
|
|
177
160
|
* Fetches the key access servers for a given platform URL.
|
|
178
161
|
* @param platformUrl The platform URL to fetch key access servers for.
|
package/src/auth/auth.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type CryptoService,
|
|
3
|
+
type KeyPair,
|
|
4
|
+
type PrivateKey,
|
|
5
|
+
} from '../../tdf3/src/crypto/declarations.js';
|
|
6
|
+
import { signJwt, type JwtHeader, type JwtPayload } from '../../tdf3/src/crypto/jwt.js';
|
|
2
7
|
|
|
3
8
|
export type HttpMethod =
|
|
4
9
|
| 'GET'
|
|
@@ -54,22 +59,26 @@ function getTimestampInSeconds() {
|
|
|
54
59
|
|
|
55
60
|
/**
|
|
56
61
|
* Generate a JWT (or JWS-ed object)
|
|
57
|
-
* @param toSign the data to sign. Interpreted as
|
|
58
|
-
* @param privateKey an RSA key
|
|
62
|
+
* @param toSign the data to sign. Interpreted as JwtPayload but AFAIK this isn't required
|
|
63
|
+
* @param privateKey an opaque RSA private key
|
|
64
|
+
* @param cryptoService the crypto service to use for signing
|
|
65
|
+
* @param jwtProtectedHeader optional JWT header, defaults to RS256
|
|
59
66
|
* @returns the signed object, with a JWS header. This may be a JWT.
|
|
60
67
|
*/
|
|
61
68
|
export async function reqSignature(
|
|
62
69
|
toSign: unknown,
|
|
63
|
-
privateKey:
|
|
64
|
-
|
|
70
|
+
privateKey: PrivateKey,
|
|
71
|
+
cryptoService: CryptoService,
|
|
72
|
+
jwtProtectedHeader: JwtHeader = { alg: 'RS256' }
|
|
65
73
|
) {
|
|
66
74
|
const now = getTimestampInSeconds();
|
|
67
75
|
const anHour = 3600;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
const payload: JwtPayload = {
|
|
77
|
+
...(toSign as JwtPayload),
|
|
78
|
+
iat: now - anHour,
|
|
79
|
+
exp: now + anHour,
|
|
80
|
+
};
|
|
81
|
+
return signJwt(cryptoService, payload, privateKey, jwtProtectedHeader);
|
|
73
82
|
}
|
|
74
83
|
|
|
75
84
|
/**
|
|
@@ -90,10 +99,10 @@ export type AuthProvider = {
|
|
|
90
99
|
* using the cached refresh token, and update the auth server config with the
|
|
91
100
|
* current key.
|
|
92
101
|
*
|
|
93
|
-
* @param signingKey the client signing key pair. Will be bound
|
|
102
|
+
* @param signingKey the client signing key pair (opaque keys). Will be bound
|
|
94
103
|
* to the OIDC token and require a DPoP header, when set.
|
|
95
104
|
*/
|
|
96
|
-
updateClientPublicKey(signingKey?:
|
|
105
|
+
updateClientPublicKey(signingKey?: KeyPair): Promise<void>;
|
|
97
106
|
|
|
98
107
|
/**
|
|
99
108
|
* Augment the provided http request with custom auth info to be used by backend services.
|
package/src/auth/dpop.ts
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// pulled from https://github.com/panva/dpop/tree/v1.4.1
|
|
2
|
+
// Modified to use CryptoService instead of crypto.subtle
|
|
3
|
+
|
|
4
|
+
import type {
|
|
5
|
+
CryptoService,
|
|
6
|
+
KeyPair,
|
|
7
|
+
PrivateKey,
|
|
8
|
+
AsymmetricSigningAlgorithm,
|
|
9
|
+
} from '../../tdf3/src/crypto/declarations.js';
|
|
10
|
+
|
|
11
|
+
export type JsonObject = { [Key in string]?: JsonValue };
|
|
12
|
+
export type JsonArray = JsonValue[];
|
|
13
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
14
|
+
export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
|
|
15
|
+
|
|
16
|
+
const encoder = new TextEncoder();
|
|
17
|
+
|
|
18
|
+
function buf(input: string): Uint8Array {
|
|
19
|
+
return encoder.encode(input);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
interface DPoPJwtHeaderParameters {
|
|
23
|
+
alg: JWSAlgorithm;
|
|
24
|
+
typ: string;
|
|
25
|
+
jwk: JsonWebKey;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Minimal JWT sign() implementation using CryptoService.
|
|
30
|
+
*/
|
|
31
|
+
async function jwt(
|
|
32
|
+
header: DPoPJwtHeaderParameters,
|
|
33
|
+
claimsSet: Record<string, unknown>,
|
|
34
|
+
privateKey: PrivateKey,
|
|
35
|
+
cryptoService: CryptoService
|
|
36
|
+
) {
|
|
37
|
+
const input = `${b64u(buf(JSON.stringify(header)))}.${b64u(buf(JSON.stringify(claimsSet)))}`;
|
|
38
|
+
const signature = await cryptoService.sign(
|
|
39
|
+
buf(input),
|
|
40
|
+
privateKey,
|
|
41
|
+
header.alg as AsymmetricSigningAlgorithm
|
|
42
|
+
);
|
|
43
|
+
return `${input}.${b64u(signature)}`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const CHUNK_SIZE = 0x8000;
|
|
47
|
+
function encodeBase64Url(input: Uint8Array | ArrayBuffer) {
|
|
48
|
+
const bytes = input instanceof ArrayBuffer ? new Uint8Array(input) : input;
|
|
49
|
+
|
|
50
|
+
const arr = [];
|
|
51
|
+
for (let i = 0; i < bytes.byteLength; i += CHUNK_SIZE) {
|
|
52
|
+
arr.push(
|
|
53
|
+
String.fromCharCode.apply(null, bytes.subarray(i, i + CHUNK_SIZE) as unknown as number[])
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
return btoa(arr.join('')).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function b64u(input: Uint8Array | ArrayBuffer) {
|
|
60
|
+
return encodeBase64Url(input);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Generates 32 random bytes and encodes them using base64url.
|
|
65
|
+
*/
|
|
66
|
+
async function randomBytes(cryptoService: CryptoService) {
|
|
67
|
+
return b64u(await cryptoService.randomBytes(32));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Supported JWS `alg` Algorithm identifiers.
|
|
72
|
+
*
|
|
73
|
+
* @example PS256 CryptoKey algorithm
|
|
74
|
+
* ```ts
|
|
75
|
+
* interface Ps256Algorithm extends RsaHashedKeyAlgorithm {
|
|
76
|
+
* name: 'RSA-PSS'
|
|
77
|
+
* hash: { name: 'SHA-256' }
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @example CryptoKey algorithm for the `ES256` JWS Algorithm Identifier
|
|
82
|
+
* ```ts
|
|
83
|
+
* interface Es256Algorithm extends EcKeyAlgorithm {
|
|
84
|
+
* name: 'ECDSA'
|
|
85
|
+
* namedCurve: 'P-256'
|
|
86
|
+
* }
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @example CryptoKey algorithm for the `RS256` JWS Algorithm Identifier
|
|
90
|
+
* ```ts
|
|
91
|
+
* interface Rs256Algorithm extends RsaHashedKeyAlgorithm {
|
|
92
|
+
* name: 'RSASSA-PKCS1-v1_5'
|
|
93
|
+
* hash: { name: 'SHA-256' }
|
|
94
|
+
* }
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @example CryptoKey algorithm for the `EdDSA` JWS Algorithm Identifier (Experimental)
|
|
98
|
+
*
|
|
99
|
+
* Runtime support for this algorithm is very limited, it depends on the [Secure Curves in the Web
|
|
100
|
+
* Cryptography API](https://wicg.github.io/webcrypto-secure-curves/) proposal which is yet to be
|
|
101
|
+
* widely adopted. If the proposal changes this implementation will follow up with a minor release.
|
|
102
|
+
*
|
|
103
|
+
* ```ts
|
|
104
|
+
* interface EdDSAAlgorithm extends KeyAlgorithm {
|
|
105
|
+
* name: 'Ed25519'
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export type JWSAlgorithm = 'PS256' | 'ES256' | 'ES384' | 'ES512' | 'RS256' | 'EdDSA';
|
|
110
|
+
|
|
111
|
+
class UnsupportedOperationError extends Error {
|
|
112
|
+
constructor(message?: string) {
|
|
113
|
+
super(message ?? 'operation not supported');
|
|
114
|
+
this.name = this.constructor.name;
|
|
115
|
+
Error.captureStackTrace?.(this, this.constructor);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Determines a supported JWS `alg` identifier from PublicKeyInfo algorithm string.
|
|
121
|
+
*/
|
|
122
|
+
function determineJWSAlgorithmFromKeyInfo(algorithm: string): JWSAlgorithm {
|
|
123
|
+
if (algorithm.startsWith('rsa:')) {
|
|
124
|
+
return 'RS256';
|
|
125
|
+
}
|
|
126
|
+
switch (algorithm) {
|
|
127
|
+
case 'ec:secp256r1':
|
|
128
|
+
return 'ES256';
|
|
129
|
+
case 'ec:secp384r1':
|
|
130
|
+
return 'ES384';
|
|
131
|
+
case 'ec:secp521r1':
|
|
132
|
+
return 'ES512';
|
|
133
|
+
default:
|
|
134
|
+
throw new UnsupportedOperationError(`unsupported key algorithm: ${algorithm}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Returns the current unix timestamp in seconds.
|
|
140
|
+
*/
|
|
141
|
+
function epochTime() {
|
|
142
|
+
return Math.floor(Date.now() / 1000);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Generates a unique DPoP Proof JWT.
|
|
147
|
+
*
|
|
148
|
+
* @param keypair Opaque key pair
|
|
149
|
+
* @param cryptoService CryptoService for cryptographic operations
|
|
150
|
+
* @param htu The HTTP URI (without query and fragment parts) of the request
|
|
151
|
+
* @param htm The HTTP method of the request
|
|
152
|
+
* @param nonce Server-provided nonce.
|
|
153
|
+
* @param accessToken Associated access token's value.
|
|
154
|
+
* @param additional Any additional claims.
|
|
155
|
+
*/
|
|
156
|
+
export default async function DPoP(
|
|
157
|
+
keypair: KeyPair,
|
|
158
|
+
cryptoService: CryptoService,
|
|
159
|
+
htu: string,
|
|
160
|
+
htm: string,
|
|
161
|
+
nonce?: string,
|
|
162
|
+
accessToken?: string,
|
|
163
|
+
additional?: Record<string, JsonValue>
|
|
164
|
+
): Promise<string> {
|
|
165
|
+
const privateKey = keypair?.privateKey;
|
|
166
|
+
const publicKey = keypair?.publicKey;
|
|
167
|
+
|
|
168
|
+
if (typeof htu !== 'string') {
|
|
169
|
+
throw new TypeError('"htu" must be a string');
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (typeof htm !== 'string') {
|
|
173
|
+
throw new TypeError('"htm" must be a string');
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (nonce !== undefined && typeof nonce !== 'string') {
|
|
177
|
+
throw new TypeError('"nonce" must be a string or undefined');
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (accessToken !== undefined && typeof accessToken !== 'string') {
|
|
181
|
+
throw new TypeError('"accessToken" must be a string or undefined');
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (
|
|
185
|
+
additional !== undefined &&
|
|
186
|
+
(typeof additional !== 'object' || additional === null || Array.isArray(additional))
|
|
187
|
+
) {
|
|
188
|
+
throw new TypeError('"additional" must be an object');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Detect algorithm from opaque key metadata
|
|
192
|
+
const alg = determineJWSAlgorithmFromKeyInfo(publicKey.algorithm);
|
|
193
|
+
|
|
194
|
+
// Export public key as JWK for the header
|
|
195
|
+
const jwk = await cryptoService.exportPublicKeyJwk(publicKey);
|
|
196
|
+
|
|
197
|
+
// Compute access token hash if provided
|
|
198
|
+
let ath: string | undefined;
|
|
199
|
+
if (accessToken) {
|
|
200
|
+
const athBytes = await cryptoService.digest('SHA-256', buf(accessToken));
|
|
201
|
+
ath = b64u(athBytes);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return jwt(
|
|
205
|
+
{
|
|
206
|
+
alg,
|
|
207
|
+
typ: 'dpop+jwt',
|
|
208
|
+
jwk,
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
...additional,
|
|
212
|
+
iat: epochTime(),
|
|
213
|
+
jti: await randomBytes(cryptoService),
|
|
214
|
+
htm,
|
|
215
|
+
nonce,
|
|
216
|
+
htu,
|
|
217
|
+
ath,
|
|
218
|
+
},
|
|
219
|
+
privateKey,
|
|
220
|
+
cryptoService
|
|
221
|
+
);
|
|
222
|
+
}
|
|
@@ -1,32 +1,40 @@
|
|
|
1
1
|
import { ConfigurationError } from '../errors.js';
|
|
2
2
|
import { AuthProvider, type HttpRequest } from './auth.js';
|
|
3
3
|
import { AccessToken, type ClientSecretCredentials } from './oidc.js';
|
|
4
|
+
import * as defaultCryptoService from '../../tdf3/src/crypto/index.js';
|
|
5
|
+
import { type CryptoService, type KeyPair } from '../../tdf3/src/crypto/declarations.js';
|
|
4
6
|
|
|
5
7
|
export class OIDCClientCredentialsProvider implements AuthProvider {
|
|
6
8
|
oidcAuth: AccessToken;
|
|
7
9
|
|
|
8
|
-
constructor(
|
|
9
|
-
|
|
10
|
-
clientSecret,
|
|
11
|
-
oidcOrigin,
|
|
12
|
-
oidcTokenEndpoint,
|
|
13
|
-
oidcUserInfoEndpoint,
|
|
14
|
-
}: Partial<ClientSecretCredentials> & Omit<ClientSecretCredentials, 'exchange'>) {
|
|
15
|
-
if (!clientId || !clientSecret) {
|
|
16
|
-
throw new ConfigurationError('clientId & clientSecret required for client credentials flow');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
this.oidcAuth = new AccessToken({
|
|
20
|
-
exchange: 'client',
|
|
10
|
+
constructor(
|
|
11
|
+
{
|
|
21
12
|
clientId,
|
|
22
13
|
clientSecret,
|
|
23
14
|
oidcOrigin,
|
|
24
15
|
oidcTokenEndpoint,
|
|
25
16
|
oidcUserInfoEndpoint,
|
|
26
|
-
}
|
|
17
|
+
}: Partial<ClientSecretCredentials> & Omit<ClientSecretCredentials, 'exchange'>,
|
|
18
|
+
cryptoService: CryptoService = defaultCryptoService
|
|
19
|
+
) {
|
|
20
|
+
if (!clientId || !clientSecret) {
|
|
21
|
+
throw new ConfigurationError('clientId & clientSecret required for client credentials flow');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
this.oidcAuth = new AccessToken(
|
|
25
|
+
{
|
|
26
|
+
exchange: 'client',
|
|
27
|
+
clientId,
|
|
28
|
+
clientSecret,
|
|
29
|
+
oidcOrigin,
|
|
30
|
+
oidcTokenEndpoint,
|
|
31
|
+
oidcUserInfoEndpoint,
|
|
32
|
+
},
|
|
33
|
+
cryptoService
|
|
34
|
+
);
|
|
27
35
|
}
|
|
28
36
|
|
|
29
|
-
async updateClientPublicKey(signingKey:
|
|
37
|
+
async updateClientPublicKey(signingKey: KeyPair): Promise<void> {
|
|
30
38
|
await this.oidcAuth.refreshTokenClaimsWithClientPubkeyIfNeeded(signingKey);
|
|
31
39
|
}
|
|
32
40
|
|
|
@@ -1,35 +1,43 @@
|
|
|
1
1
|
import { ConfigurationError } from '../errors.js';
|
|
2
2
|
import { type AuthProvider, type HttpRequest } from './auth.js';
|
|
3
3
|
import { AccessToken, type ExternalJwtCredentials } from './oidc.js';
|
|
4
|
+
import * as defaultCryptoService from '../../tdf3/src/crypto/index.js';
|
|
5
|
+
import { type CryptoService, type KeyPair } from '../../tdf3/src/crypto/declarations.js';
|
|
4
6
|
|
|
5
7
|
export class OIDCExternalJwtProvider implements AuthProvider {
|
|
6
8
|
oidcAuth: AccessToken;
|
|
7
9
|
externalJwt?: string;
|
|
8
10
|
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
11
|
-
externalJwt,
|
|
12
|
-
oidcOrigin,
|
|
13
|
-
oidcTokenEndpoint,
|
|
14
|
-
oidcUserInfoEndpoint,
|
|
15
|
-
}: Partial<ExternalJwtCredentials> & Omit<ExternalJwtCredentials, 'exchange'>) {
|
|
16
|
-
if (!clientId || !externalJwt) {
|
|
17
|
-
throw new ConfigurationError('external JWT exchange reequires client id and jwt');
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
this.oidcAuth = new AccessToken({
|
|
21
|
-
exchange: 'external',
|
|
11
|
+
constructor(
|
|
12
|
+
{
|
|
22
13
|
clientId,
|
|
23
14
|
externalJwt,
|
|
24
15
|
oidcOrigin,
|
|
25
16
|
oidcTokenEndpoint,
|
|
26
17
|
oidcUserInfoEndpoint,
|
|
27
|
-
}
|
|
18
|
+
}: Partial<ExternalJwtCredentials> & Omit<ExternalJwtCredentials, 'exchange'>,
|
|
19
|
+
cryptoService: CryptoService = defaultCryptoService
|
|
20
|
+
) {
|
|
21
|
+
if (!clientId || !externalJwt) {
|
|
22
|
+
throw new ConfigurationError('external JWT exchange reequires client id and jwt');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
this.oidcAuth = new AccessToken(
|
|
26
|
+
{
|
|
27
|
+
exchange: 'external',
|
|
28
|
+
clientId,
|
|
29
|
+
externalJwt,
|
|
30
|
+
oidcOrigin,
|
|
31
|
+
oidcTokenEndpoint,
|
|
32
|
+
oidcUserInfoEndpoint,
|
|
33
|
+
},
|
|
34
|
+
cryptoService
|
|
35
|
+
);
|
|
28
36
|
|
|
29
37
|
this.externalJwt = externalJwt;
|
|
30
38
|
}
|
|
31
39
|
|
|
32
|
-
async updateClientPublicKey(signingKey:
|
|
40
|
+
async updateClientPublicKey(signingKey: KeyPair): Promise<void> {
|
|
33
41
|
this.oidcAuth.refreshTokenClaimsWithClientPubkeyIfNeeded(signingKey);
|
|
34
42
|
}
|
|
35
43
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ConfigurationError } from '../errors.js';
|
|
2
2
|
import { type AuthProvider, type HttpRequest } from './auth.js';
|
|
3
3
|
import { AccessToken, type RefreshTokenCredentials } from './oidc.js';
|
|
4
|
+
import * as defaultCryptoService from '../../tdf3/src/crypto/index.js';
|
|
5
|
+
import { type CryptoService, type KeyPair } from '../../tdf3/src/crypto/declarations.js';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* An AuthProvider that uses an OIDC refresh token to obtain an access token.
|
|
@@ -20,29 +22,35 @@ export class OIDCRefreshTokenProvider implements AuthProvider {
|
|
|
20
22
|
oidcAuth: AccessToken;
|
|
21
23
|
refreshToken?: string;
|
|
22
24
|
|
|
23
|
-
constructor(
|
|
24
|
-
|
|
25
|
-
refreshToken,
|
|
26
|
-
oidcOrigin,
|
|
27
|
-
oidcTokenEndpoint,
|
|
28
|
-
oidcUserInfoEndpoint,
|
|
29
|
-
}: Partial<RefreshTokenCredentials> & Omit<RefreshTokenCredentials, 'exchange'>) {
|
|
30
|
-
if (!clientId || !refreshToken) {
|
|
31
|
-
throw new ConfigurationError('refresh token or client id missing');
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
this.oidcAuth = new AccessToken({
|
|
35
|
-
exchange: 'refresh',
|
|
25
|
+
constructor(
|
|
26
|
+
{
|
|
36
27
|
clientId,
|
|
37
28
|
refreshToken,
|
|
38
29
|
oidcOrigin,
|
|
39
30
|
oidcTokenEndpoint,
|
|
40
31
|
oidcUserInfoEndpoint,
|
|
41
|
-
}
|
|
32
|
+
}: Partial<RefreshTokenCredentials> & Omit<RefreshTokenCredentials, 'exchange'>,
|
|
33
|
+
cryptoService: CryptoService = defaultCryptoService
|
|
34
|
+
) {
|
|
35
|
+
if (!clientId || !refreshToken) {
|
|
36
|
+
throw new ConfigurationError('refresh token or client id missing');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
this.oidcAuth = new AccessToken(
|
|
40
|
+
{
|
|
41
|
+
exchange: 'refresh',
|
|
42
|
+
clientId,
|
|
43
|
+
refreshToken,
|
|
44
|
+
oidcOrigin,
|
|
45
|
+
oidcTokenEndpoint,
|
|
46
|
+
oidcUserInfoEndpoint,
|
|
47
|
+
},
|
|
48
|
+
cryptoService
|
|
49
|
+
);
|
|
42
50
|
this.refreshToken = refreshToken;
|
|
43
51
|
}
|
|
44
52
|
|
|
45
|
-
async updateClientPublicKey(signingKey:
|
|
53
|
+
async updateClientPublicKey(signingKey: KeyPair): Promise<void> {
|
|
46
54
|
await this.oidcAuth.refreshTokenClaimsWithClientPubkeyIfNeeded(signingKey);
|
|
47
55
|
}
|
|
48
56
|
|