Releases: Yubico/java-webauthn-server
Releases · Yubico/java-webauthn-server
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-safetynetattestation 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: PublicKeywithpublicKeyCose: ByteArray. This means the library user no longer needs to parse the public key before passing it back into the library. RelyingParty.finishAssertionnow throwsInvalidSignatureCountExceptioninstead of its supertypeAssertionFailedExceptionwhen signature count validation is enabled and the received signature count is invalid.
New features:
- New parameter
StartAssertionOptions.userVerificationwhich is forwarded intoPublicKeyCredentialRequestOptionsbyRelyingParty.startAssertion
Version 0.6.0
Breaking changes:
- Classes moved from package
com.yubico.webauthn.datatocom.yubico.webauthn:AssertionRequestAssertionResultRegistrationResult
- 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 AuthenticatorAssertionResponseconstructor is now private.AuthenticatorAttestationResponseconstructor is now private.PublicKeyCredentialDescriptorconstructor is now private.PublicKeyCredentialRequestOptionsconstructor 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
Cryptoand constructor parametercryptoofRelyingParty - Deleted interface
ChallengeGeneratorand constructor parameterchallengeGeneratorofRelyingParty - Updated implementation to agree with current editor's draft of the spec
- Renamed class
AttestationDatatoAttestedCredentialData - Enum constant
TokenBindingStatus.NOT_SUPPORTEDdeleted; this is now instead signaled by a missing value - Parameter
RelyingParty.allowMissingTokenBindingtherefore removed - Enum constant
AttestationType.PRIVACY_CArenamed toATTESTATION_CA
- Renamed class
- Renamed class
AuthenticationDataFlagstoAuthenticatorDataFlags - Deleted constant
UserVerificationRequirement.DEFAULT - Deleted method
AttestationObject.getAuthData() - Changed type of field
RelyingParty.originsfromListtoSet - Fixed (reduced) visibility of
RegisteredCredentialfields - Class
MetadataObjectmoved towebauthn-server-attestationmodule - Updated and greatly expanded Javadoc
0.5.0
webauthn-server-core
New features:
PackedAttestationStatementVerifiernow supports SHA256WithRSA signatures
Bug fixes:
PublicKeyCredentialDescriptor.compareTois now consistent with equalsAuthenticatorDataconstructor should now throw more descriptive exceptions instead of rawArrayIndexOutOfBoundsExceptions
webauthn-server-attestation
Breaking changes:
- Interface
MetadataResolverreplaced with interfacesAttestationResolverandTrustResolver- Class
SimpleResolversplit intoSimpleAttestationResolverandSimpleTrustResolver- Both of these classes now take the metadata as a constructor parameter instead of exposing
addMetadatamethods
- Both of these classes now take the metadata as a constructor parameter instead of exposing
- Class
CompositeResolversplit intoCompositeAttestationResolverandCompositeTrustResolver
- Class
- Class
StandardMetadataServiceoverhauled
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 returnsSetinstead ofList- Most data classes now expose a builder instead of a public constructor
- Shortcut constants added to
COSEAlgorithmIdentifierandPublicKeyCredentialParameters - Exception
U2fBadConfigurationExceptionrenamed toBadConfigurationException RelyingParty.startRegistrationnow accepts oneStartRegistrationOptionsparameter instead of several parametersRelyingParty.finishRegistrationnow accepts oneFinishRegistrationOptionsparameter instead of several parametersRelyingParty.startAssertionnow accepts oneStartAssertionOptionsparameter instead of several parametersRelyingParty.finishAssertionnow accepts oneFinishAssertionOptionsparameter instead of several parametersRelyingParty.finishRegistrationnow throws checkedRegistrationFailedExceptioninstead ofIllegalArgumentExceptionon most failuresRelyingParty.finishAssertionnow throws checkedAssertionFailedExceptioninstead ofIllegalArgumentExceptionon most failures- Class
MetadataResolverreplaced with interface - Constructor
CollectedClientData(JsonNode)deleted - Type of fields
StartAssertionOptions.extensions,StartRegistrationOptions.extensionsandPublicKeyCredential.clientExtensionOutputsnarrowed fromJsonNodetoObjectNode - Parameters
StartRegistrationOptions.excludeCredentialsandStartAssertionOptions.allowCredentialsdeleted; they are now discovered automatically from theCredentialRepository. If custom control overexcludeCredentialsorallowCredentialsis needed, modify thePublicKeyCredentialCreationOptionsorPublicKeyCredentialRequestOptionsobject manually. COSEAlgorithmIdentifieris now an actual enum- Extensions are now passed and returned as domain objects instead of as Jackson types
- Type parameter added to
PublicKeyCredentialto express extensions type - Fields
CollectedClientData.authenticatorExtensionsand.clientExtensionsdeleted
- Fixed a bug in
AuthenticatorDataFlagsthat caused theED(0x80) flag to never be set - All classes in
com.yubico.webauthn.datacan now be serialized and deserialized using Jackson- JSON output has been slightly changed:
AttestationObject,AuthenticatorDataandCollectedClientDatanow serialize back to Base64Url encoded bytes instead of to JSON objects- Member
_attestationObjectremoved from serializedAuthenticatorAttestationResponse - Member
authenticatorDataremoved from serializedAuthenticatorAttestationResponse
- JSON output has been slightly changed:
- New methods
ByteArray.size(): intand.isEmpty(): boolean ByteArrayis nowComparableto itself- Added support for
appidextension