WebAuthn4J vérifie les réponses d’enregistrement et d’authentification (déclarations d’attestation de tous formats, clés COSE, indicateurs, compteurs et signatures) et laisse à la partie de confiance (relying party) le soin de construire les options. Spring Security et Keycloak s’appuient dessus. La version 0.31.11 dépend de Jackson 3 (tools.jackson.*), ce qui compte si votre application utilise encore le com.fasterxml.jackson de Jackson 2 pour son propre JSON, et son API porte des annotations JetBrains @NotNull : la compilation avec le lanceur java à fichier unique a échoué tant que org.jetbrains:annotations n’était pas dans le classpath.
Il n’existe pas de politique par défaut de vérification de l’utilisateur que l’on pourrait oublier : RegistrationParameters et AuthenticationParameters prennent userVerificationRequired et userPresenceRequired comme arguments obligatoires. Lors de la vérification, un enregistrement et une assertion sans l’indicateur UV ont été acceptés quand false était passé et ont échoué avec UserNotVerifiedException quand c’était true. Gardez cette valeur cohérente avec le userVerification que vous envoyez dans les options, comme le montre l’exemple.
Les signatures doivent être en ASN.1 DER : une signature d’assertion r‖s brute de 64 octets a échoué avec BadSignatureException: Assertion signature is not valid., et une signature DER high-S a été vérifiée. Un compteur inférieur à la valeur enregistrée fait échouer la connexion avec MaliciousCounterValueException: Malicious counter value is detected. Cloned authenticators exist in parallel., tandis qu’un compteur resté à 0 depuis le début, comme en renvoient les clés d’accès synchronisées, est accepté. Les identifiants Ed25519 ont été vérifiés de bout en bout.
createNonStrictWebAuthnManager() accepte n’importe quelle déclaration d’attestation sans la contrôler par rapport à des ancres de confiance, ce qui convient quand vous demandez l’attestation none, mais pas quand l’attestation relève d’une décision de politique ; dans ce cas, configurez des ancres de confiance et utilisez un gestionnaire strict.
L’inspecteur WebAuthn décode ce qu’envoient les navigateurs, et la recherche d’AAGUID identifie les modèles d’authentificateurs pour les politiques d’attestation.