Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update dependency @simplewebauthn/server to v7 #7409

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jan 21, 2023

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@simplewebauthn/server (source) 6.2.2 -> 7.0.0 age adoption passing confidence

Release Notes

MasterKale/SimpleWebAuthn

v7.0.0

Compare Source

The highlight of this release is the rearchitecture of @​simplewebauthn/server to start allowing it to be used in more environments than Node. This was accomplished by refactoring the library completely away from Node's Buffer type and crypto package, and instead leveraging Uint8Array and the WebCrypto Web API for all cryptographic operations. This means that, hypothetically, this library can now also work in any non-Node environment that provides access to the WebCrypto API on the global crypto object.

Existing Node support is still first-class! In fact because @​simplewebauth/server still builds to CommonJS it will continue to be tricky to incorporate the library in non-Node, ESM-only environments that do not support CommonJS modules (whether natively, via a bundler, etc...) A future update will attempt to fix this to offer better support for use in ESM-only projects with support for WebCrypto (e.g. Deno).

Please read all of the changes below! There are significant breaking changes in this update and additional information has been included to help adapt existing projects to the newest version of these libraries.

Packages:

Changes:

  • [server] A new "isomorphic" library architecture allows for use of this library in non-Node environments. In addition, the library now targets Node 16 and above (#​299)
  • [server] @simplewebauthn/server/helpers now includes several new helpers for working with WebAuthn-related data types that should work in all run times:
    • isoCBOR for working with CBOR-encoded values
    • isoCrypto for leveraging the WebCrypto API when working with various WebAuthn/FIDO2 data structures
    • isoBase64URL for encoding and decoding values into base64url (with optional base64 support)
    • isoUint8Array for working with Uint8Arrays
    • cose for working with COSE-related methods and types
  • [server] Certificate chains using self-signed X.509 root certificates now validate more reliably (#​310)
  • [server] Code execution times for some common use cases are approximately 60-90% faster (#​311, #​315)
  • [iso-webcrypto] This new library helps @​simplewebauthn/server reference the WebCrypto API in more environments than Node. This package is available on NPM, but it is not officially supported for use outside of @​simplewebauthn/server!
Breaking Changes
  • [server] The following values returned from verifyRegistrationResponse() are now a Uint8Array instead of a Buffer. They will need to be passed into Buffer.from(...) to convert them to Buffer if needed:
    • aaguid
    • authData
    • clientDataHash
    • credentialID
    • credentialPublicKey
    • rpIdHash
  • [server] The following values returned from verifyAuthenticationResponse() are now a Uint8Array instead of a Buffer. They will need to be passed into Buffer.from(...) to convert them to Buffer if needed:
    • credentialID
  • [server] The isBase64URLString() helper is now isoBase64URL.isBase64url()
  • [server] The decodeCborFirst() helper is now isoCBOR.decodeFirst()
  • [server] The convertPublicKeyToPEM() helper has been removed
  • [typescript-types] [server] [browser] New JSON-serialization-friendly data structures added to the WebAuthn L3 spec have been preemptively mapped into this project. Some types, values, and methods have been refactored or replaced accordingly (#​320):
    • The RegistrationCredentialJSON type has been replaced by the RegistrationResponseJSON type
    • The AuthenticationCredentialJSON type has been replaced by the AuthenticationResponseJSON type
    • RegistrationCredentialJSON.transports has been relocated into RegistrationResponseJSON.response.transports to mirror response structure in the WebAuthn spec
    • The verifyRegistrationResponse() method has had its credential argument renamed to response
    • The verifyAuthenticationResponse() method has had its credential argument renamed to response
  • [server] generateRegistrationOptions() now marks user verification as "preferred" during registration and authentication (to reduce some user friction at the browser+authenticator level), and requires user verification during response verification. See below for refactor tips (#​307)
Refactor Tips RP's implementing a second-factor flow with WebAuthn, where UV is not important (because username+password are provided before WebAuthn is leveraged for the second factor), should not require user verification when verifying responses:
verifyRegistrationResponse()

Before

const verification = await verifyRegistrationResponse({
  credential: attestationFIDOU2F,
  // ...
});

After

const verification = await verifyRegistrationResponse({
  credential: attestationFIDOU2F,
  // ...
  requireUserVerification: false,
});
verifyAuthenticationResponse()

Before

const verification = await verifyAuthenticationResponse({
  credential: assertionResponse,
  // ...
});

After

const verification = await verifyAuthenticationResponse({
  credential: assertionResponse,
  // ...
  requireUserVerification: false,
});
  • [server] generateRegistrationOptions() now defaults to preferring the creation of discoverable credentials. See below for refactor tips (#​324)
Refactor Tips RP's that do not require support for discoverable credentials from authenticators will need to update their calls to `generateRegistrationOptions()` accordingly:
generateRegistrationOptions()

Before

const options = generateRegistrationOptions({
  rpName: 'SimpleWebAuthn',
  rpID: 'simplewebauthn.dev',
  userID: '1234',
  userName: 'usernameHere',
});

After

const options = generateRegistrationOptions({
  rpName: 'SimpleWebAuthn',
  rpID: 'simplewebauthn.dev',
  userID: '1234',
  userName: 'usernameHere',
  authenticatorSelection: {
    // See https://www.w3.org/TR/webauthn-2/#enumdef-residentkeyrequirement
    residentKey: 'discouraged',
  },
});

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot added the release:chore This PR is a chore (means nothing for users) label Jan 21, 2023
@renovate renovate bot assigned jtoar Jan 21, 2023
@renovate renovate bot force-pushed the renovate/simplewebauthn-server-7.x branch 28 times, most recently from ebf0dad to a56ece8 Compare January 24, 2023 17:15
@renovate renovate bot force-pushed the renovate/simplewebauthn-server-7.x branch 23 times, most recently from 635afb0 to bdf9012 Compare January 27, 2023 18:51
@renovate renovate bot force-pushed the renovate/simplewebauthn-server-7.x branch from bdf9012 to c95398d Compare January 27, 2023 19:41
@jtoar jtoar closed this Jan 27, 2023
@renovate
Copy link
Contributor Author

renovate bot commented Jan 27, 2023

Renovate Ignore Notification

As this PR has been closed unmerged, Renovate will ignore this upgrade and you will not receive PRs for any future 7.x releases. However, if you upgrade to 7.x manually then Renovate will reenable minor and patch updates automatically.

If this PR was closed by mistake or you changed your mind, you can simply rename this PR and you will soon get a fresh replacement PR opened.

@renovate renovate bot deleted the renovate/simplewebauthn-server-7.x branch January 27, 2023 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release:chore This PR is a chore (means nothing for users)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant