Releases: Yubico/java-webauthn-server
Releases · Yubico/java-webauthn-server
Version 1.1.0
Changed behaviours:
AssertionExtensionInputsBuilder.appid(Optional<AppId>)
now fails fast if the argument isnull
ClientAssertionExtensionOutputsBuilder.appid(Optional<Boolean>)
now fails fast if the argument isnull
New features:
- Public API methods that take
Optional
parameters now come withOptional
-less aliases.
Differences are compared to version 1.0.0, including all prerelease versions in between.
Pre-release 1.1.0-RC1
Changed behaviours:
AssertionExtensionInputsBuilder.appid(Optional<AppId>)
now fails fast if the argument isnull
.ClientAssertionExtensionOutputsBuilder.appid(Optional<Boolean>)
now fails fast if the argument isnull
.
New features:
- Public API methods that take
Optional
parameters now come withOptional
-less aliases.
Version 1.0.1
Bugfixes:
- Registration no longer fails for unimplemented attestation statement formats if
allowUnknownAttestation
is set totrue
.- Registration still fails for attestation statement formats not defined in the WebAuthn Level 1 spec.
Version 1.0.0
- Fixed URL in artifact POM
- Improved a few javadoc wordings
Version 0.8.0
Possibly breaking changes:
- User Presence (UP) is now always required by the spec, not only when UV is not required; implementation updated to reflect this.
New features:
- Added support for
android-safetynet
attestation statement format- Thanks to Ren Lin for the contribution, see #5
- Implementation updated to reflect Proposed Recommendation version of the spec, released 2019-01-17
Bug fixes:
- Fixed validation of zero-valued assertion signature counter
- Previously, a zero-valued assertion signature counter was always regarded as valid. Now, it is only considered valid if the stored signature counter is also zero.
Version 0.7.0
webauthn-server-attestation
- Added attestation metadata for Security Key NFC by Yubico
webauthn-server-core
Breaking changes:
- Deleted parameter
RelyingParty.verifyTypeAttribute
. This was added as a workaround while browser implementations were incomplete, and should never be used in production. - Replaced field
RegisteredCredential.publicKey: PublicKey
withpublicKeyCose: ByteArray
. This means the library user no longer needs to parse the public key before passing it back into the library. RelyingParty.finishAssertion
now throwsInvalidSignatureCountException
instead of its supertypeAssertionFailedException
when signature count validation is enabled and the received signature count is invalid.
New features:
- New parameter
StartAssertionOptions.userVerification
which is forwarded intoPublicKeyCredentialRequestOptions
byRelyingParty.startAssertion
Version 0.6.0
Breaking changes:
- Classes moved from package
com.yubico.webauthn.data
tocom.yubico.webauthn
:AssertionRequest
AssertionResult
RegistrationResult
- All public classes are now final.
- All builders now enforce mandatory arguments at compile time. Some usages may therefore need to adjust the order of calls on the builder instance.
- Static method
Attestation.trusted(boolean)
replaced with.builder()
with.trusted(boolean)
as builder method instead AuthenticatorAssertionResponse
constructor is now private.AuthenticatorAttestationResponse
constructor is now private.PublicKeyCredentialDescriptor
constructor is now private.PublicKeyCredentialRequestOptions
constructor is now private.
- Static method
- All classes that take collections as constructor (builder) arguments now make shallow copies of those collections, so that mutations of the collections don't propagate into the class instance.
- Deleted interface
Crypto
and constructor parametercrypto
ofRelyingParty
- Deleted interface
ChallengeGenerator
and constructor parameterchallengeGenerator
ofRelyingParty
- Updated implementation to agree with current editor's draft of the spec
- Renamed class
AttestationData
toAttestedCredentialData
- Enum constant
TokenBindingStatus.NOT_SUPPORTED
deleted; this is now instead signaled by a missing value - Parameter
RelyingParty.allowMissingTokenBinding
therefore removed - Enum constant
AttestationType.PRIVACY_CA
renamed toATTESTATION_CA
- Renamed class
- Renamed class
AuthenticationDataFlags
toAuthenticatorDataFlags
- Deleted constant
UserVerificationRequirement.DEFAULT
- Deleted method
AttestationObject.getAuthData()
- Changed type of field
RelyingParty.origins
fromList
toSet
- Fixed (reduced) visibility of
RegisteredCredential
fields - Class
MetadataObject
moved towebauthn-server-attestation
module - Updated and greatly expanded Javadoc
0.5.0
webauthn-server-core
New features:
PackedAttestationStatementVerifier
now supports SHA256WithRSA signatures
Bug fixes:
PublicKeyCredentialDescriptor.compareTo
is now consistent with equalsAuthenticatorData
constructor should now throw more descriptive exceptions instead of rawArrayIndexOutOfBoundsException
s
webauthn-server-attestation
Breaking changes:
- Interface
MetadataResolver
replaced with interfacesAttestationResolver
andTrustResolver
- Class
SimpleResolver
split intoSimpleAttestationResolver
andSimpleTrustResolver
- Both of these classes now take the metadata as a constructor parameter instead of exposing
addMetadata
methods
- Both of these classes now take the metadata as a constructor parameter instead of exposing
- Class
CompositeResolver
split intoCompositeAttestationResolver
andCompositeTrustResolver
- Class
- Class
StandardMetadataService
overhauled
0.4.0
0.3.0
With this release, the library is getting close to mature enough for a production-ready release. There may be breaking API changes necessary before 1.0, but none are planned.
Changes:
- Major API overhaul; public API changes include but are not limited to:
- Reorganised package structure
CredentialRepository.getCredentialIdsForUsername(String)
now returnsSet
instead ofList
- Most data classes now expose a builder instead of a public constructor
- Shortcut constants added to
COSEAlgorithmIdentifier
andPublicKeyCredentialParameters
- Exception
U2fBadConfigurationException
renamed toBadConfigurationException
RelyingParty.startRegistration
now accepts oneStartRegistrationOptions
parameter instead of several parametersRelyingParty.finishRegistration
now accepts oneFinishRegistrationOptions
parameter instead of several parametersRelyingParty.startAssertion
now accepts oneStartAssertionOptions
parameter instead of several parametersRelyingParty.finishAssertion
now accepts oneFinishAssertionOptions
parameter instead of several parametersRelyingParty.finishRegistration
now throws checkedRegistrationFailedException
instead ofIllegalArgumentException
on most failuresRelyingParty.finishAssertion
now throws checkedAssertionFailedException
instead ofIllegalArgumentException
on most failures- Class
MetadataResolver
replaced with interface - Constructor
CollectedClientData(JsonNode)
deleted - Type of fields
StartAssertionOptions.extensions
,StartRegistrationOptions.extensions
andPublicKeyCredential.clientExtensionOutputs
narrowed fromJsonNode
toObjectNode
- Parameters
StartRegistrationOptions.excludeCredentials
andStartAssertionOptions.allowCredentials
deleted; they are now discovered automatically from theCredentialRepository
. If custom control overexcludeCredentials
orallowCredentials
is needed, modify thePublicKeyCredentialCreationOptions
orPublicKeyCredentialRequestOptions
object manually. COSEAlgorithmIdentifier
is now an actual enum- Extensions are now passed and returned as domain objects instead of as Jackson types
- Type parameter added to
PublicKeyCredential
to express extensions type - Fields
CollectedClientData.authenticatorExtensions
and.clientExtensions
deleted
- Fixed a bug in
AuthenticatorDataFlags
that caused theED
(0x80) flag to never be set - All classes in
com.yubico.webauthn.data
can now be serialized and deserialized using Jackson- JSON output has been slightly changed:
AttestationObject
,AuthenticatorData
andCollectedClientData
now serialize back to Base64Url encoded bytes instead of to JSON objects- Member
_attestationObject
removed from serializedAuthenticatorAttestationResponse
- Member
authenticatorData
removed from serializedAuthenticatorAttestationResponse
- JSON output has been slightly changed:
- New methods
ByteArray.size(): int
and.isEmpty(): boolean
ByteArray
is nowComparable
to itself- Added support for
appid
extension