Releases: MasterKale/SimpleWebAuthn
v3.1.0
Packages:
- @simplewebauthn/[email protected]
Changes:
- [browser] The ES2018 bundle is now "main" in package.json. The
tslib
dependency for production is no longer necessary as transpilation to ES5 is now fully the responsibility of the framework implementing @simplewebauthn/browser.- The ES5 UMD build remains available for websites not leveraging a build pipeline.
- [browser] Linking to this package via unpkg now defaults to the ES2018 build. See browser's README.md for information on how to link to the ES5 build instead.
v3.0.0 - The one with a legacy
This release is focused on updating @simplewebauthn/browser for better browser support out of the box. Most projects will now pull in its (slightly larger) ES5 bundle to ensure maximum browser compatibility, including older browsers in which WebAuthn will never be available. The ES2018 build is still available for projects that only need to target newer browsers, but bundler configuration changes must now be made to include it instead of the ES5 build.
Packages:
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
Changes:
- [browser] Set default bundle to ES5 to support IE10+ and Edge Legacy
- [browser]
startAssertion()
no longer Base64URL-encodesuserHandle
string - [server] Fix issue with Chrome (< v90) WebAuthn virtual authenticators
- [server] Update
jsrsasign
to10.2.0
(see GHSA-27fj-mc8w-j9wg) - [typescript-types] Update assertion JSON declarations as per
startAssertion()
fix
Breaking Changes
- [browser] Projects targeting modern browsers may not wish to bundle the ES5 version due to its inclusion of various polyfills. See the updated "Building for Production" section of the README.md for more info on how to pull in the ES2018 version instead.
- [browser] RPs with usernameless flows will no longer need to Base64URL-decode
response.userHandle
as returned fromstartAssertion()
.
v2.2.1
Packges:
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
Changes:
- [browser] Adds support for older browsers (IE10/IE11, Edge Legacy, etc...) with additional build artifacts targeting ES5
- See updated "Installation" and "Building for Production" sections of the README.md
- [server] Internal code cleanup
v2.2.0
Packages:
- @simplewebauthn/[email protected]
Changes:
- [server] Export more TypeScript types for options and verification method inputs and outputs:
// Newly exported types
import type {
GenerateAttestationOptionsOpts,
GenerateAssertionOptionsOpts,
VerifyAttestationResponseOpts,
VerifyAssertionResponseOpts,
VerifiedAttestation,
VerifiedAssertion,
} from '@simplewebauthn/server';
v2.1.0
Packages:
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
Changes:
- [browser]
startAttestation()
andstartAssertion()
now include extension results asclientExtensionResults
in their return value - [typescript-types] Updated
PublicKeyCredentialCreationOptionsJSON
andPublicKeyCredentialRequestOptionsJSON
types with new optionalextensions
property to support specifying WebAuthn extensions when callinggenerateAttestationOptions()
andgenerateAssertionOptions()
- [typescript-types] Updated
AttestationCredentialJSON
andAssertionCredentialJSON
types with newclientExtensionResults
properties to contain output from WebAuthn'scredential.getClientExtensionResults()
- [server] Version sync
v2.0.0 - The one with -less and more Buffers
This major release includes improvements intended to make it easier to support passwordless and usernameless WebAuthn flows. Additional information returned from attestation verification can be used by RP's to further scrutinize the attestation now or in the future.
I also made the decision to reduce the amount of encoding from Buffer to Base64URL and decoding from Base64URL to Buffer throughout the library. Verification methods now return raw Buffers so that RP's are free to store and retrieve these values as they see fit without the library imposing any kind of encoding overhead that may complicate storage in a database, etc...
Packages:
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
Changes:
- [server] See Breaking Changes below.
- [typescript-types] See Breaking Changes below
- [browser] Version sync
- [testing] Version sync
Breaking Changes
- [server] The method
verifyAttestationResponse()
now returns a different data structure with additional information that RP's can use to more easily support passwordless and usernameless WebAuthn flows.- Additionally,
Buffer
values are now returned in place of previously-base64url-encoded values. This is intended to offer more flexibility in how these values are persisted without imposing an encoding scheme that may introduce undesirable overhead.
- Additionally,
Before:
type VerifiedAttestation = {
verified: boolean;
userVerified: boolean;
authenticatorInfo?: {
fmt: ATTESTATION_FORMAT;
counter: number;
base64PublicKey: string;
base64CredentialID: string;
};
};
After:
type VerifiedAttestation = {
verified: boolean;
attestationInfo?: {
fmt: ATTESTATION_FORMAT;
counter: number;
aaguid: string;
credentialPublicKey: Buffer;
credentialID: Buffer;
credentialType: string;
userVerified: boolean;
attestationObject: Buffer;
};
};
- [server] The method
verifyAssertionResponse()
now returns a different data structure to align with changes made toverifyAttestationResponse()
.
Before:
type VerifiedAssertion = {
verified: boolean;
authenticatorInfo: {
counter: number;
base64CredentialID: string;
};
};
After:
type VerifiedAssertion = {
verified: boolean;
assertionInfo: {
credentialID: Buffer;
newCounter: number;
};
};
- [server] The
excludeCredentials
argument ingenerateAttestationOptions()
now expects aBuffer
type for a credential'sid
property. Previouslyid
needed to be astring
. Existing credential IDs stored in base64url encoding can be easily converted to Buffer with a library likebase64url
:
Before:
const options = generateAttestationOptions({
// ...
excludeCredentials: [{
id: 'PPa1spYTB680cQq5q6qBtFuPLLdG1FQ73EastkT8n0o',
// ...
}],
// ...
})
After:
const options = generateAttestationOptions({
// ...
excludeCredentials: [{
id: base64url.toBuffer('PPa1spYTB680cQq5q6qBtFuPLLdG1FQ73EastkT8n0o'),
// ...
}],
// ...
})
- [server] The
allowCredentials
argument ingenerateAssertionOptions()
now expects aBuffer
type for a credential'sid
property. Previouslyid
needed to be astring
. Existing credential IDs stored in base64url encoding can be easily converted to Buffer with a library likebase64url
:
Before:
const options = generateAssertionOptions({
// ...
allowCredentials: [{
id: 'PPa1spYTB680cQq5q6qBtFuPLLdG1FQ73EastkT8n0o',
// ...
}],
// ...
})
After:
const options = generateAssertionOptions({
// ...
allowCredentials: [{
id: base64url.toBuffer('PPa1spYTB680cQq5q6qBtFuPLLdG1FQ73EastkT8n0o'),
// ...
}],
// ...
})
- [typescript-types] The
AuthenticatorDevice
type has been updated to expectBuffer
's for credential data. Naming of its properties have also been updated to help maintain consistency with naming in the WebAuthn spec:
Before:
type AuthenticatorDevice = {
publicKey: Base64URLString;
credentialID: Base64URLString;
counter: number;
transports?: AuthenticatorTransport[];
}
After:
type AuthenticatorDevice = {
credentialPublicKey: Buffer;
credentialID: Buffer;
counter: number;
transports?: AuthenticatorTransport[];
}
v1.0.0 - The one that gets things out of "Beta"
Packages:
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
Changes:
- [server] Add support for multiple expected origins and RP IDs in
verifyAttestationResponse()
andverifyAssertionResponse()
- [server] Update
generateAttestationOptions()
to force legacyauthenticatorSelection.requireResidentKey
totrue
whenauthenticatorSelection.residentKey
is"required"
(as per L2 of the WebAuthn spec) - [typescript-types] Update
AuthenticatorDevice
type with optionaltransports
property - [browser] Version sync
- [testing] Version sync
Breaking Changes
There are no breaking changes in this release. Several recent minor changes presented an opportunity to release a "v1.0". I'd received enough positive feedback about SimpleWebAuthn and noticed growing usage which granted me the confidence to take advantage of this opportunity.
And perhaps this will give the project more legitimacy in the eyes of larger organizations wishing to use it but waiting for the libraries to "get out of beta"...
v0.10.4
Packages:
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
- @simplewebauthn/[email protected]
Changes:
- [server] Unpin dependency versions
- [server] Upgrade dependencies and devDependencies
- [typescript-types] Pull in TypeScript DOM lib types on build
- [docs] Upgrade TypeDoc for better API docs
v0.10.3
Packages:
- @simplewebauthn/[email protected]
Changes:
- [server] Add optional
rpID
argument togenerateAssertionOptions()
v0.10.2
Packages:
- @simplewebauthn/[email protected]
Changes:
- [server] Update ASN.1 parsing libraries to latest releases