WebAuthn4J verifica las respuestas de registro y de autenticación —declaraciones de atestación de todos los formatos, claves COSE, indicadores, contadores y firmas— y deja a la relying party la construcción de las opciones. Spring Security y Keycloak la usan por debajo. La 0.31.11 depende de Jackson 3 (tools.jackson.*), lo que importa cuando tu aplicación todavía usa el com.fasterxml.jackson de Jackson 2 para su propio JSON, y su API lleva anotaciones @NotNull de JetBrains: compilar contra ella con el lanzador de archivo único java falló hasta que org.jetbrains:annotations estuvo en el classpath.
No hay ninguna política predeterminada de verificación del usuario que se pueda olvidar: RegistrationParameters y AuthenticationParameters reciben userVerificationRequired y userPresenceRequired como argumentos obligatorios. En la comprobación, un registro y una aserción con el indicador UV desactivado se verificaron cuando se pasó false y fallaron con UserNotVerifiedException cuando se pasó true. Mantén el valor coherente con el userVerification que envías en las opciones, como muestra el ejemplo.
Las firmas deben ser DER ASN.1: una firma de aserción r‖s en bruto de 64 bytes falló con BadSignatureException: Assertion signature is not valid., y una firma DER high-S se verificó. Un contador menor que el almacenado hace fallar el inicio de sesión con MaliciousCounterValueException: Malicious counter value is detected. Cloned authenticators exist in parallel., mientras que un contador que siempre vale 0, como el que notifican las llaves de acceso sincronizadas, pasa la comprobación. Las credenciales Ed25519 se verificaron de principio a fin.
createNonStrictWebAuthnManager() acepta cualquier declaración de atestación sin contrastarla con anclas de confianza, lo cual es correcto cuando pides la atestación none e incorrecto cuando la atestación es una decisión de política; en ese caso, configura las anclas de confianza y usa un gestor estricto.
El inspector de WebAuthn decodifica lo que envían los navegadores, y la búsqueda de AAGUID identifica los modelos de autenticador para las políticas de atestación.