Skip to content

Releases: Yubico/java-webauthn-server

Version 2.9.0

Choose a tag to compare

@emlun emlun released this 12 May 14:00
2.9.0
fc2fff3

webauthn-server-core:

Security fixes:

  • Fixed issue where RelyingParty.finishAssertion and RelyingPartyV2.finishAssertion could return a successful authentication result even though the authenticated credential is owned by a different user than StartAssertionOptions.username. For details see YSA-2026-02: https://www.yubico.com/support/security-advisories/ysa-2026-02/
    • This fix is forward-ported from version 2.8.2 since the issue is also present in pre-release 2.9.0-alpha1.

Fixes:

  • Added @since tags to AttestationTrustSource javadoc.

webauthn-server-attestation:

Changes:

  • FidoMetadataDownloader builder method .downloadBlob(URL) now logs a warning if the given URL is not an HTTPS URL. Javadoc relaxed to not describe HTTPS as required since this was never enforced.

New features:

Fixes:

  • Added @since tags to AuthenticatorStatus and FidoMetadataService javadoc.
  • All com.yubico.fido.metadata enums now deserialize unknown values to UNKOWN instead of crashing the parser.

Artifacts built with openjdk version "17.0.18" 2026-01-20.

Version 2.8.2

Choose a tag to compare

@emlun emlun released this 12 May 14:00
2.8.2
6f92b2a

Security fixes:

  • Fixed issue where RelyingParty.finishAssertion and RelyingPartyV2.finishAssertion could return a successful authentication result even though the authenticated credential is owned by a different user than StartAssertionOptions.username. For details see YSA-2026-02: https://www.yubico.com/support/security-advisories/ysa-2026-02/

Artifacts built with openjdk version "17.0.18" 2026-01-20.

Experimental release 2.9.0-alpha1

Pre-release

Choose a tag to compare

@emlun emlun released this 18 Apr 01:24
2.9.0-alpha1
9229c9b

webauthn-server-core:

Fixes:

  • Added @since tags to AttestationTrustSource javadoc.

webauthn-server-attestation:

New features:

  • Added AuthenticatorStatus.RETIRED and Filters.notRetired().
  • Added AttachmentHint.ATTACHMENT_HINT_SMART_CARD.
    • Thanks to GitHub users mmoayyed and ErlendNukke for the contribution, see #468 and #467
  • Added UNKNOWN constant to all enums in com.yubico.fido.metadata:
    • AttachmentHint
    • AuthenticationAlgorithm
    • AuthenticatorAttestationType
    • CtapCertificationId
    • CtapPinUvAuthProtocolVersion
    • CtapVersion
    • ProtocolFamily
    • PublicKeyRepresentationFormat
    • TransactionConfirmationDisplayType
  • Added enum constant CtapVersion.FIDO_2_3.
  • Added missing fields to FIDO MDS data model:
    • AuthenticatorGetInfo: attestationFormats, longTouchForReset, uvCountSinceLastPinEntry, transportsForReset, pinComplexityPolicy, pinComplexityPolicyURL, maxPINLength, authenticatorConfigCommands
    • BiometricAccuracyDescriptor: iAPARThreshold
    • MetadataStatement: friendlyNames, iconDark, providerLogoLight, providerLogoDark, keyScope, multiDeviceCredentialSupport, cxpConfigURL
    • StatusReport: certificationProfiles, sunsetDate, fipsRevision, fipsPhysicalSecurityLevel

Fixes:

  • Added @since tags to AuthenticatorStatus and FidoMetadataService javadoc.
  • All com.yubico.fido.metadata enums now deserialize unknown values to UNKOWN instead of crashing the parser.

Artifacts built with openjdk version "17.0.18" 2026-01-20.

Version 2.8.1

Choose a tag to compare

@emlun emlun released this 19 Jan 16:19
2.8.1
c9383d5

Fixes:

  • Relaxed Guava dependency version constraint to include major version 33.

Artifacts built with openjdk version "17.0.17" 2025-10-21.

Version 2.8.0

Choose a tag to compare

@fdennis fdennis released this 11 Dec 13:27
2.8.0
4b5df78

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

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

Choose a tag to compare

@fdennis fdennis released this 28 Nov 15:05
2.8.0-RC1
491b9a3

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

Choose a tag to compare

@emlun emlun released this 15 May 11:06
2.7.0
703179a

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

Pre-release

Choose a tag to compare

@emlun emlun released this 05 May 14:13
2.8.0-alpha3
3469474

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

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

Choose a tag to compare

@emlun emlun released this 05 May 13:58
2.7.0-RC3
7ca8cff

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

Pre-release

Choose a tag to compare

@emlun emlun released this 02 May 12:12
2.8.0-alpha2
a198138

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.