@ideem/zsm-client-sdk 2.6.3 → 2.7.1
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/CHANGELOG.md +15 -1
- package/FIDO2ClientBase.js +2 -2
- package/RelyingPartyBase.js +4 -0
- package/UMFAClientBase.js +1 -1
- package/WASMRustInterface.js +1295 -1293
- package/WebAuthnClientBase.js +2 -0
- package/ZSMClientSDK.js +6 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,7 +11,21 @@ and Universal MFA into a browser application.
|
|
|
11
11
|
- None at this time.
|
|
12
12
|
|
|
13
13
|
----
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
## Release 2.7.1 - Mar 3, 2026 [ NPM PACKAGE RELEASE ] **[ LATEST ]**
|
|
16
|
+
- Minor bug fixes and improvements
|
|
17
|
+
- Added dynamic versioning headers
|
|
18
|
+
- Updates to WASM code to remove Base64URL encoding and decoding steps for improved performance and reduced complexity
|
|
19
|
+
- Updates to documentation
|
|
20
|
+
|
|
21
|
+
## Release 2.7.0 - January 15, 2026 [ NPM PACKAGE RELEASE ]
|
|
22
|
+
- Minor bug fixes and improvements
|
|
23
|
+
- Standardization of credential responses across all SDK platforms (browser, mobile, native)
|
|
24
|
+
- Standardization of credential schema across all all UMFA workflows
|
|
25
|
+
- Improved security by addition of new validation checks for webauthn attestation and assertion responses
|
|
26
|
+
- Improvements to performance by removing now-unnecessary API trips during UMFA enrollment and authentication flows
|
|
27
|
+
|
|
28
|
+
## Release 2.6.3 - January 6, 2026 [ NPM PACKAGE RELEASE ]
|
|
15
29
|
- Minor alteration to event coordinator to support legacy versions of Safari (versions 14-18.4)
|
|
16
30
|
|
|
17
31
|
## Release 2.6.2 - December 19, 2025 [ NPM PACKAGE RELEASE ]
|
package/FIDO2ClientBase.js
CHANGED
|
@@ -85,7 +85,7 @@ class FIDO2ClientBase {
|
|
|
85
85
|
if(userIdentifier == null
|
|
86
86
|
|| userIdentifier === '') throw new Error(`[FIDO2Client] :: webauthnCreate :: A userIdentifier String is required! Received: ${userIdentifier}.`);
|
|
87
87
|
|
|
88
|
-
const createResult = this.zsmAPI.webauthnCreate(userIdentifier);
|
|
88
|
+
const createResult = await this.zsmAPI.webauthnCreate(userIdentifier);
|
|
89
89
|
if(createResult instanceof Error) throw(`[FIDO2Client] :: webauthnCreate :: Unable to associate ${userIdentifier}'s identity with device profile.\nDetails:\n${createResult}`);
|
|
90
90
|
return createResult;
|
|
91
91
|
}catch(e) {
|
|
@@ -108,7 +108,7 @@ class FIDO2ClientBase {
|
|
|
108
108
|
if(userIdentifier == null
|
|
109
109
|
|| userIdentifier === '') throw new Error(`[FIDO2Client] :: webauthnGet :: A userIdentifier String is required! Received: ${userIdentifier}.`);
|
|
110
110
|
let authCredential = await this.zsmAPI.webauthnGet(userIdentifier);
|
|
111
|
-
return authCredential
|
|
111
|
+
return authCredential?.credential??authCredential;
|
|
112
112
|
}catch(e) {
|
|
113
113
|
return new Error(e.message || e || '[FIDO2Client] :: webauthnGet :: An error occurred during credential retrieval.');
|
|
114
114
|
}
|
package/RelyingPartyBase.js
CHANGED
|
@@ -52,6 +52,7 @@ class RelyingPartyBase {
|
|
|
52
52
|
body = Object.assign({ customer_defined_identifier : this.customerDefinedIdentifier, application_id : this.applicationId}, body, this.addlRelyingPartyBodyProps, tracePrimer(true));
|
|
53
53
|
let fetchObj = {
|
|
54
54
|
method,
|
|
55
|
+
// headers : Object.assign(this.xhrHeaders, ((!headers?.Authorization) ? {'Authorization': `Bearer ${this.apiKey}`} : {}), headers, {"X-SDK-Version": JSON.stringify(GLOBAL.ZSMVersions)}),
|
|
55
56
|
headers : Object.assign(this.xhrHeaders, ((!headers?.Authorization) ? {'Authorization': `Bearer ${this.apiKey}`} : {}), headers),
|
|
56
57
|
body : JSON.stringify(body)
|
|
57
58
|
};
|
|
@@ -114,6 +115,7 @@ class RelyingPartyBase {
|
|
|
114
115
|
* @throws {Error} Throws an error if the request fails.
|
|
115
116
|
*/
|
|
116
117
|
registrationFinish (credential) {
|
|
118
|
+
return credential;
|
|
117
119
|
return this.makePostRequest(`api/webauthn/registration/finish`, { credential })
|
|
118
120
|
.then(body => {
|
|
119
121
|
this.credentialID = credential.rawId;
|
|
@@ -153,6 +155,7 @@ class RelyingPartyBase {
|
|
|
153
155
|
* @throws {Error} Throws an error if the request fails.
|
|
154
156
|
*/
|
|
155
157
|
authenticationFinish (credential) {
|
|
158
|
+
return credential;
|
|
156
159
|
return this.makePostRequest("api/webauthn/authentication/finish", { credential })
|
|
157
160
|
.then(result => result)
|
|
158
161
|
.catch(error => Promise.reject(new Error(error)));
|
|
@@ -192,6 +195,7 @@ class RelyingPartyBase {
|
|
|
192
195
|
* @throws {Error} Throws an error if the request fails.
|
|
193
196
|
*/
|
|
194
197
|
registrationFinishAuthenticationStart (credential) {
|
|
198
|
+
return credential;
|
|
195
199
|
return this.makePostRequest(`api/webauthn/registration/finish-then-authentication-start`, { credential })
|
|
196
200
|
.then(result => (this.credentialID = credential.rawId, result))
|
|
197
201
|
.then(credential => credential)
|
package/UMFAClientBase.js
CHANGED
|
@@ -99,7 +99,7 @@ class UMFAClientBase {
|
|
|
99
99
|
let userIsEnrolled = await this.checkEnrollment(userIdentifier);
|
|
100
100
|
if(userIsEnrolled === false) throw(`${userIdentifier} is not enrolled.`);
|
|
101
101
|
let authCredential = await this.zsmAPI.webauthnPartialGet(userIdentifier);
|
|
102
|
-
return authCredential
|
|
102
|
+
return authCredential?.credential??authCredential;
|
|
103
103
|
}catch(e) {
|
|
104
104
|
return new Error(e.message || e || '[UMFAClient] :: authenticate :: An error occurred during authentication.');
|
|
105
105
|
}
|