Releases: Yubico/java-webauthn-server
Experimental release 2.9.0-alpha1
webauthn-server-core:
Fixes:
- Added
@sincetags toAttestationTrustSourcejavadoc.
webauthn-server-attestation:
New features:
- Added
AuthenticatorStatus.RETIREDandFilters.notRetired(). - Added
AttachmentHint.ATTACHMENT_HINT_SMART_CARD. - Added
UNKNOWNconstant to all enums incom.yubico.fido.metadata:AttachmentHintAuthenticationAlgorithmAuthenticatorAttestationTypeCtapCertificationIdCtapPinUvAuthProtocolVersionCtapVersionProtocolFamilyPublicKeyRepresentationFormatTransactionConfirmationDisplayType
- Added enum constant
CtapVersion.FIDO_2_3. - Added missing fields to FIDO MDS data model:
AuthenticatorGetInfo:attestationFormats,longTouchForReset,uvCountSinceLastPinEntry,transportsForReset,pinComplexityPolicy,pinComplexityPolicyURL,maxPINLength,authenticatorConfigCommandsBiometricAccuracyDescriptor:iAPARThresholdMetadataStatement:friendlyNames,iconDark,providerLogoLight,providerLogoDark,keyScope,multiDeviceCredentialSupport,cxpConfigURLStatusReport:certificationProfiles,sunsetDate,fipsRevision,fipsPhysicalSecurityLevel
Fixes:
- Added
@sincetags toAuthenticatorStatusandFidoMetadataServicejavadoc. - All
com.yubico.fido.metadataenums now deserialize unknown values toUNKOWNinstead of crashing the parser.
Artifacts built with openjdk version "17.0.18" 2026-01-20.
Version 2.8.1
Version 2.8.0
New features:
- Added JavaDoc to
COSEAlgorithmIdentifierconstants. - Added support for Ed448 signatures.
- New constants
COSEAlgorithmIdentifier.Ed25519,COSEAlgorithmIdentifier.Ed448andPublicKeyCredentialParameters.Ed448 - (Experimental) Added a new suite of interfaces, starting with
CredentialRepositoryV2.RelyingPartycan now be configured with aCredentialRepositoryV2instance instead of aCredentialRepositoryinstance. This changes the result of theRelyingPartybuilder toRelyingPartyV2.CredentialRepositoryV2andRelyingPartyV2enable a suite of new features:CredentialRepositoryV2does not assume that the application has usernames, instead username support is modular. In addition to theCredentialRepositoryV2,RelyingPartyV2can be optionally configured with aUsernameRepositoryas well. If aUsernameRepositoryis not set, thenRelyingPartyV2.startAssertion(StartAssertionOptions)will fail at runtime ifStartAssertionOptions.usernameis set.CredentialRepositoryV2uses a new interfaceCredentialRecordto represent registered credentials, instead of the concreteRegisteredCredentialclass (althoughRegisteredCredentialalso implementsCredentialRecord). This provides implementations greater flexibility while also automating the type conversion toPublicKeyCredentialDescriptorneeded instartRegistration()andstartAssertion().RelyingPartyV2.finishAssertion()returns a new typeAssertionResultV2with a new methodgetCredential(), which returns theCredentialRecordthat was verified. The return type ofgetCredential()is generic and preserves the concrete type ofCredentialRecordreturned by theCredentialRepositoryV2implementation.- 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
- New field
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
Changes since 2.8.0-alpha3
webauthn-server-core:
New features:
- Added JavaDoc to
COSEAlgorithmIdentifierconstants. - Added support for Ed448 signatures.
- New constants
COSEAlgorithmIdentifier.Ed25519,COSEAlgorithmIdentifier.Ed448andPublicKeyCredentialParameters.Ed448
webauthn-server-attestation:
New features:
- Updated SupportedCtapOptions to version 2.2 of CTAP spec.
- New field
perCredMgmtRO
- New field
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 with
CredentialRepositoryV2.RelyingPartycan now be configured with aCredentialRepositoryV2instance instead of aCredentialRepositoryinstance. This changes the result of theRelyingPartybuilder toRelyingPartyV2.CredentialRepositoryV2andRelyingPartyV2enable a suite of new features:CredentialRepositoryV2does not assume that the application has usernames, instead username support is modular. In addition to theCredentialRepositoryV2,RelyingPartyV2can be optionally configured with aUsernameRepositoryas well. If aUsernameRepositoryis not set, thenRelyingPartyV2.startAssertion(StartAssertionOptions)will fail at runtime ifStartAssertionOptions.usernameis set.CredentialRepositoryV2uses a new interfaceCredentialRecordto represent registered credentials, instead of the concreteRegisteredCredentialclass (althoughRegisteredCredentialalso implementsCredentialRecord). This provides implementations greater flexibility while also automating the type conversion toPublicKeyCredentialDescriptorneeded instartRegistration()andstartAssertion().RelyingPartyV2.finishAssertion()returns a new typeAssertionResultV2with a new methodgetCredential(), which returns theCredentialRecordthat was verified. The return type ofgetCredential()is generic and preserves the concrete type ofCredentialRecordreturned by theCredentialRepositoryV2implementation.- 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
New features:
- Added overloaded setter
RelyingPartyBuilder.origins(Optional<Set<String>>). - Added support for the CTAP2
credProtectextension. - Added support for the
prfextension. - (Experimental) Added option
FinishRegistrationOptions.isConditionalCreateto allow UP=0 in registration response for registration ceremonies withmediation: "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
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
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
Ported changes from pre-release 2.7.0-RC2:
Fixes:
- Fixed JSON encoding of
credProtectextension inputs.
Artifacts built with openjdk version "17.0.14" 2025-01-21.
Pre-release 2.7.0-RC2
Fixes:
- Fixed JSON encoding of
credProtectextension inputs.
Artifacts built with openjdk version "17.0.14" 2025-01-21.
Experimental release 2.8.0-alpha1
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.RelyingPartycan now be configured with aCredentialRepositoryV2instance instead of aCredentialRepositoryinstance. This changes the result of theRelyingPartybuilder toRelyingPartyV2.CredentialRepositoryV2andRelyingPartyV2enable a suite of new features:CredentialRepositoryV2does not assume that the application has usernames, instead username support is modular. In addition to theCredentialRepositoryV2,RelyingPartyV2can be optionally configured with aUsernameRepositoryas well. If aUsernameRepositoryis not set, thenRelyingPartyV2.startAssertion(StartAssertionOptions)will fail at runtime ifStartAssertionOptions.usernameis set.CredentialRepositoryV2uses a new interfaceCredentialRecordto represent registered credentials, instead of the concreteRegisteredCredentialclass (althoughRegisteredCredentialalso implementsCredentialRecord). This provides implementations greater flexibility while also automating the type conversion toPublicKeyCredentialDescriptorneeded instartRegistration()andstartAssertion().RelyingPartyV2.finishAssertion()returns a new typeAssertionResultV2with a new methodgetCredential(), which returns theCredentialRecordthat was verified. The return type ofgetCredential()is generic and preserves the concrete type ofCredentialRecordreturned by theCredentialRepositoryV2implementation.- 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.