Skip to content

Releases: Yubico/java-webauthn-server

Version 2.8.0

11 Dec 13:27
2.8.0
4b5df78

Choose a tag to compare

New features:

  • Added JavaDoc to COSEAlgorithmIdentifier constants.
  • Added support for Ed448 signatures.
  • New constants COSEAlgorithmIdentifier.Ed25519, COSEAlgorithmIdentifier.Ed448 and PublicKeyCredentialParameters.Ed448
  • (Experimental) Added a new suite of interfaces, starting with CredentialRepositoryV2. RelyingParty can now be configured with a CredentialRepositoryV2 instance instead of a CredentialRepository instance. This changes the result of the RelyingParty builder to RelyingPartyV2. CredentialRepositoryV2 and RelyingPartyV2 enable a suite of new features:
    • CredentialRepositoryV2 does not assume that the application has usernames, instead username support is modular. In addition to the CredentialRepositoryV2, RelyingPartyV2 can be optionally configured with a UsernameRepository as well. If a UsernameRepository is not set, then RelyingPartyV2.startAssertion(StartAssertionOptions) will fail at runtime if StartAssertionOptions.username is set.
    • CredentialRepositoryV2 uses a new interface CredentialRecord to represent registered credentials, instead of the concrete RegisteredCredential class (although RegisteredCredential also implements CredentialRecord). This provides implementations greater flexibility while also automating the type conversion to PublicKeyCredentialDescriptor needed in startRegistration() and startAssertion().
    • RelyingPartyV2.finishAssertion() returns a new type AssertionResultV2 with a new method getCredential(), which returns the CredentialRecord that was verified. The return type of getCredential() is generic and preserves the concrete type of CredentialRecord returned by the CredentialRepositoryV2 implementation.
    • NOTE: Experimental features may receive breaking changes without a major version increase.
  • (Experimental) Added property RegisteredCredential.transports.
    • NOTE: Experimental features may receive breaking changes without a major version increase.

webauthn-server-attestation:

New features:

  • Updated SupportedCtapOptions to version 2.2 of CTAP spec.
    • New field perCredMgmtRO

Fixes:

  • Fixed parsing logic of tri-valued Boolean SupportedCtapOptions properties. See: #382

Artifacts built with openjdk 17.0.15 2025-04-15.

Note: Artifacts are signed by a new key. See Yubico Software Signing.

Pre-release 2.8.0-RC1

28 Nov 15:05
2.8.0-RC1
491b9a3

Choose a tag to compare

Pre-release 2.8.0-RC1 Pre-release
Pre-release

Changes since 2.8.0-alpha3

webauthn-server-core:

New features:

  • Added JavaDoc to COSEAlgorithmIdentifier constants.
  • Added support for Ed448 signatures.
  • New constants COSEAlgorithmIdentifier.Ed25519, COSEAlgorithmIdentifier.Ed448 and PublicKeyCredentialParameters.Ed448

webauthn-server-attestation:

New features:

  • Updated SupportedCtapOptions to version 2.2 of CTAP spec.
    • New field perCredMgmtRO

Fixes:

  • Fixed parsing logic of tri-valued Boolean SupportedCtapOptions properties. See: #382

Changes since 2.7.0

webauthn-server-core:

New features:

  • (Experimental) Added a new suite of interfaces, starting withCredentialRepositoryV2. RelyingParty can now be configured with a CredentialRepositoryV2 instance instead of a CredentialRepository instance. This changes the result of the RelyingParty builder to RelyingPartyV2. CredentialRepositoryV2 and RelyingPartyV2 enable a suite of new features:
    • CredentialRepositoryV2 does not assume that the application has usernames, instead username support is modular. In addition to the CredentialRepositoryV2, RelyingPartyV2 can be optionally configured with a UsernameRepository as well. If a UsernameRepository is not set, then RelyingPartyV2.startAssertion(StartAssertionOptions) will fail at runtime if StartAssertionOptions.username is set.
    • CredentialRepositoryV2 uses a new interface CredentialRecord to represent registered credentials, instead of the concrete RegisteredCredential class (although RegisteredCredential also implements CredentialRecord). This provides implementations greater flexibility while also automating the type conversion to PublicKeyCredentialDescriptor needed in startRegistration() and startAssertion().
    • RelyingPartyV2.finishAssertion() returns a new type AssertionResultV2 with a new method getCredential(), which returns the CredentialRecord that was verified. The return type of getCredential() is generic and preserves the concrete type of CredentialRecord returned by the CredentialRepositoryV2 implementation.
    • NOTE: Experimental features may receive breaking changes without a major version increase.
  • (Experimental) Added property RegisteredCredential.transports.
    • NOTE: Experimental features may receive breaking changes without a major version increase.

Artifacts built with openjdk version "17.0.15" 2025-04-15.

Note: Artifacts are signed by a new key. See Yubico Software Signing.

Version 2.7.0

15 May 11:06
2.7.0
703179a

Choose a tag to compare

New features:

  • Added overloaded setter RelyingPartyBuilder.origins(Optional<Set<String>>).
  • Added support for the CTAP2 credProtect extension.
  • Added support for the prf extension.
  • (Experimental) Added option FinishRegistrationOptions.isConditionalCreate to allow UP=0 in registration response for registration ceremonies with mediation: "conditional".
    • NOTE: Experimental features may receive breaking changes without a major version increase.

Fixes:

  • Excluded CVE-2025-27820 vulnerable versions of Apache httpclient5 from dependency resolution. Note that this might only affect consumers using Gradle module metadata.

Artifacts built with openjdk version "17.0.15" 2025-04-15.

Experimental release 2.8.0-alpha3

05 May 14:13
2.8.0-alpha3
3469474

Choose a tag to compare

Pre-release

Ported changes from pre-release 2.7.0-RC3:

Fixes:

  • Excluded CVE-2025-27820 vulnerable versions of Apache httpclient5 from dependency resolution. Note that this might only affect consumers using Gradle module metadata.

Artifacts built with openjdk version "17.0.15" 2025-04-15.

Pre-release 2.7.0-RC3

05 May 13:58
2.7.0-RC3
7ca8cff

Choose a tag to compare

Pre-release 2.7.0-RC3 Pre-release
Pre-release

Fixes:

  • Excluded CVE-2025-27820 vulnerable versions of Apache httpclient5 from dependency resolution. Note that this might only affect consumers using Gradle module metadata.

Artifacts built with openjdk version "17.0.15" 2025-04-15.

Experimental release 2.8.0-alpha2

02 May 12:12
2.8.0-alpha2
a198138

Choose a tag to compare

Pre-release

Ported changes from pre-release 2.7.0-RC2:

Fixes:

  • Fixed JSON encoding of credProtect extension inputs.

Artifacts built with openjdk version "17.0.14" 2025-01-21.

Pre-release 2.7.0-RC2

02 May 11:44
2.7.0-RC2
0ae9fb1

Choose a tag to compare

Pre-release 2.7.0-RC2 Pre-release
Pre-release

Fixes:

  • Fixed JSON encoding of credProtect extension inputs.

Artifacts built with openjdk version "17.0.14" 2025-01-21.

Experimental release 2.8.0-alpha1

30 Apr 11:50
2.8.0-alpha1
5e7ada7

Choose a tag to compare

Pre-release

Re-introduced changes that were reverted between 2.7.0-alpha1 and 2.7.0-RC1:

New features:

  • (Experimental) Added a new suite of interfaces, starting with CredentialRepositoryV2. RelyingParty can now be configured with a CredentialRepositoryV2 instance instead of a CredentialRepository instance. This changes the result of the RelyingParty builder to RelyingPartyV2. CredentialRepositoryV2 and RelyingPartyV2 enable a suite of new features:
    • CredentialRepositoryV2 does not assume that the application has usernames, instead username support is modular. In addition to the CredentialRepositoryV2, RelyingPartyV2 can be optionally configured with a UsernameRepository as well. If a UsernameRepository is not set, then RelyingPartyV2.startAssertion(StartAssertionOptions) will fail at runtime if StartAssertionOptions.username is set.
    • CredentialRepositoryV2 uses a new interface CredentialRecord to represent registered credentials, instead of the concrete RegisteredCredential class (although RegisteredCredential also implements CredentialRecord). This provides implementations greater flexibility while also automating the type conversion to PublicKeyCredentialDescriptor needed in startRegistration() and startAssertion().
    • RelyingPartyV2.finishAssertion() returns a new type AssertionResultV2 with a new method getCredential(), which returns the CredentialRecord that was verified. The return type of getCredential() is generic and preserves the concrete type of CredentialRecord returned by the CredentialRepositoryV2 implementation.
    • NOTE: Experimental features may receive breaking changes without a major version increase.
  • (Experimental) Added property RegisteredCredential.transports.
    • NOTE: Experimental features may receive breaking changes without a major version increase.

Artifacts built with openjdk version "17.0.14" 2025-01-21.

Pre-release 2.7.0-RC1

30 Apr 11:25
2.7.0-RC1
5b7c0a9

Choose a tag to compare

Pre-release 2.7.0-RC1 Pre-release
Pre-release

Changes since 2.7.0-alpha1

Breaking changes:

  • Removed the suite of experimental interfaces related with CredentialRepositoryV2. These will be postponed to minor release 2.8 instead.
  • Removed property RegisteredCredential.transports.

Changes since 2.6.0

New features:

  • Added overloaded setter RelyingPartyBuilder.origins(Optional<Set<String>>).
  • Added support for the CTAP2 credProtect extension.
  • Added support for the prf extension.
  • (Experimental) Added option FinishRegistrationOptions.isConditionalCreate to allow UP=0 in registration response for registration ceremonies with mediation: "conditional".
    • NOTE: Experimental features may receive breaking changes without a major version increase.

Artifacts built with openjdk version "17.0.14" 2025-01-21.

Experimental release 2.7.0-alpha1

30 Jan 14:16
2.7.0-alpha1
b1fa6ca

Choose a tag to compare

Pre-release

Re-introduced changes that were reverted between 2.6.0-alpha8 and 2.6.0-RC1:

  • (Experimental) Added a new suite of interfaces, starting with CredentialRepositoryV2. RelyingParty can now be configured with a CredentialRepositoryV2 instance instead of a CredentialRepository instance. This changes the result of the RelyingParty builder to RelyingPartyV2. CredentialRepositoryV2 and RelyingPartyV2 enable a suite of new features:
    • CredentialRepositoryV2 does not assume that the application has usernames, instead username support is modular. In addition to the CredentialRepositoryV2, RelyingPartyV2 can be optionally configured with a UsernameRepository as well. If a UsernameRepository is not set, then RelyingPartyV2.startAssertion(StartAssertionOptions) will fail at runtime if StartAssertionOptions.username is set.
    • CredentialRepositoryV2 uses a new interface CredentialRecord to represent registered credentials, instead of the concrete RegisteredCredential class (although RegisteredCredential also implements CredentialRecord). This provides implementations greater flexibility while also automating the type conversion to PublicKeyCredentialDescriptor needed in startRegistration() and startAssertion().
    • RelyingPartyV2.finishAssertion() returns a new type AssertionResultV2 with a new method getCredential(), which returns the CredentialRecord that was verified. The return type of getCredential() is generic and preserves the concrete type of CredentialRecord returned by the CredentialRepositoryV2 implementation.
    • NOTE: Experimental features may receive breaking changes without a major version increase.
  • (Experimental) Added property RegisteredCredential.transports.
    • NOTE: Experimental features may receive breaking changes without a major version increase.

Artifacts built with openjdk version "17.0.13" 2024-10-15.