@sphereon/oid4vci-client 0.8.2-unstable.75 → 0.8.2-unstable.79
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.
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { AccessTokenResponse, Alg, AuthorizationRequestOpts, AuthorizationResponse, AuthzFlowType, CredentialOfferRequestWithBaseUrl, CredentialResponse, CredentialSupported, EndpointMetadataResult, JWK, OID4VCICredentialFormat, OpenId4VCIVersion, PKCEOpts, ProofOfPossessionCallbacks } from '@sphereon/oid4vci-common';
|
|
2
2
|
import { CredentialFormat } from '@sphereon/ssi-types';
|
|
3
|
+
export interface OpenID4VCIClientState {
|
|
4
|
+
credentialIssuer: string;
|
|
5
|
+
credentialOffer?: CredentialOfferRequestWithBaseUrl;
|
|
6
|
+
clientId?: string;
|
|
7
|
+
kid?: string;
|
|
8
|
+
jwk?: JWK;
|
|
9
|
+
alg?: Alg | string;
|
|
10
|
+
endpointMetadata?: EndpointMetadataResult;
|
|
11
|
+
accessTokenResponse?: AccessTokenResponse;
|
|
12
|
+
authorizationRequestOpts?: AuthorizationRequestOpts;
|
|
13
|
+
pkce: PKCEOpts;
|
|
14
|
+
authorizationURL?: string;
|
|
15
|
+
}
|
|
3
16
|
export declare class OpenID4VCIClient {
|
|
4
|
-
private readonly
|
|
5
|
-
private readonly _credentialIssuer;
|
|
6
|
-
private _clientId?;
|
|
7
|
-
private _kid;
|
|
8
|
-
private _jwk;
|
|
9
|
-
private _alg;
|
|
10
|
-
private _endpointMetadata;
|
|
11
|
-
private _accessTokenResponse;
|
|
12
|
-
private _pkce;
|
|
13
|
-
private _authorizationRequestOpts?;
|
|
14
|
-
private _authorizationURL?;
|
|
17
|
+
private readonly _state;
|
|
15
18
|
private constructor();
|
|
16
19
|
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, pkce, authorizationRequest, createAuthorizationRequestURL, }: {
|
|
17
20
|
credentialIssuer: string;
|
|
@@ -23,6 +26,9 @@ export declare class OpenID4VCIClient {
|
|
|
23
26
|
authorizationRequest?: AuthorizationRequestOpts;
|
|
24
27
|
pkce?: PKCEOpts;
|
|
25
28
|
}): Promise<OpenID4VCIClient>;
|
|
29
|
+
static fromState({ state }: {
|
|
30
|
+
state: OpenID4VCIClientState | string;
|
|
31
|
+
}): Promise<OpenID4VCIClient>;
|
|
26
32
|
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, pkce, createAuthorizationRequestURL, authorizationRequest, resolveOfferUri, }: {
|
|
27
33
|
uri: string;
|
|
28
34
|
kid?: string;
|
|
@@ -66,6 +72,7 @@ export declare class OpenID4VCIClient {
|
|
|
66
72
|
deferredCredentialAwait?: boolean;
|
|
67
73
|
deferredCredentialIntervalInMS?: number;
|
|
68
74
|
}): Promise<CredentialResponse>;
|
|
75
|
+
exportState(): Promise<OpenID4VCIClientState>;
|
|
69
76
|
getCredentialsSupported(restrictToInitiationTypes: boolean, format?: (OID4VCICredentialFormat | string) | (OID4VCICredentialFormat | string)[]): CredentialSupported[];
|
|
70
77
|
getCredentialOfferTypes(): string[][];
|
|
71
78
|
issuerSupportedFlowTypes(): AuthzFlowType[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenID4VCIClient.d.ts","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,GAAG,EACH,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EAGb,iCAAiC,EACjC,kBAAkB,EAClB,mBAAmB,EAEnB,sBAAsB,EAKtB,GAAG,EAEH,uBAAuB,EACvB,iBAAiB,EACjB,QAAQ,EACR,0BAA0B,EAE3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAavD,
|
|
1
|
+
{"version":3,"file":"OpenID4VCIClient.d.ts","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
package/dist/OpenID4VCIClient.js
CHANGED
|
@@ -24,22 +24,27 @@ const ProofOfPossessionBuilder_1 = require("./ProofOfPossessionBuilder");
|
|
|
24
24
|
const AuthorizationUtil_1 = require("./functions/AuthorizationUtil");
|
|
25
25
|
const debug = (0, debug_1.default)('sphereon:oid4vci');
|
|
26
26
|
class OpenID4VCIClient {
|
|
27
|
-
constructor({ credentialOffer, clientId, kid, alg, credentialIssuer, pkce, authorizationRequest, }) {
|
|
27
|
+
constructor({ credentialOffer, clientId, kid, alg, credentialIssuer, pkce, authorizationRequest, jwk, endpointMetadata, accessTokenResponse, authorizationRequestOpts, authorizationURL }) {
|
|
28
28
|
var _a;
|
|
29
|
-
this._pkce = { disabled: false, codeChallengeMethod: oid4vci_common_1.CodeChallengeMethod.S256 };
|
|
30
|
-
this._credentialOffer = credentialOffer;
|
|
31
29
|
const issuer = credentialIssuer !== null && credentialIssuer !== void 0 ? credentialIssuer : (credentialOffer ? (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(credentialOffer.credential_offer) : undefined);
|
|
32
30
|
if (!issuer) {
|
|
33
31
|
throw Error('No credential issuer supplied or deduced from offer');
|
|
34
32
|
}
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
this._state = {
|
|
34
|
+
credentialOffer,
|
|
35
|
+
credentialIssuer: issuer,
|
|
36
|
+
kid,
|
|
37
|
+
alg,
|
|
38
|
+
// TODO: We need to refactor this and always explicitly call createAuthorizationRequestUrl, so we can have a credential selection first and use the kid as a default for the client id
|
|
39
|
+
clientId: (_a = clientId !== null && clientId !== void 0 ? clientId : (credentialOffer && (0, oid4vci_common_1.getClientIdFromCredentialOfferPayload)(credentialOffer.credential_offer))) !== null && _a !== void 0 ? _a : kid === null || kid === void 0 ? void 0 : kid.split('#')[0],
|
|
40
|
+
pkce: Object.assign({ disabled: false, codeChallengeMethod: oid4vci_common_1.CodeChallengeMethod.S256 }, pkce),
|
|
41
|
+
jwk,
|
|
42
|
+
endpointMetadata,
|
|
43
|
+
accessTokenResponse,
|
|
44
|
+
authorizationURL
|
|
45
|
+
};
|
|
46
|
+
this._state = Object.assign(Object.assign({}, this._state), { authorizationRequestOpts: authorizationRequestOpts !== null && authorizationRequestOpts !== void 0 ? authorizationRequestOpts : this.syncAuthorizationRequestOpts(authorizationRequest) });
|
|
47
|
+
debug(`Authorization req options: ${JSON.stringify(this._state.authorizationRequestOpts, null, 2)}`);
|
|
43
48
|
}
|
|
44
49
|
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, pkce, authorizationRequest, createAuthorizationRequestURL, }) {
|
|
45
50
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -60,6 +65,12 @@ class OpenID4VCIClient {
|
|
|
60
65
|
return client;
|
|
61
66
|
});
|
|
62
67
|
}
|
|
68
|
+
static fromState({ state }) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const clientState = typeof state === 'string' ? JSON.parse(state) : state;
|
|
71
|
+
return new OpenID4VCIClient(clientState);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
63
74
|
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, pkce, createAuthorizationRequestURL, authorizationRequest, resolveOfferUri, }) {
|
|
64
75
|
var _a;
|
|
65
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -78,7 +89,7 @@ class OpenID4VCIClient {
|
|
|
78
89
|
if (credentialOfferClient.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW) &&
|
|
79
90
|
(createAuthorizationRequestURL === undefined || createAuthorizationRequestURL)) {
|
|
80
91
|
yield client.createAuthorizationRequestUrl({ authorizationRequest, pkce });
|
|
81
|
-
debug(`Authorization Request URL: ${client.
|
|
92
|
+
debug(`Authorization Request URL: ${client._state.authorizationURL}`);
|
|
82
93
|
}
|
|
83
94
|
return client;
|
|
84
95
|
});
|
|
@@ -92,37 +103,37 @@ class OpenID4VCIClient {
|
|
|
92
103
|
createAuthorizationRequestUrl(opts) {
|
|
93
104
|
var _a;
|
|
94
105
|
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
if (!this.
|
|
106
|
+
if (!this._state.authorizationURL) {
|
|
96
107
|
this.calculatePKCEOpts(opts === null || opts === void 0 ? void 0 : opts.pkce);
|
|
97
|
-
this.
|
|
98
|
-
if (!this.
|
|
108
|
+
this._state.authorizationRequestOpts = this.syncAuthorizationRequestOpts(opts === null || opts === void 0 ? void 0 : opts.authorizationRequest);
|
|
109
|
+
if (!this._state.authorizationRequestOpts) {
|
|
99
110
|
throw Error(`No Authorization Request options present or provided in this call`);
|
|
100
111
|
}
|
|
101
112
|
// todo: Probably can go with current logic in MetadataClient who will always set the authorization_endpoint when found
|
|
102
113
|
// handling this because of the support for v1_0-08
|
|
103
|
-
if (((_a = this.
|
|
104
|
-
this.
|
|
114
|
+
if (((_a = this._state.endpointMetadata) === null || _a === void 0 ? void 0 : _a.credentialIssuerMetadata) && 'authorization_endpoint' in this._state.endpointMetadata.credentialIssuerMetadata) {
|
|
115
|
+
this._state.endpointMetadata.authorization_endpoint = this._state.endpointMetadata.credentialIssuerMetadata.authorization_endpoint;
|
|
105
116
|
}
|
|
106
|
-
this.
|
|
107
|
-
pkce: this.
|
|
117
|
+
this._state.authorizationURL = yield (0, AuthorizationCodeClient_1.createAuthorizationRequestUrl)({
|
|
118
|
+
pkce: this._state.pkce,
|
|
108
119
|
endpointMetadata: this.endpointMetadata,
|
|
109
|
-
authorizationRequest: this.
|
|
120
|
+
authorizationRequest: this._state.authorizationRequestOpts,
|
|
110
121
|
credentialOffer: this.credentialOffer,
|
|
111
122
|
credentialsSupported: this.getCredentialsSupported(true),
|
|
112
123
|
});
|
|
113
124
|
}
|
|
114
|
-
return this.
|
|
125
|
+
return this._state.authorizationURL;
|
|
115
126
|
});
|
|
116
127
|
}
|
|
117
128
|
retrieveServerMetadata() {
|
|
118
129
|
return __awaiter(this, void 0, void 0, function* () {
|
|
119
130
|
this.assertIssuerData();
|
|
120
|
-
if (!this.
|
|
131
|
+
if (!this._state.endpointMetadata) {
|
|
121
132
|
if (this.credentialOffer) {
|
|
122
|
-
this.
|
|
133
|
+
this._state.endpointMetadata = yield MetadataClient_1.MetadataClient.retrieveAllMetadataFromCredentialOffer(this.credentialOffer);
|
|
123
134
|
}
|
|
124
|
-
else if (this.
|
|
125
|
-
this.
|
|
135
|
+
else if (this._state.credentialIssuer) {
|
|
136
|
+
this._state.endpointMetadata = yield MetadataClient_1.MetadataClient.retrieveAllMetadata(this._state.credentialIssuer);
|
|
126
137
|
}
|
|
127
138
|
else {
|
|
128
139
|
throw Error(`Cannot retrieve issuer metadata without either a credential offer, or issuer value`);
|
|
@@ -132,7 +143,7 @@ class OpenID4VCIClient {
|
|
|
132
143
|
});
|
|
133
144
|
}
|
|
134
145
|
calculatePKCEOpts(pkce) {
|
|
135
|
-
this.
|
|
146
|
+
this._state.pkce = (0, AuthorizationUtil_1.generateMissingPKCEOpts)(Object.assign(Object.assign({}, this._state.pkce), pkce));
|
|
136
147
|
}
|
|
137
148
|
acquireAccessToken(opts) {
|
|
138
149
|
var _a, _b, _c, _d, _e, _f;
|
|
@@ -141,31 +152,31 @@ class OpenID4VCIClient {
|
|
|
141
152
|
let { redirectUri } = opts !== null && opts !== void 0 ? opts : {};
|
|
142
153
|
const code = (_a = opts === null || opts === void 0 ? void 0 : opts.code) !== null && _a !== void 0 ? _a : ((opts === null || opts === void 0 ? void 0 : opts.authorizationResponse) ? (0, oid4vci_common_1.toAuthorizationResponsePayload)(opts.authorizationResponse).code : undefined);
|
|
143
154
|
if (opts === null || opts === void 0 ? void 0 : opts.codeVerifier) {
|
|
144
|
-
this.
|
|
155
|
+
this._state.pkce.codeVerifier = opts.codeVerifier;
|
|
145
156
|
}
|
|
146
157
|
this.assertIssuerData();
|
|
147
158
|
if (clientId) {
|
|
148
|
-
this.
|
|
159
|
+
this._state.clientId = clientId;
|
|
149
160
|
}
|
|
150
|
-
if (!this.
|
|
161
|
+
if (!this._state.accessTokenResponse) {
|
|
151
162
|
const accessTokenClient = new AccessTokenClient_1.AccessTokenClient();
|
|
152
|
-
if (redirectUri && redirectUri !== ((_b = this.
|
|
153
|
-
console.log(`Redirect URI mismatch between access-token (${redirectUri}) and authorization request (${(_c = this.
|
|
163
|
+
if (redirectUri && redirectUri !== ((_b = this._state.authorizationRequestOpts) === null || _b === void 0 ? void 0 : _b.redirectUri)) {
|
|
164
|
+
console.log(`Redirect URI mismatch between access-token (${redirectUri}) and authorization request (${(_c = this._state.authorizationRequestOpts) === null || _c === void 0 ? void 0 : _c.redirectUri}). According to the specification that is not allowed.`);
|
|
154
165
|
}
|
|
155
|
-
if (((_d = this.
|
|
156
|
-
redirectUri = this.
|
|
166
|
+
if (((_d = this._state.authorizationRequestOpts) === null || _d === void 0 ? void 0 : _d.redirectUri) && !redirectUri) {
|
|
167
|
+
redirectUri = this._state.authorizationRequestOpts.redirectUri;
|
|
157
168
|
}
|
|
158
|
-
const response = yield accessTokenClient.acquireAccessToken(Object.assign(Object.assign({ credentialOffer: this.credentialOffer, metadata: this.endpointMetadata, credentialIssuer: this.getIssuer(), pin }, (!this.
|
|
169
|
+
const response = yield accessTokenClient.acquireAccessToken(Object.assign(Object.assign({ credentialOffer: this.credentialOffer, metadata: this.endpointMetadata, credentialIssuer: this.getIssuer(), pin }, (!this._state.pkce.disabled && { codeVerifier: this._state.pkce.codeVerifier })), { code,
|
|
159
170
|
redirectUri, asOpts: { clientId: this.clientId } }));
|
|
160
171
|
if (response.errorBody) {
|
|
161
172
|
debug(`Access token error:\r\n${response.errorBody}`);
|
|
162
|
-
throw Error(`Retrieving an access token from ${(_e = this.
|
|
173
|
+
throw Error(`Retrieving an access token from ${(_e = this._state.endpointMetadata) === null || _e === void 0 ? void 0 : _e.token_endpoint} for issuer ${this.getIssuer()} failed with status: ${response.origResponse.status}`);
|
|
163
174
|
}
|
|
164
175
|
else if (!response.successBody) {
|
|
165
176
|
debug(`Access token error. No success body`);
|
|
166
|
-
throw Error(`Retrieving an access token from ${(_f = this.
|
|
177
|
+
throw Error(`Retrieving an access token from ${(_f = this._state.endpointMetadata) === null || _f === void 0 ? void 0 : _f.token_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`);
|
|
167
178
|
}
|
|
168
|
-
this.
|
|
179
|
+
this._state.accessTokenResponse = response.successBody;
|
|
169
180
|
}
|
|
170
181
|
return this.accessTokenResponse;
|
|
171
182
|
});
|
|
@@ -177,11 +188,11 @@ class OpenID4VCIClient {
|
|
|
177
188
|
throw new Error(oid4vci_common_1.KID_JWK_X5C_ERROR + `. jwk: ${jwk !== undefined}, kid: ${kid !== undefined}`);
|
|
178
189
|
}
|
|
179
190
|
if (alg)
|
|
180
|
-
this.
|
|
191
|
+
this._state.alg = alg;
|
|
181
192
|
if (jwk)
|
|
182
|
-
this.
|
|
193
|
+
this._state.jwk = jwk;
|
|
183
194
|
if (kid)
|
|
184
|
-
this.
|
|
195
|
+
this._state.kid = kid;
|
|
185
196
|
const requestBuilder = this.credentialOffer
|
|
186
197
|
? CredentialRequestClientBuilder_1.CredentialRequestClientBuilder.fromCredentialOffer({
|
|
187
198
|
credentialOffer: this.credentialOffer,
|
|
@@ -228,11 +239,11 @@ class OpenID4VCIClient {
|
|
|
228
239
|
})
|
|
229
240
|
.withIssuer(this.getIssuer())
|
|
230
241
|
.withAlg(this.alg);
|
|
231
|
-
if (this.
|
|
232
|
-
proofBuilder.withJWK(this.
|
|
242
|
+
if (this._state.jwk) {
|
|
243
|
+
proofBuilder.withJWK(this._state.jwk);
|
|
233
244
|
}
|
|
234
|
-
if (this.
|
|
235
|
-
proofBuilder.withKid(this.
|
|
245
|
+
if (this._state.kid) {
|
|
246
|
+
proofBuilder.withKid(this._state.kid);
|
|
236
247
|
}
|
|
237
248
|
if (this.clientId) {
|
|
238
249
|
proofBuilder.withClientId(this.clientId);
|
|
@@ -248,15 +259,20 @@ class OpenID4VCIClient {
|
|
|
248
259
|
});
|
|
249
260
|
if (response.errorBody) {
|
|
250
261
|
debug(`Credential request error:\r\n${JSON.stringify(response.errorBody)}`);
|
|
251
|
-
throw Error(`Retrieving a credential from ${(_b = this.
|
|
262
|
+
throw Error(`Retrieving a credential from ${(_b = this._state.endpointMetadata) === null || _b === void 0 ? void 0 : _b.credential_endpoint} for issuer ${this.getIssuer()} failed with status: ${response.origResponse.status}`);
|
|
252
263
|
}
|
|
253
264
|
else if (!response.successBody) {
|
|
254
265
|
debug(`Credential request error. No success body`);
|
|
255
|
-
throw Error(`Retrieving a credential from ${(_c = this.
|
|
266
|
+
throw Error(`Retrieving a credential from ${(_c = this._state.endpointMetadata) === null || _c === void 0 ? void 0 : _c.credential_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`);
|
|
256
267
|
}
|
|
257
268
|
return response.successBody;
|
|
258
269
|
});
|
|
259
270
|
}
|
|
271
|
+
exportState() {
|
|
272
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
273
|
+
return this._state;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
260
276
|
// FIXME: We really should convert <v11 to v12 objects first. Right now the logic doesn't map nicely and is brittle.
|
|
261
277
|
// We should resolve IDs to objects first in case of strings.
|
|
262
278
|
// When < v11 convert into a v12 object. When v12 object retain it.
|
|
@@ -299,19 +315,19 @@ class OpenID4VCIClient {
|
|
|
299
315
|
}
|
|
300
316
|
issuerSupportedFlowTypes() {
|
|
301
317
|
var _a, _b, _c, _d;
|
|
302
|
-
return ((_b = (_a = this.credentialOffer) === null || _a === void 0 ? void 0 : _a.supportedFlows) !== null && _b !== void 0 ? _b : (((_d = (_c = this.
|
|
318
|
+
return ((_b = (_a = this.credentialOffer) === null || _a === void 0 ? void 0 : _a.supportedFlows) !== null && _b !== void 0 ? _b : (((_d = (_c = this._state.endpointMetadata) === null || _c === void 0 ? void 0 : _c.credentialIssuerMetadata) === null || _d === void 0 ? void 0 : _d.authorization_endpoint) ? [oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW] : []));
|
|
303
319
|
}
|
|
304
320
|
isFlowTypeSupported(flowType) {
|
|
305
321
|
return this.issuerSupportedFlowTypes().includes(flowType);
|
|
306
322
|
}
|
|
307
323
|
get authorizationURL() {
|
|
308
|
-
return this.
|
|
324
|
+
return this._state.authorizationURL;
|
|
309
325
|
}
|
|
310
326
|
hasAuthorizationURL() {
|
|
311
327
|
return !!this.authorizationURL;
|
|
312
328
|
}
|
|
313
329
|
get credentialOffer() {
|
|
314
|
-
return this.
|
|
330
|
+
return this._state.credentialOffer;
|
|
315
331
|
}
|
|
316
332
|
version() {
|
|
317
333
|
var _a, _b;
|
|
@@ -320,39 +336,39 @@ class OpenID4VCIClient {
|
|
|
320
336
|
get endpointMetadata() {
|
|
321
337
|
this.assertServerMetadata();
|
|
322
338
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
323
|
-
return this.
|
|
339
|
+
return this._state.endpointMetadata;
|
|
324
340
|
}
|
|
325
341
|
get kid() {
|
|
326
342
|
this.assertIssuerData();
|
|
327
|
-
if (!this.
|
|
343
|
+
if (!this._state.kid) {
|
|
328
344
|
throw new Error('No value for kid is supplied');
|
|
329
345
|
}
|
|
330
|
-
return this.
|
|
346
|
+
return this._state.kid;
|
|
331
347
|
}
|
|
332
348
|
get alg() {
|
|
333
349
|
this.assertIssuerData();
|
|
334
|
-
if (!this.
|
|
350
|
+
if (!this._state.alg) {
|
|
335
351
|
throw new Error('No value for alg is supplied');
|
|
336
352
|
}
|
|
337
|
-
return this.
|
|
353
|
+
return this._state.alg;
|
|
338
354
|
}
|
|
339
355
|
set clientId(value) {
|
|
340
|
-
this.
|
|
356
|
+
this._state.clientId = value;
|
|
341
357
|
}
|
|
342
358
|
get clientId() {
|
|
343
|
-
return this.
|
|
359
|
+
return this._state.clientId;
|
|
344
360
|
}
|
|
345
361
|
hasAccessTokenResponse() {
|
|
346
|
-
return !!this.
|
|
362
|
+
return !!this._state.accessTokenResponse;
|
|
347
363
|
}
|
|
348
364
|
get accessTokenResponse() {
|
|
349
365
|
this.assertAccessToken();
|
|
350
366
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
351
|
-
return this.
|
|
367
|
+
return this._state.accessTokenResponse;
|
|
352
368
|
}
|
|
353
369
|
getIssuer() {
|
|
354
370
|
this.assertIssuerData();
|
|
355
|
-
return this.
|
|
371
|
+
return this._state.credentialIssuer;
|
|
356
372
|
}
|
|
357
373
|
getAccessTokenEndpoint() {
|
|
358
374
|
this.assertIssuerData();
|
|
@@ -386,35 +402,35 @@ class OpenID4VCIClient {
|
|
|
386
402
|
return (_c = (_b = this.endpointMetadata.credentialIssuerMetadata) === null || _b === void 0 ? void 0 : _b.authorization_endpoint) === null || _c === void 0 ? void 0 : _c.includes('ebsi.eu');
|
|
387
403
|
}
|
|
388
404
|
assertIssuerData() {
|
|
389
|
-
if (!this.
|
|
405
|
+
if (!this._state.credentialIssuer) {
|
|
390
406
|
throw Error(`No credential issuer value present`);
|
|
391
407
|
}
|
|
392
|
-
else if (!this.
|
|
408
|
+
else if (!this._state.credentialOffer && this._state.endpointMetadata && this.issuerSupportedFlowTypes().length === 0) {
|
|
393
409
|
throw Error(`No issuance initiation or credential offer present`);
|
|
394
410
|
}
|
|
395
411
|
}
|
|
396
412
|
assertServerMetadata() {
|
|
397
|
-
if (!this.
|
|
413
|
+
if (!this._state.endpointMetadata) {
|
|
398
414
|
throw Error('No server metadata');
|
|
399
415
|
}
|
|
400
416
|
}
|
|
401
417
|
assertAccessToken() {
|
|
402
|
-
if (!this.
|
|
418
|
+
if (!this._state.accessTokenResponse) {
|
|
403
419
|
throw Error(`No access token present`);
|
|
404
420
|
}
|
|
405
421
|
}
|
|
406
422
|
syncAuthorizationRequestOpts(opts) {
|
|
407
|
-
var _a;
|
|
408
|
-
let authorizationRequestOpts = Object.assign(Object.assign({}, this.
|
|
423
|
+
var _a, _b;
|
|
424
|
+
let authorizationRequestOpts = Object.assign(Object.assign({}, (_a = this._state) === null || _a === void 0 ? void 0 : _a.authorizationRequestOpts), opts);
|
|
409
425
|
if (!authorizationRequestOpts) {
|
|
410
426
|
// We only set a redirectUri if no options are provided.
|
|
411
427
|
// Note that this only works for mobile apps, that can handle a code query param on the default openid-credential-offer deeplink.
|
|
412
428
|
// Provide your own options if that is not desired!
|
|
413
429
|
authorizationRequestOpts = { redirectUri: `${oid4vci_common_1.DefaultURISchemes.CREDENTIAL_OFFER}://` };
|
|
414
430
|
}
|
|
415
|
-
const clientId = (
|
|
431
|
+
const clientId = (_b = authorizationRequestOpts.clientId) !== null && _b !== void 0 ? _b : this._state.clientId;
|
|
416
432
|
// sync clientId
|
|
417
|
-
this.
|
|
433
|
+
this._state.clientId = clientId;
|
|
418
434
|
authorizationRequestOpts.clientId = clientId;
|
|
419
435
|
return authorizationRequestOpts;
|
|
420
436
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenID4VCIClient.js","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenID4VCIClient.js","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
package/lib/OpenID4VCIClient.ts
CHANGED
|
@@ -36,19 +36,22 @@ import { generateMissingPKCEOpts } from './functions/AuthorizationUtil';
|
|
|
36
36
|
|
|
37
37
|
const debug = Debug('sphereon:oid4vci');
|
|
38
38
|
|
|
39
|
+
export interface OpenID4VCIClientState {
|
|
40
|
+
credentialIssuer: string;
|
|
41
|
+
credentialOffer?: CredentialOfferRequestWithBaseUrl
|
|
42
|
+
clientId?: string;
|
|
43
|
+
kid?: string;
|
|
44
|
+
jwk?: JWK;
|
|
45
|
+
alg?: Alg | string;
|
|
46
|
+
endpointMetadata?: EndpointMetadataResult;
|
|
47
|
+
accessTokenResponse?: AccessTokenResponse;
|
|
48
|
+
authorizationRequestOpts?: AuthorizationRequestOpts;
|
|
49
|
+
pkce: PKCEOpts;
|
|
50
|
+
authorizationURL?: string;
|
|
51
|
+
}
|
|
52
|
+
|
|
39
53
|
export class OpenID4VCIClient {
|
|
40
|
-
private readonly
|
|
41
|
-
private readonly _credentialIssuer: string;
|
|
42
|
-
private _clientId?: string;
|
|
43
|
-
private _kid: string | undefined;
|
|
44
|
-
private _jwk: JWK | undefined;
|
|
45
|
-
private _alg: Alg | string | undefined;
|
|
46
|
-
private _endpointMetadata: EndpointMetadataResult | undefined;
|
|
47
|
-
private _accessTokenResponse: AccessTokenResponse | undefined;
|
|
48
|
-
private _pkce: PKCEOpts = { disabled: false, codeChallengeMethod: CodeChallengeMethod.S256 };
|
|
49
|
-
private _authorizationRequestOpts?: AuthorizationRequestOpts;
|
|
50
|
-
|
|
51
|
-
private _authorizationURL?: string;
|
|
54
|
+
private readonly _state: OpenID4VCIClientState;
|
|
52
55
|
|
|
53
56
|
private constructor({
|
|
54
57
|
credentialOffer,
|
|
@@ -58,6 +61,11 @@ export class OpenID4VCIClient {
|
|
|
58
61
|
credentialIssuer,
|
|
59
62
|
pkce,
|
|
60
63
|
authorizationRequest,
|
|
64
|
+
jwk,
|
|
65
|
+
endpointMetadata,
|
|
66
|
+
accessTokenResponse,
|
|
67
|
+
authorizationRequestOpts,
|
|
68
|
+
authorizationURL
|
|
61
69
|
}: {
|
|
62
70
|
credentialOffer?: CredentialOfferRequestWithBaseUrl;
|
|
63
71
|
kid?: string;
|
|
@@ -66,20 +74,34 @@ export class OpenID4VCIClient {
|
|
|
66
74
|
credentialIssuer?: string;
|
|
67
75
|
pkce?: PKCEOpts;
|
|
68
76
|
authorizationRequest?: AuthorizationRequestOpts; // Can be provided here, or when manually calling createAuthorizationUrl
|
|
77
|
+
jwk?: JWK;
|
|
78
|
+
endpointMetadata?: EndpointMetadataResult;
|
|
79
|
+
accessTokenResponse?: AccessTokenResponse;
|
|
80
|
+
authorizationRequestOpts?: AuthorizationRequestOpts;
|
|
81
|
+
authorizationURL?: string;
|
|
69
82
|
}) {
|
|
70
|
-
this._credentialOffer = credentialOffer;
|
|
71
83
|
const issuer = credentialIssuer ?? (credentialOffer ? getIssuerFromCredentialOfferPayload(credentialOffer.credential_offer) : undefined);
|
|
72
84
|
if (!issuer) {
|
|
73
85
|
throw Error('No credential issuer supplied or deduced from offer');
|
|
74
86
|
}
|
|
75
|
-
this.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
87
|
+
this._state = {
|
|
88
|
+
credentialOffer,
|
|
89
|
+
credentialIssuer: issuer,
|
|
90
|
+
kid,
|
|
91
|
+
alg,
|
|
92
|
+
// TODO: We need to refactor this and always explicitly call createAuthorizationRequestUrl, so we can have a credential selection first and use the kid as a default for the client id
|
|
93
|
+
clientId: clientId ?? (credentialOffer && getClientIdFromCredentialOfferPayload(credentialOffer.credential_offer)) ?? kid?.split('#')[0],
|
|
94
|
+
pkce: { disabled: false, codeChallengeMethod: CodeChallengeMethod.S256, ...pkce },
|
|
95
|
+
jwk,
|
|
96
|
+
endpointMetadata,
|
|
97
|
+
accessTokenResponse,
|
|
98
|
+
authorizationURL
|
|
99
|
+
}
|
|
100
|
+
this._state = {
|
|
101
|
+
...this._state,
|
|
102
|
+
authorizationRequestOpts: authorizationRequestOpts ?? this.syncAuthorizationRequestOpts(authorizationRequest),
|
|
103
|
+
}
|
|
104
|
+
debug(`Authorization req options: ${JSON.stringify(this._state.authorizationRequestOpts, null, 2)}`);
|
|
83
105
|
}
|
|
84
106
|
|
|
85
107
|
public static async fromCredentialIssuer({
|
|
@@ -118,6 +140,12 @@ export class OpenID4VCIClient {
|
|
|
118
140
|
return client;
|
|
119
141
|
}
|
|
120
142
|
|
|
143
|
+
public static async fromState({ state }: {state: OpenID4VCIClientState | string }): Promise<OpenID4VCIClient> {
|
|
144
|
+
const clientState = typeof state === 'string' ? JSON.parse(state) : state
|
|
145
|
+
|
|
146
|
+
return new OpenID4VCIClient(clientState);
|
|
147
|
+
}
|
|
148
|
+
|
|
121
149
|
public static async fromURI({
|
|
122
150
|
uri,
|
|
123
151
|
kid,
|
|
@@ -157,7 +185,7 @@ export class OpenID4VCIClient {
|
|
|
157
185
|
(createAuthorizationRequestURL === undefined || createAuthorizationRequestURL)
|
|
158
186
|
) {
|
|
159
187
|
await client.createAuthorizationRequestUrl({ authorizationRequest, pkce });
|
|
160
|
-
debug(`Authorization Request URL: ${client.
|
|
188
|
+
debug(`Authorization Request URL: ${client._state.authorizationURL}`);
|
|
161
189
|
}
|
|
162
190
|
|
|
163
191
|
return client;
|
|
@@ -170,36 +198,36 @@ export class OpenID4VCIClient {
|
|
|
170
198
|
* @param opts
|
|
171
199
|
*/
|
|
172
200
|
public async createAuthorizationRequestUrl(opts?: { authorizationRequest?: AuthorizationRequestOpts; pkce?: PKCEOpts }): Promise<string> {
|
|
173
|
-
if (!this.
|
|
201
|
+
if (!this._state.authorizationURL) {
|
|
174
202
|
this.calculatePKCEOpts(opts?.pkce);
|
|
175
|
-
this.
|
|
176
|
-
if (!this.
|
|
203
|
+
this._state.authorizationRequestOpts = this.syncAuthorizationRequestOpts(opts?.authorizationRequest);
|
|
204
|
+
if (!this._state.authorizationRequestOpts) {
|
|
177
205
|
throw Error(`No Authorization Request options present or provided in this call`);
|
|
178
206
|
}
|
|
179
207
|
|
|
180
208
|
// todo: Probably can go with current logic in MetadataClient who will always set the authorization_endpoint when found
|
|
181
209
|
// handling this because of the support for v1_0-08
|
|
182
|
-
if (this.
|
|
183
|
-
this.
|
|
210
|
+
if (this._state.endpointMetadata?.credentialIssuerMetadata && 'authorization_endpoint' in this._state.endpointMetadata.credentialIssuerMetadata) {
|
|
211
|
+
this._state.endpointMetadata.authorization_endpoint = this._state.endpointMetadata.credentialIssuerMetadata.authorization_endpoint as string;
|
|
184
212
|
}
|
|
185
|
-
this.
|
|
186
|
-
pkce: this.
|
|
213
|
+
this._state.authorizationURL = await createAuthorizationRequestUrl({
|
|
214
|
+
pkce: this._state.pkce,
|
|
187
215
|
endpointMetadata: this.endpointMetadata,
|
|
188
|
-
authorizationRequest: this.
|
|
216
|
+
authorizationRequest: this._state.authorizationRequestOpts,
|
|
189
217
|
credentialOffer: this.credentialOffer,
|
|
190
218
|
credentialsSupported: this.getCredentialsSupported(true),
|
|
191
219
|
});
|
|
192
220
|
}
|
|
193
|
-
return this.
|
|
221
|
+
return this._state.authorizationURL;
|
|
194
222
|
}
|
|
195
223
|
|
|
196
224
|
public async retrieveServerMetadata(): Promise<EndpointMetadataResult> {
|
|
197
225
|
this.assertIssuerData();
|
|
198
|
-
if (!this.
|
|
226
|
+
if (!this._state.endpointMetadata) {
|
|
199
227
|
if (this.credentialOffer) {
|
|
200
|
-
this.
|
|
201
|
-
} else if (this.
|
|
202
|
-
this.
|
|
228
|
+
this._state.endpointMetadata = await MetadataClient.retrieveAllMetadataFromCredentialOffer(this.credentialOffer);
|
|
229
|
+
} else if (this._state.credentialIssuer) {
|
|
230
|
+
this._state.endpointMetadata = await MetadataClient.retrieveAllMetadata(this._state.credentialIssuer);
|
|
203
231
|
} else {
|
|
204
232
|
throw Error(`Cannot retrieve issuer metadata without either a credential offer, or issuer value`);
|
|
205
233
|
}
|
|
@@ -209,7 +237,7 @@ export class OpenID4VCIClient {
|
|
|
209
237
|
}
|
|
210
238
|
|
|
211
239
|
private calculatePKCEOpts(pkce?: PKCEOpts) {
|
|
212
|
-
this.
|
|
240
|
+
this._state.pkce = generateMissingPKCEOpts({ ...this._state.pkce, ...pkce });
|
|
213
241
|
}
|
|
214
242
|
|
|
215
243
|
public async acquireAccessToken(opts?: {
|
|
@@ -225,23 +253,23 @@ export class OpenID4VCIClient {
|
|
|
225
253
|
const code = opts?.code ?? (opts?.authorizationResponse ? toAuthorizationResponsePayload(opts.authorizationResponse).code : undefined);
|
|
226
254
|
|
|
227
255
|
if (opts?.codeVerifier) {
|
|
228
|
-
this.
|
|
256
|
+
this._state.pkce.codeVerifier = opts.codeVerifier;
|
|
229
257
|
}
|
|
230
258
|
this.assertIssuerData();
|
|
231
259
|
|
|
232
260
|
if (clientId) {
|
|
233
|
-
this.
|
|
261
|
+
this._state.clientId = clientId;
|
|
234
262
|
}
|
|
235
|
-
if (!this.
|
|
263
|
+
if (!this._state.accessTokenResponse) {
|
|
236
264
|
const accessTokenClient = new AccessTokenClient();
|
|
237
265
|
|
|
238
|
-
if (redirectUri && redirectUri !== this.
|
|
266
|
+
if (redirectUri && redirectUri !== this._state.authorizationRequestOpts?.redirectUri) {
|
|
239
267
|
console.log(
|
|
240
|
-
`Redirect URI mismatch between access-token (${redirectUri}) and authorization request (${this.
|
|
268
|
+
`Redirect URI mismatch between access-token (${redirectUri}) and authorization request (${this._state.authorizationRequestOpts?.redirectUri}). According to the specification that is not allowed.`,
|
|
241
269
|
);
|
|
242
270
|
}
|
|
243
|
-
if (this.
|
|
244
|
-
redirectUri = this.
|
|
271
|
+
if (this._state.authorizationRequestOpts?.redirectUri && !redirectUri) {
|
|
272
|
+
redirectUri = this._state.authorizationRequestOpts.redirectUri;
|
|
245
273
|
}
|
|
246
274
|
|
|
247
275
|
const response = await accessTokenClient.acquireAccessToken({
|
|
@@ -249,7 +277,7 @@ export class OpenID4VCIClient {
|
|
|
249
277
|
metadata: this.endpointMetadata,
|
|
250
278
|
credentialIssuer: this.getIssuer(),
|
|
251
279
|
pin,
|
|
252
|
-
...(!this.
|
|
280
|
+
...(!this._state.pkce.disabled && { codeVerifier: this._state.pkce.codeVerifier }),
|
|
253
281
|
code,
|
|
254
282
|
redirectUri,
|
|
255
283
|
asOpts: { clientId: this.clientId },
|
|
@@ -258,18 +286,18 @@ export class OpenID4VCIClient {
|
|
|
258
286
|
if (response.errorBody) {
|
|
259
287
|
debug(`Access token error:\r\n${response.errorBody}`);
|
|
260
288
|
throw Error(
|
|
261
|
-
`Retrieving an access token from ${this.
|
|
289
|
+
`Retrieving an access token from ${this._state.endpointMetadata?.token_endpoint} for issuer ${this.getIssuer()} failed with status: ${
|
|
262
290
|
response.origResponse.status
|
|
263
291
|
}`,
|
|
264
292
|
);
|
|
265
293
|
} else if (!response.successBody) {
|
|
266
294
|
debug(`Access token error. No success body`);
|
|
267
295
|
throw Error(
|
|
268
|
-
`Retrieving an access token from ${this.
|
|
296
|
+
`Retrieving an access token from ${this._state.endpointMetadata
|
|
269
297
|
?.token_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`,
|
|
270
298
|
);
|
|
271
299
|
}
|
|
272
|
-
this.
|
|
300
|
+
this._state.accessTokenResponse = response.successBody;
|
|
273
301
|
}
|
|
274
302
|
|
|
275
303
|
return this.accessTokenResponse;
|
|
@@ -302,9 +330,9 @@ export class OpenID4VCIClient {
|
|
|
302
330
|
throw new Error(KID_JWK_X5C_ERROR + `. jwk: ${jwk !== undefined}, kid: ${kid !== undefined}`);
|
|
303
331
|
}
|
|
304
332
|
|
|
305
|
-
if (alg) this.
|
|
306
|
-
if (jwk) this.
|
|
307
|
-
if (kid) this.
|
|
333
|
+
if (alg) this._state.alg = alg;
|
|
334
|
+
if (jwk) this._state.jwk = jwk;
|
|
335
|
+
if (kid) this._state.kid = kid;
|
|
308
336
|
|
|
309
337
|
const requestBuilder = this.credentialOffer
|
|
310
338
|
? CredentialRequestClientBuilder.fromCredentialOffer({
|
|
@@ -358,11 +386,11 @@ export class OpenID4VCIClient {
|
|
|
358
386
|
.withIssuer(this.getIssuer())
|
|
359
387
|
.withAlg(this.alg);
|
|
360
388
|
|
|
361
|
-
if (this.
|
|
362
|
-
proofBuilder.withJWK(this.
|
|
389
|
+
if (this._state.jwk) {
|
|
390
|
+
proofBuilder.withJWK(this._state.jwk);
|
|
363
391
|
}
|
|
364
|
-
if (this.
|
|
365
|
-
proofBuilder.withKid(this.
|
|
392
|
+
if (this._state.kid) {
|
|
393
|
+
proofBuilder.withKid(this._state.kid);
|
|
366
394
|
}
|
|
367
395
|
|
|
368
396
|
if (this.clientId) {
|
|
@@ -380,20 +408,24 @@ export class OpenID4VCIClient {
|
|
|
380
408
|
if (response.errorBody) {
|
|
381
409
|
debug(`Credential request error:\r\n${JSON.stringify(response.errorBody)}`);
|
|
382
410
|
throw Error(
|
|
383
|
-
`Retrieving a credential from ${this.
|
|
411
|
+
`Retrieving a credential from ${this._state.endpointMetadata?.credential_endpoint} for issuer ${this.getIssuer()} failed with status: ${
|
|
384
412
|
response.origResponse.status
|
|
385
413
|
}`,
|
|
386
414
|
);
|
|
387
415
|
} else if (!response.successBody) {
|
|
388
416
|
debug(`Credential request error. No success body`);
|
|
389
417
|
throw Error(
|
|
390
|
-
`Retrieving a credential from ${this.
|
|
418
|
+
`Retrieving a credential from ${this._state.endpointMetadata
|
|
391
419
|
?.credential_endpoint} for issuer ${this.getIssuer()} failed as there was no success response body`,
|
|
392
420
|
);
|
|
393
421
|
}
|
|
394
422
|
return response.successBody;
|
|
395
423
|
}
|
|
396
424
|
|
|
425
|
+
public async exportState(): Promise<OpenID4VCIClientState> {
|
|
426
|
+
return this._state
|
|
427
|
+
}
|
|
428
|
+
|
|
397
429
|
// FIXME: We really should convert <v11 to v12 objects first. Right now the logic doesn't map nicely and is brittle.
|
|
398
430
|
// We should resolve IDs to objects first in case of strings.
|
|
399
431
|
// When < v11 convert into a v12 object. When v12 object retain it.
|
|
@@ -437,7 +469,7 @@ export class OpenID4VCIClient {
|
|
|
437
469
|
issuerSupportedFlowTypes(): AuthzFlowType[] {
|
|
438
470
|
return (
|
|
439
471
|
this.credentialOffer?.supportedFlows ??
|
|
440
|
-
(this.
|
|
472
|
+
(this._state.endpointMetadata?.credentialIssuerMetadata?.authorization_endpoint ? [AuthzFlowType.AUTHORIZATION_CODE_FLOW] : [])
|
|
441
473
|
);
|
|
442
474
|
}
|
|
443
475
|
|
|
@@ -446,7 +478,7 @@ export class OpenID4VCIClient {
|
|
|
446
478
|
}
|
|
447
479
|
|
|
448
480
|
get authorizationURL(): string | undefined {
|
|
449
|
-
return this.
|
|
481
|
+
return this._state.authorizationURL;
|
|
450
482
|
}
|
|
451
483
|
|
|
452
484
|
public hasAuthorizationURL(): boolean {
|
|
@@ -454,7 +486,7 @@ export class OpenID4VCIClient {
|
|
|
454
486
|
}
|
|
455
487
|
|
|
456
488
|
get credentialOffer(): CredentialOfferRequestWithBaseUrl | undefined {
|
|
457
|
-
return this.
|
|
489
|
+
return this._state.credentialOffer;
|
|
458
490
|
}
|
|
459
491
|
|
|
460
492
|
public version(): OpenId4VCIVersion {
|
|
@@ -464,46 +496,46 @@ export class OpenID4VCIClient {
|
|
|
464
496
|
public get endpointMetadata(): EndpointMetadataResult {
|
|
465
497
|
this.assertServerMetadata();
|
|
466
498
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
467
|
-
return this.
|
|
499
|
+
return this._state.endpointMetadata!;
|
|
468
500
|
}
|
|
469
501
|
|
|
470
502
|
get kid(): string {
|
|
471
503
|
this.assertIssuerData();
|
|
472
|
-
if (!this.
|
|
504
|
+
if (!this._state.kid) {
|
|
473
505
|
throw new Error('No value for kid is supplied');
|
|
474
506
|
}
|
|
475
|
-
return this.
|
|
507
|
+
return this._state.kid;
|
|
476
508
|
}
|
|
477
509
|
|
|
478
510
|
get alg(): string {
|
|
479
511
|
this.assertIssuerData();
|
|
480
|
-
if (!this.
|
|
512
|
+
if (!this._state.alg) {
|
|
481
513
|
throw new Error('No value for alg is supplied');
|
|
482
514
|
}
|
|
483
|
-
return this.
|
|
515
|
+
return this._state.alg;
|
|
484
516
|
}
|
|
485
517
|
|
|
486
518
|
set clientId(value: string | undefined) {
|
|
487
|
-
this.
|
|
519
|
+
this._state.clientId = value;
|
|
488
520
|
}
|
|
489
521
|
|
|
490
522
|
get clientId(): string | undefined {
|
|
491
|
-
return this.
|
|
523
|
+
return this._state.clientId;
|
|
492
524
|
}
|
|
493
525
|
|
|
494
526
|
public hasAccessTokenResponse(): boolean {
|
|
495
|
-
return !!this.
|
|
527
|
+
return !!this._state.accessTokenResponse;
|
|
496
528
|
}
|
|
497
529
|
|
|
498
530
|
get accessTokenResponse(): AccessTokenResponse {
|
|
499
531
|
this.assertAccessToken();
|
|
500
532
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
501
|
-
return this.
|
|
533
|
+
return this._state.accessTokenResponse!;
|
|
502
534
|
}
|
|
503
535
|
|
|
504
536
|
public getIssuer(): string {
|
|
505
537
|
this.assertIssuerData();
|
|
506
|
-
return this.
|
|
538
|
+
return this._state.credentialIssuer;
|
|
507
539
|
}
|
|
508
540
|
|
|
509
541
|
public getAccessTokenEndpoint(): string {
|
|
@@ -546,36 +578,36 @@ export class OpenID4VCIClient {
|
|
|
546
578
|
}
|
|
547
579
|
|
|
548
580
|
private assertIssuerData(): void {
|
|
549
|
-
if (!this.
|
|
581
|
+
if (!this._state.credentialIssuer) {
|
|
550
582
|
throw Error(`No credential issuer value present`);
|
|
551
|
-
} else if (!this.
|
|
583
|
+
} else if (!this._state.credentialOffer && this._state.endpointMetadata && this.issuerSupportedFlowTypes().length === 0) {
|
|
552
584
|
throw Error(`No issuance initiation or credential offer present`);
|
|
553
585
|
}
|
|
554
586
|
}
|
|
555
587
|
|
|
556
588
|
private assertServerMetadata(): void {
|
|
557
|
-
if (!this.
|
|
589
|
+
if (!this._state.endpointMetadata) {
|
|
558
590
|
throw Error('No server metadata');
|
|
559
591
|
}
|
|
560
592
|
}
|
|
561
593
|
|
|
562
594
|
private assertAccessToken(): void {
|
|
563
|
-
if (!this.
|
|
595
|
+
if (!this._state.accessTokenResponse) {
|
|
564
596
|
throw Error(`No access token present`);
|
|
565
597
|
}
|
|
566
598
|
}
|
|
567
599
|
|
|
568
600
|
private syncAuthorizationRequestOpts(opts?: AuthorizationRequestOpts): AuthorizationRequestOpts {
|
|
569
|
-
let authorizationRequestOpts = { ...this.
|
|
601
|
+
let authorizationRequestOpts = { ...this._state?.authorizationRequestOpts, ...opts } as AuthorizationRequestOpts;
|
|
570
602
|
if (!authorizationRequestOpts) {
|
|
571
603
|
// We only set a redirectUri if no options are provided.
|
|
572
604
|
// Note that this only works for mobile apps, that can handle a code query param on the default openid-credential-offer deeplink.
|
|
573
605
|
// Provide your own options if that is not desired!
|
|
574
606
|
authorizationRequestOpts = { redirectUri: `${DefaultURISchemes.CREDENTIAL_OFFER}://` };
|
|
575
607
|
}
|
|
576
|
-
const clientId = authorizationRequestOpts.clientId ?? this.
|
|
608
|
+
const clientId = authorizationRequestOpts.clientId ?? this._state.clientId;
|
|
577
609
|
// sync clientId
|
|
578
|
-
this.
|
|
610
|
+
this._state.clientId = clientId;
|
|
579
611
|
authorizationRequestOpts.clientId = clientId;
|
|
580
612
|
return authorizationRequestOpts;
|
|
581
613
|
}
|
|
@@ -28,7 +28,7 @@ describe('OpenID4VCIClient should', () => {
|
|
|
28
28
|
it('should successfully construct an authorization request url', async () => {
|
|
29
29
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
30
30
|
// @ts-ignore
|
|
31
|
-
client.
|
|
31
|
+
client._state.endpointMetadata?.credentialIssuerMetadata.authorization_endpoint = `${MOCK_URL}v1/auth/authorize`;
|
|
32
32
|
const url = await client.createAuthorizationRequestUrl({
|
|
33
33
|
authorizationRequest: {
|
|
34
34
|
scope: 'openid TestCredential',
|
|
@@ -54,7 +54,7 @@ describe('OpenID4VCIClient should', () => {
|
|
|
54
54
|
it("injects 'openid' as the first scope if not provided", async () => {
|
|
55
55
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
56
56
|
// @ts-ignore
|
|
57
|
-
client.
|
|
57
|
+
client._state.endpointMetadata?.credentialIssuerMetadata.authorization_endpoint = `${MOCK_URL}v1/auth/authorize`;
|
|
58
58
|
|
|
59
59
|
const url = await client.createAuthorizationRequestUrl({
|
|
60
60
|
pkce: {
|
|
@@ -85,7 +85,7 @@ describe('OpenID4VCIClient should', () => {
|
|
|
85
85
|
|
|
86
86
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
87
87
|
// @ts-ignore
|
|
88
|
-
client.
|
|
88
|
+
client._state.endpointMetadata = {
|
|
89
89
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
90
90
|
// @ts-ignore
|
|
91
91
|
credentialIssuerMetadata: {
|
|
@@ -93,7 +93,7 @@ describe('OpenID4VCIClient should', () => {
|
|
|
93
93
|
token_endpoint: `${MOCK_URL}/token`,
|
|
94
94
|
},
|
|
95
95
|
};
|
|
96
|
-
// client.
|
|
96
|
+
// client._state.endpointMetadata.credentialIssuerMetadata.authorization_endpoint = `${MOCK_URL}v1/auth/authorize`;
|
|
97
97
|
|
|
98
98
|
await expect(
|
|
99
99
|
client.createAuthorizationRequestUrl({
|
|
@@ -110,7 +110,7 @@ describe('OpenID4VCIClient should', () => {
|
|
|
110
110
|
it('create an authorization request url with authorization_details array property', async () => {
|
|
111
111
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
112
112
|
// @ts-ignore
|
|
113
|
-
client.
|
|
113
|
+
client._state.endpointMetadata?.credentialIssuerMetadata.authorization_endpoint = `${MOCK_URL}v1/auth/authorize`;
|
|
114
114
|
|
|
115
115
|
await expect(
|
|
116
116
|
client.createAuthorizationRequestUrl({
|
|
@@ -146,7 +146,7 @@ describe('OpenID4VCIClient should', () => {
|
|
|
146
146
|
it('create an authorization request url with authorization_details object property', async () => {
|
|
147
147
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
148
148
|
// @ts-ignore
|
|
149
|
-
client.
|
|
149
|
+
client._state.endpointMetadata?.credentialIssuerMetadata.authorization_endpoint = `${MOCK_URL}v1/auth/authorize`;
|
|
150
150
|
|
|
151
151
|
await expect(
|
|
152
152
|
client.createAuthorizationRequestUrl({
|
|
@@ -173,7 +173,7 @@ describe('OpenID4VCIClient should', () => {
|
|
|
173
173
|
it('create an authorization request url with authorization_details and scope', async () => {
|
|
174
174
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
175
175
|
// @ts-ignore
|
|
176
|
-
client.
|
|
176
|
+
client._state.endpointMetadata.credentialIssuerMetadata.authorization_endpoint = `${MOCK_URL}v1/auth/authorize`;
|
|
177
177
|
|
|
178
178
|
await expect(
|
|
179
179
|
client.createAuthorizationRequestUrl({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/oid4vci-client",
|
|
3
|
-
"version": "0.8.2-unstable.
|
|
3
|
+
"version": "0.8.2-unstable.79+4e33770",
|
|
4
4
|
"description": "OpenID for Verifiable Credential Issuance (OpenID4VCI) client",
|
|
5
5
|
"source": "lib/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"build": "tsc"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@sphereon/oid4vci-common": "0.8.2-unstable.
|
|
18
|
+
"@sphereon/oid4vci-common": "0.8.2-unstable.79+4e33770",
|
|
19
19
|
"@sphereon/ssi-types": "^0.18.1",
|
|
20
20
|
"cross-fetch": "^3.1.8",
|
|
21
21
|
"debug": "^4.3.4"
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"OIDC4VCI",
|
|
70
70
|
"OID4VCI"
|
|
71
71
|
],
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "4e33770d569479728ffe0c6a9fad188d2d08c5ec"
|
|
73
73
|
}
|