@sphereon/oid4vci-client 0.8.2-unstable.40 → 0.8.2-unstable.42

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.
Files changed (53) hide show
  1. package/dist/AccessTokenClient.d.ts +29 -28
  2. package/dist/AccessTokenClient.d.ts.map +1 -1
  3. package/dist/AccessTokenClient.js +214 -221
  4. package/dist/AccessTokenClient.js.map +1 -1
  5. package/dist/AuthorizationDetailsBuilder.d.ts +10 -10
  6. package/dist/AuthorizationDetailsBuilder.js +43 -43
  7. package/dist/AuthorizationDetailsBuilder.js.map +1 -1
  8. package/dist/CredentialOfferClient.d.ts +9 -9
  9. package/dist/CredentialOfferClient.d.ts.map +1 -1
  10. package/dist/CredentialOfferClient.js +100 -87
  11. package/dist/CredentialOfferClient.js.map +1 -1
  12. package/dist/CredentialRequestClient.d.ts +45 -32
  13. package/dist/CredentialRequestClient.d.ts.map +1 -1
  14. package/dist/CredentialRequestClient.js +164 -117
  15. package/dist/CredentialRequestClient.js.map +1 -1
  16. package/dist/CredentialRequestClientBuilder.d.ts +45 -39
  17. package/dist/CredentialRequestClientBuilder.d.ts.map +1 -1
  18. package/dist/CredentialRequestClientBuilder.js +116 -89
  19. package/dist/CredentialRequestClientBuilder.js.map +1 -1
  20. package/dist/MetadataClient.d.ts +40 -40
  21. package/dist/MetadataClient.d.ts.map +1 -1
  22. package/dist/MetadataClient.js +200 -239
  23. package/dist/MetadataClient.js.map +1 -1
  24. package/dist/OpenID4VCIClient.d.ts +83 -81
  25. package/dist/OpenID4VCIClient.d.ts.map +1 -1
  26. package/dist/OpenID4VCIClient.js +442 -439
  27. package/dist/OpenID4VCIClient.js.map +1 -1
  28. package/dist/ProofOfPossessionBuilder.d.ts +39 -39
  29. package/dist/ProofOfPossessionBuilder.js +150 -150
  30. package/dist/ProofOfPossessionBuilder.js.map +1 -1
  31. package/dist/functions/ProofUtil.d.ts +29 -29
  32. package/dist/functions/ProofUtil.js +105 -105
  33. package/dist/functions/ProofUtil.js.map +1 -1
  34. package/dist/functions/index.d.ts +3 -3
  35. package/dist/functions/index.js +19 -19
  36. package/dist/index.d.ts +8 -8
  37. package/dist/index.js +24 -24
  38. package/lib/AccessTokenClient.ts +6 -15
  39. package/lib/CredentialOfferClient.ts +24 -10
  40. package/lib/CredentialRequestClient.ts +71 -12
  41. package/lib/CredentialRequestClientBuilder.ts +42 -11
  42. package/lib/MetadataClient.ts +55 -94
  43. package/lib/OpenID4VCIClient.ts +43 -40
  44. package/lib/ProofOfPossessionBuilder.ts +4 -4
  45. package/lib/__tests__/CredentialRequestClient.spec.ts +14 -14
  46. package/lib/__tests__/CredentialRequestClientBuilder.spec.ts +2 -2
  47. package/lib/__tests__/EBSIE2E.spec.test.ts +8 -3
  48. package/lib/__tests__/IT.spec.ts +1 -1
  49. package/lib/__tests__/IssuanceInitiation.spec.ts +1 -1
  50. package/lib/__tests__/JsonURIConversions.spec.ts +3 -3
  51. package/lib/__tests__/OpenID4VCIClient.spec.ts +27 -85
  52. package/lib/__tests__/ProofOfPossessionBuilder.spec.ts +5 -5
  53. package/package.json +7 -7
@@ -1,29 +1,30 @@
1
- import { AccessTokenRequest, AccessTokenRequestOpts, AccessTokenResponse, AuthorizationServerOpts, EndpointMetadata, IssuerOpts, OpenIDResponse } from '@sphereon/oid4vci-common';
2
- export declare class AccessTokenClient {
3
- acquireAccessToken(opts: AccessTokenRequestOpts): Promise<OpenIDResponse<AccessTokenResponse>>;
4
- acquireAccessTokenUsingRequest({ accessTokenRequest, isPinRequired, metadata, asOpts, issuerOpts, }: {
5
- accessTokenRequest: AccessTokenRequest;
6
- isPinRequired?: boolean;
7
- metadata?: EndpointMetadata;
8
- asOpts?: AuthorizationServerOpts;
9
- issuerOpts?: IssuerOpts;
10
- }): Promise<OpenIDResponse<AccessTokenResponse>>;
11
- createAccessTokenRequest(opts: AccessTokenRequestOpts): Promise<AccessTokenRequest>;
12
- private assertPreAuthorizedGrantType;
13
- private assertAuthorizationGrantType;
14
- private isPinRequiredValue;
15
- private assertNumericPin;
16
- private assertNonEmptyPreAuthorizedCode;
17
- private assertNonEmptyCode;
18
- private assertNonEmptyRedirectUri;
19
- private validate;
20
- private sendAuthCode;
21
- static determineTokenURL({ asOpts, issuerOpts, metadata, }: {
22
- asOpts?: AuthorizationServerOpts;
23
- issuerOpts?: IssuerOpts;
24
- metadata?: EndpointMetadata;
25
- }): string;
26
- private static creatTokenURLFromURL;
27
- private throwNotSupportedFlow;
28
- }
1
+ import { AccessTokenRequest, AccessTokenRequestOpts, AccessTokenResponse, AuthorizationServerOpts, EndpointMetadata, IssuerOpts, OpenIDResponse } from '@sphereon/oid4vci-common';
2
+ export declare class AccessTokenClient {
3
+ acquireAccessToken(opts: AccessTokenRequestOpts): Promise<OpenIDResponse<AccessTokenResponse>>;
4
+ acquireAccessTokenUsingRequest({ accessTokenRequest, isPinRequired, metadata, asOpts, issuerOpts, }: {
5
+ accessTokenRequest: AccessTokenRequest;
6
+ isPinRequired?: boolean;
7
+ metadata?: EndpointMetadata;
8
+ asOpts?: AuthorizationServerOpts;
9
+ issuerOpts?: IssuerOpts;
10
+ }): Promise<OpenIDResponse<AccessTokenResponse>>;
11
+ createAccessTokenRequest(opts: AccessTokenRequestOpts): Promise<AccessTokenRequest>;
12
+ private assertPreAuthorizedGrantType;
13
+ private assertAuthorizationGrantType;
14
+ private isPinRequiredValue;
15
+ private assertNumericPin;
16
+ private assertNonEmptyPreAuthorizedCode;
17
+ private assertNonEmptyCodeVerifier;
18
+ private assertNonEmptyCode;
19
+ private assertNonEmptyRedirectUri;
20
+ private validate;
21
+ private sendAuthCode;
22
+ static determineTokenURL({ asOpts, issuerOpts, metadata, }: {
23
+ asOpts?: AuthorizationServerOpts;
24
+ issuerOpts?: IssuerOpts;
25
+ metadata?: EndpointMetadata;
26
+ }): string;
27
+ private static creatTokenURLFromURL;
28
+ private throwNotSupportedFlow;
29
+ }
29
30
  //# sourceMappingURL=AccessTokenClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessTokenClient.d.ts","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EAEnB,uBAAuB,EAEvB,gBAAgB,EAGhB,UAAU,EACV,cAAc,EAKf,MAAM,0BAA0B,CAAC;AASlC,qBAAa,iBAAiB;IACf,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IA+B9F,8BAA8B,CAAC,EAC1C,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,UAAU,GACX,EAAE;QACD,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAgBnC,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoChG,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,+BAA+B;IAgBvC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,QAAQ;YAeF,YAAY;WAWZ,iBAAiB,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE;QACD,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B,GAAG,MAAM;IAuBV,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAUnC,OAAO,CAAC,qBAAqB;CAI9B"}
1
+ {"version":3,"file":"AccessTokenClient.d.ts","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EAEnB,uBAAuB,EAEvB,gBAAgB,EAGhB,UAAU,EACV,cAAc,EAKf,MAAM,0BAA0B,CAAC;AASlC,qBAAa,iBAAiB;IACf,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IA+B9F,8BAA8B,CAAC,EAC1C,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,UAAU,GACX,EAAE;QACD,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAgBnC,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoChG,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,+BAA+B;IAOvC,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,QAAQ;YAeF,YAAY;WAIZ,iBAAiB,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE;QACD,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B,GAAG,MAAM;IAuBV,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAUnC,OAAO,CAAC,qBAAqB;CAI9B"}
@@ -1,222 +1,215 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.AccessTokenClient = void 0;
16
- const oid4vci_common_1 = require("@sphereon/oid4vci-common");
17
- const ssi_types_1 = require("@sphereon/ssi-types");
18
- const debug_1 = __importDefault(require("debug"));
19
- const MetadataClient_1 = require("./MetadataClient");
20
- const functions_1 = require("./functions");
21
- const debug = (0, debug_1.default)('sphereon:oid4vci:token');
22
- class AccessTokenClient {
23
- acquireAccessToken(opts) {
24
- var _a;
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const { asOpts, pin, codeVerifier, code, redirectUri, metadata } = opts;
27
- const credentialOffer = opts.credentialOffer ? yield (0, oid4vci_common_1.assertedUniformCredentialOffer)(opts.credentialOffer) : undefined;
28
- const isPinRequired = credentialOffer && this.isPinRequiredValue(credentialOffer.credential_offer);
29
- const issuer = (_a = opts.credentialIssuer) !== null && _a !== void 0 ? _a : (credentialOffer ? (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(credentialOffer.credential_offer) : metadata === null || metadata === void 0 ? void 0 : metadata.issuer);
30
- if (!issuer) {
31
- throw Error('Issuer required at this point');
32
- }
33
- const issuerOpts = {
34
- issuer,
35
- };
36
- return yield this.acquireAccessTokenUsingRequest({
37
- accessTokenRequest: yield this.createAccessTokenRequest({
38
- credentialOffer,
39
- asOpts,
40
- codeVerifier,
41
- code,
42
- redirectUri,
43
- pin,
44
- }),
45
- isPinRequired,
46
- metadata,
47
- asOpts,
48
- issuerOpts,
49
- });
50
- });
51
- }
52
- acquireAccessTokenUsingRequest({ accessTokenRequest, isPinRequired, metadata, asOpts, issuerOpts, }) {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- this.validate(accessTokenRequest, isPinRequired);
55
- const requestTokenURL = AccessTokenClient.determineTokenURL({
56
- asOpts,
57
- issuerOpts,
58
- metadata: metadata
59
- ? metadata
60
- : (issuerOpts === null || issuerOpts === void 0 ? void 0 : issuerOpts.fetchMetadata)
61
- ? yield MetadataClient_1.MetadataClient.retrieveAllMetadata([issuerOpts.issuer], { errorOnNotFound: false }) // TODO multi-server support?
62
- : undefined,
63
- });
64
- return this.sendAuthCode(requestTokenURL, accessTokenRequest, asOpts === null || asOpts === void 0 ? void 0 : asOpts.tokenProxyUrl);
65
- });
66
- }
67
- createAccessTokenRequest(opts) {
68
- var _a, _b;
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const { asOpts, pin, codeVerifier, code, redirectUri } = opts;
71
- const credentialOfferRequest = opts.credentialOffer ? yield (0, oid4vci_common_1.toUniformCredentialOfferRequest)(opts.credentialOffer) : undefined;
72
- const request = {};
73
- if (asOpts === null || asOpts === void 0 ? void 0 : asOpts.clientId) {
74
- request.client_id = asOpts.clientId;
75
- }
76
- if (credentialOfferRequest === null || credentialOfferRequest === void 0 ? void 0 : credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
77
- this.assertNumericPin(this.isPinRequiredValue(credentialOfferRequest.credential_offer), pin);
78
- request.user_pin = pin;
79
- request.grant_type = oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE;
80
- // we actually know it is there because of the isPreAuthCode call
81
- request[oid4vci_common_1.PRE_AUTH_CODE_LITERAL] =
82
- (_b = (_a = credentialOfferRequest === null || credentialOfferRequest === void 0 ? void 0 : credentialOfferRequest.credential_offer.grants) === null || _a === void 0 ? void 0 : _a['urn:ietf:params:oauth:grant-type:pre-authorized_code']) === null || _b === void 0 ? void 0 : _b[oid4vci_common_1.PRE_AUTH_CODE_LITERAL];
83
- return request;
84
- }
85
- if (!credentialOfferRequest || credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW)) {
86
- request.grant_type = oid4vci_common_1.GrantTypes.AUTHORIZATION_CODE;
87
- request.code = code;
88
- request.redirect_uri = redirectUri;
89
- if (codeVerifier) {
90
- request.code_verifier = codeVerifier;
91
- }
92
- return request;
93
- }
94
- throw new Error('Credential offer request does not follow neither pre-authorized code nor authorization code flow requirements.');
95
- });
96
- }
97
- assertPreAuthorizedGrantType(grantType) {
98
- if (oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE !== grantType) {
99
- throw new Error("grant type must be 'urn:ietf:params:oauth:grant-type:pre-authorized_code'");
100
- }
101
- }
102
- assertAuthorizationGrantType(grantType) {
103
- if (oid4vci_common_1.GrantTypes.AUTHORIZATION_CODE !== grantType) {
104
- throw new Error("grant type must be 'authorization_code'");
105
- }
106
- }
107
- isPinRequiredValue(requestPayload) {
108
- var _a, _b, _c;
109
- let isPinRequired = false;
110
- if (!requestPayload) {
111
- throw new Error(oid4vci_common_1.TokenErrorResponse.invalid_request);
112
- }
113
- const issuer = (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(requestPayload);
114
- if ((_a = requestPayload.grants) === null || _a === void 0 ? void 0 : _a['urn:ietf:params:oauth:grant-type:pre-authorized_code']) {
115
- isPinRequired = (_c = (_b = requestPayload.grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']) === null || _b === void 0 ? void 0 : _b.user_pin_required) !== null && _c !== void 0 ? _c : false;
116
- }
117
- debug(`Pin required for issuer ${issuer}: ${isPinRequired}`);
118
- return isPinRequired;
119
- }
120
- assertNumericPin(isPinRequired, pin) {
121
- if (isPinRequired) {
122
- if (!pin || !/^\d{1,8}$/.test(pin)) {
123
- debug(`Pin is not 1 to 8 digits long`);
124
- throw new Error('A valid pin consisting of maximal 8 numeric characters must be present.');
125
- }
126
- }
127
- else if (pin) {
128
- debug(`Pin set, whilst not required`);
129
- throw new Error('Cannot set a pin, when the pin is not required.');
130
- }
131
- }
132
- assertNonEmptyPreAuthorizedCode(accessTokenRequest) {
133
- if (!accessTokenRequest[oid4vci_common_1.PRE_AUTH_CODE_LITERAL]) {
134
- debug(`No pre-authorized code present, whilst it is required`);
135
- throw new Error('Pre-authorization must be proven by presenting the pre-authorized code. Code must be present.');
136
- }
137
- }
138
- /*
139
- private assertNonEmptyCodeVerifier(accessTokenRequest: AccessTokenRequest): void {
140
- if (!accessTokenRequest.code_verifier) {
141
- debug('No code_verifier present, whilst it is required');
142
- throw new Error('Authorization flow requires the code_verifier to be present');
143
- }
144
- }
145
- */
146
- assertNonEmptyCode(accessTokenRequest) {
147
- if (!accessTokenRequest.code) {
148
- debug('No code present, whilst it is required');
149
- throw new Error('Authorization flow requires the code to be present');
150
- }
151
- }
152
- assertNonEmptyRedirectUri(accessTokenRequest) {
153
- if (!accessTokenRequest.redirect_uri) {
154
- debug('No redirect_uri present, whilst it is required');
155
- throw new Error('Authorization flow requires the redirect_uri to be present');
156
- }
157
- }
158
- validate(accessTokenRequest, isPinRequired) {
159
- if (accessTokenRequest.grant_type === oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE) {
160
- this.assertPreAuthorizedGrantType(accessTokenRequest.grant_type);
161
- this.assertNonEmptyPreAuthorizedCode(accessTokenRequest);
162
- this.assertNumericPin(isPinRequired, accessTokenRequest.user_pin);
163
- }
164
- else if (accessTokenRequest.grant_type === oid4vci_common_1.GrantTypes.AUTHORIZATION_CODE) {
165
- this.assertAuthorizationGrantType(accessTokenRequest.grant_type);
166
- // this.assertNonEmptyCodeVerifier(accessTokenRequest); TODO figure out of always required, for MOSIP I do not have it
167
- this.assertNonEmptyCode(accessTokenRequest);
168
- this.assertNonEmptyRedirectUri(accessTokenRequest);
169
- }
170
- else {
171
- this.throwNotSupportedFlow;
172
- }
173
- }
174
- sendAuthCode(requestTokenURL, accessTokenRequest, tokenProxyUrl) {
175
- return __awaiter(this, void 0, void 0, function* () {
176
- if (!tokenProxyUrl) {
177
- return yield (0, functions_1.formPost)(requestTokenURL, (0, functions_1.convertJsonToURI)(accessTokenRequest));
178
- }
179
- else {
180
- return yield (0, functions_1.formPost)(tokenProxyUrl, JSON.stringify(Object.assign(Object.assign({}, accessTokenRequest), { issuer_url: requestTokenURL })), { contentType: 'application/json' }); // TODO maybe switch to x-www-form-urlencoded in proxy backend ot support both
181
- }
182
- });
183
- }
184
- static determineTokenURL({ asOpts, issuerOpts, metadata, }) {
185
- if (!asOpts && !(metadata === null || metadata === void 0 ? void 0 : metadata.token_endpoint) && !issuerOpts) {
186
- throw new Error('Cannot determine token URL if no issuer, metadata and no Authorization Server values are present');
187
- }
188
- let url;
189
- if (asOpts && asOpts.as) {
190
- url = this.creatTokenURLFromURL(asOpts.as, asOpts === null || asOpts === void 0 ? void 0 : asOpts.allowInsecureEndpoints, asOpts.tokenEndpoint);
191
- }
192
- else if (metadata === null || metadata === void 0 ? void 0 : metadata.token_endpoint) {
193
- url = metadata.token_endpoint;
194
- }
195
- else {
196
- if (!(issuerOpts === null || issuerOpts === void 0 ? void 0 : issuerOpts.issuer)) {
197
- throw Error('Either authorization server options, a token endpoint or issuer options are required at this point');
198
- }
199
- url = this.creatTokenURLFromURL(issuerOpts.issuer, asOpts === null || asOpts === void 0 ? void 0 : asOpts.allowInsecureEndpoints, issuerOpts.tokenEndpoint);
200
- }
201
- if (!url || !ssi_types_1.ObjectUtils.isString(url)) {
202
- throw new Error('No authorization server token URL present. Cannot acquire access token');
203
- }
204
- debug(`Token endpoint determined to be ${url}`);
205
- return url;
206
- }
207
- static creatTokenURLFromURL(url, allowInsecureEndpoints, tokenEndpoint) {
208
- if (allowInsecureEndpoints !== true && url.startsWith('http:')) {
209
- throw Error(`Unprotected token endpoints are not allowed ${url}. Adjust settings if you really need this (dev/test settings only!!)`);
210
- }
211
- const hostname = url.replace(/https?:\/\//, '').replace(/\/$/, '');
212
- const endpoint = tokenEndpoint ? (tokenEndpoint.startsWith('/') ? tokenEndpoint : tokenEndpoint.substring(1)) : '/token';
213
- const scheme = url.split('://')[0];
214
- return `${scheme ? scheme + '://' : 'https://'}${hostname}${endpoint}`;
215
- }
216
- throwNotSupportedFlow() {
217
- debug(`Only pre-authorized or authorization code flows supported.`);
218
- throw new Error('Only pre-authorized-code or authorization code flows are supported');
219
- }
220
- }
221
- exports.AccessTokenClient = AccessTokenClient;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AccessTokenClient = void 0;
16
+ const oid4vci_common_1 = require("@sphereon/oid4vci-common");
17
+ const ssi_types_1 = require("@sphereon/ssi-types");
18
+ const debug_1 = __importDefault(require("debug"));
19
+ const MetadataClient_1 = require("./MetadataClient");
20
+ const functions_1 = require("./functions");
21
+ const debug = (0, debug_1.default)('sphereon:oid4vci:token');
22
+ class AccessTokenClient {
23
+ acquireAccessToken(opts) {
24
+ var _a;
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const { asOpts, pin, codeVerifier, code, redirectUri, metadata } = opts;
27
+ const credentialOffer = opts.credentialOffer ? yield (0, oid4vci_common_1.assertedUniformCredentialOffer)(opts.credentialOffer) : undefined;
28
+ const isPinRequired = credentialOffer && this.isPinRequiredValue(credentialOffer.credential_offer);
29
+ const issuer = (_a = opts.credentialIssuer) !== null && _a !== void 0 ? _a : (credentialOffer ? (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(credentialOffer.credential_offer) : metadata === null || metadata === void 0 ? void 0 : metadata.issuer);
30
+ if (!issuer) {
31
+ throw Error('Issuer required at this point');
32
+ }
33
+ const issuerOpts = {
34
+ issuer,
35
+ };
36
+ return yield this.acquireAccessTokenUsingRequest({
37
+ accessTokenRequest: yield this.createAccessTokenRequest({
38
+ credentialOffer,
39
+ asOpts,
40
+ codeVerifier,
41
+ code,
42
+ redirectUri,
43
+ pin,
44
+ }),
45
+ isPinRequired,
46
+ metadata,
47
+ asOpts,
48
+ issuerOpts,
49
+ });
50
+ });
51
+ }
52
+ acquireAccessTokenUsingRequest({ accessTokenRequest, isPinRequired, metadata, asOpts, issuerOpts, }) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ this.validate(accessTokenRequest, isPinRequired);
55
+ const requestTokenURL = AccessTokenClient.determineTokenURL({
56
+ asOpts,
57
+ issuerOpts,
58
+ metadata: metadata
59
+ ? metadata
60
+ : (issuerOpts === null || issuerOpts === void 0 ? void 0 : issuerOpts.fetchMetadata)
61
+ ? yield MetadataClient_1.MetadataClient.retrieveAllMetadata(issuerOpts.issuer, { errorOnNotFound: false })
62
+ : undefined,
63
+ });
64
+ return this.sendAuthCode(requestTokenURL, accessTokenRequest);
65
+ });
66
+ }
67
+ createAccessTokenRequest(opts) {
68
+ var _a, _b;
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const { asOpts, pin, codeVerifier, code, redirectUri } = opts;
71
+ const credentialOfferRequest = opts.credentialOffer ? yield (0, oid4vci_common_1.toUniformCredentialOfferRequest)(opts.credentialOffer) : undefined;
72
+ const request = {};
73
+ if (asOpts === null || asOpts === void 0 ? void 0 : asOpts.clientId) {
74
+ request.client_id = asOpts.clientId;
75
+ }
76
+ if (credentialOfferRequest === null || credentialOfferRequest === void 0 ? void 0 : credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
77
+ this.assertNumericPin(this.isPinRequiredValue(credentialOfferRequest.credential_offer), pin);
78
+ request.user_pin = pin;
79
+ request.grant_type = oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE;
80
+ // we actually know it is there because of the isPreAuthCode call
81
+ request[oid4vci_common_1.PRE_AUTH_CODE_LITERAL] =
82
+ (_b = (_a = credentialOfferRequest === null || credentialOfferRequest === void 0 ? void 0 : credentialOfferRequest.credential_offer.grants) === null || _a === void 0 ? void 0 : _a['urn:ietf:params:oauth:grant-type:pre-authorized_code']) === null || _b === void 0 ? void 0 : _b[oid4vci_common_1.PRE_AUTH_CODE_LITERAL];
83
+ return request;
84
+ }
85
+ if (!credentialOfferRequest || credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW)) {
86
+ request.grant_type = oid4vci_common_1.GrantTypes.AUTHORIZATION_CODE;
87
+ request.code = code;
88
+ request.redirect_uri = redirectUri;
89
+ if (codeVerifier) {
90
+ request.code_verifier = codeVerifier;
91
+ }
92
+ return request;
93
+ }
94
+ throw new Error('Credential offer request does not follow neither pre-authorized code nor authorization code flow requirements.');
95
+ });
96
+ }
97
+ assertPreAuthorizedGrantType(grantType) {
98
+ if (oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE !== grantType) {
99
+ throw new Error("grant type must be 'urn:ietf:params:oauth:grant-type:pre-authorized_code'");
100
+ }
101
+ }
102
+ assertAuthorizationGrantType(grantType) {
103
+ if (oid4vci_common_1.GrantTypes.AUTHORIZATION_CODE !== grantType) {
104
+ throw new Error("grant type must be 'authorization_code'");
105
+ }
106
+ }
107
+ isPinRequiredValue(requestPayload) {
108
+ var _a, _b, _c;
109
+ let isPinRequired = false;
110
+ if (!requestPayload) {
111
+ throw new Error(oid4vci_common_1.TokenErrorResponse.invalid_request);
112
+ }
113
+ const issuer = (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(requestPayload);
114
+ if ((_a = requestPayload.grants) === null || _a === void 0 ? void 0 : _a['urn:ietf:params:oauth:grant-type:pre-authorized_code']) {
115
+ isPinRequired = (_c = (_b = requestPayload.grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']) === null || _b === void 0 ? void 0 : _b.user_pin_required) !== null && _c !== void 0 ? _c : false;
116
+ }
117
+ debug(`Pin required for issuer ${issuer}: ${isPinRequired}`);
118
+ return isPinRequired;
119
+ }
120
+ assertNumericPin(isPinRequired, pin) {
121
+ if (isPinRequired) {
122
+ if (!pin || !/^\d{1,8}$/.test(pin)) {
123
+ debug(`Pin is not 1 to 8 digits long`);
124
+ throw new Error('A valid pin consisting of maximal 8 numeric characters must be present.');
125
+ }
126
+ }
127
+ else if (pin) {
128
+ debug(`Pin set, whilst not required`);
129
+ throw new Error('Cannot set a pin, when the pin is not required.');
130
+ }
131
+ }
132
+ assertNonEmptyPreAuthorizedCode(accessTokenRequest) {
133
+ if (!accessTokenRequest[oid4vci_common_1.PRE_AUTH_CODE_LITERAL]) {
134
+ debug(`No pre-authorized code present, whilst it is required`);
135
+ throw new Error('Pre-authorization must be proven by presenting the pre-authorized code. Code must be present.');
136
+ }
137
+ }
138
+ assertNonEmptyCodeVerifier(accessTokenRequest) {
139
+ if (!accessTokenRequest.code_verifier) {
140
+ debug('No code_verifier present, whilst it is required');
141
+ throw new Error('Authorization flow requires the code_verifier to be present');
142
+ }
143
+ }
144
+ assertNonEmptyCode(accessTokenRequest) {
145
+ if (!accessTokenRequest.code) {
146
+ debug('No code present, whilst it is required');
147
+ throw new Error('Authorization flow requires the code to be present');
148
+ }
149
+ }
150
+ assertNonEmptyRedirectUri(accessTokenRequest) {
151
+ if (!accessTokenRequest.redirect_uri) {
152
+ debug('No redirect_uri present, whilst it is required');
153
+ throw new Error('Authorization flow requires the redirect_uri to be present');
154
+ }
155
+ }
156
+ validate(accessTokenRequest, isPinRequired) {
157
+ if (accessTokenRequest.grant_type === oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE) {
158
+ this.assertPreAuthorizedGrantType(accessTokenRequest.grant_type);
159
+ this.assertNonEmptyPreAuthorizedCode(accessTokenRequest);
160
+ this.assertNumericPin(isPinRequired, accessTokenRequest.user_pin);
161
+ }
162
+ else if (accessTokenRequest.grant_type === oid4vci_common_1.GrantTypes.AUTHORIZATION_CODE) {
163
+ this.assertAuthorizationGrantType(accessTokenRequest.grant_type);
164
+ this.assertNonEmptyCodeVerifier(accessTokenRequest);
165
+ this.assertNonEmptyCode(accessTokenRequest);
166
+ this.assertNonEmptyRedirectUri(accessTokenRequest);
167
+ }
168
+ else {
169
+ this.throwNotSupportedFlow();
170
+ }
171
+ }
172
+ sendAuthCode(requestTokenURL, accessTokenRequest) {
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ return yield (0, functions_1.formPost)(requestTokenURL, (0, functions_1.convertJsonToURI)(accessTokenRequest));
175
+ });
176
+ }
177
+ static determineTokenURL({ asOpts, issuerOpts, metadata, }) {
178
+ if (!asOpts && !(metadata === null || metadata === void 0 ? void 0 : metadata.token_endpoint) && !issuerOpts) {
179
+ throw new Error('Cannot determine token URL if no issuer, metadata and no Authorization Server values are present');
180
+ }
181
+ let url;
182
+ if (asOpts && asOpts.as) {
183
+ url = this.creatTokenURLFromURL(asOpts.as, asOpts === null || asOpts === void 0 ? void 0 : asOpts.allowInsecureEndpoints, asOpts.tokenEndpoint);
184
+ }
185
+ else if (metadata === null || metadata === void 0 ? void 0 : metadata.token_endpoint) {
186
+ url = metadata.token_endpoint;
187
+ }
188
+ else {
189
+ if (!(issuerOpts === null || issuerOpts === void 0 ? void 0 : issuerOpts.issuer)) {
190
+ throw Error('Either authorization server options, a token endpoint or issuer options are required at this point');
191
+ }
192
+ url = this.creatTokenURLFromURL(issuerOpts.issuer, asOpts === null || asOpts === void 0 ? void 0 : asOpts.allowInsecureEndpoints, issuerOpts.tokenEndpoint);
193
+ }
194
+ if (!url || !ssi_types_1.ObjectUtils.isString(url)) {
195
+ throw new Error('No authorization server token URL present. Cannot acquire access token');
196
+ }
197
+ debug(`Token endpoint determined to be ${url}`);
198
+ return url;
199
+ }
200
+ static creatTokenURLFromURL(url, allowInsecureEndpoints, tokenEndpoint) {
201
+ if (allowInsecureEndpoints !== true && url.startsWith('http:')) {
202
+ throw Error(`Unprotected token endpoints are not allowed ${url}. Adjust settings if you really need this (dev/test settings only!!)`);
203
+ }
204
+ const hostname = url.replace(/https?:\/\//, '').replace(/\/$/, '');
205
+ const endpoint = tokenEndpoint ? (tokenEndpoint.startsWith('/') ? tokenEndpoint : tokenEndpoint.substring(1)) : '/token';
206
+ const scheme = url.split('://')[0];
207
+ return `${scheme ? scheme + '://' : 'https://'}${hostname}${endpoint}`;
208
+ }
209
+ throwNotSupportedFlow() {
210
+ debug(`Only pre-authorized or authorization code flows supported.`);
211
+ throw new Error('Only pre-authorized-code or authorization code flows are supported');
212
+ }
213
+ }
214
+ exports.AccessTokenClient = AccessTokenClient;
222
215
  //# sourceMappingURL=AccessTokenClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessTokenClient.js","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccessTokenClient.js","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { AuthorizationDetailsJwtVcJson, OID4VCICredentialFormat } from '@sphereon/oid4vci-common';
2
- export declare class AuthorizationDetailsBuilder {
3
- private readonly authorizationDetails;
4
- constructor();
5
- withType(type: string): AuthorizationDetailsBuilder;
6
- withFormats(format: OID4VCICredentialFormat): AuthorizationDetailsBuilder;
7
- withLocations(locations: string[]): AuthorizationDetailsBuilder;
8
- addLocation(location: string): AuthorizationDetailsBuilder;
9
- buildJwtVcJson(): AuthorizationDetailsJwtVcJson;
10
- }
1
+ import { AuthorizationDetailsJwtVcJson, OID4VCICredentialFormat } from '@sphereon/oid4vci-common';
2
+ export declare class AuthorizationDetailsBuilder {
3
+ private readonly authorizationDetails;
4
+ constructor();
5
+ withType(type: string): AuthorizationDetailsBuilder;
6
+ withFormats(format: OID4VCICredentialFormat): AuthorizationDetailsBuilder;
7
+ withLocations(locations: string[]): AuthorizationDetailsBuilder;
8
+ addLocation(location: string): AuthorizationDetailsBuilder;
9
+ buildJwtVcJson(): AuthorizationDetailsJwtVcJson;
10
+ }
11
11
  //# sourceMappingURL=AuthorizationDetailsBuilder.d.ts.map