WebAuthn et les JWT sont souvent comparés comme s'ils résolvaient le même problème. Ce n'est pas le cas. WebAuthn concerne la manière dont un utilisateur prouve son identité. Les JWT sont une façon pour un serveur de représenter l'état authentifié après que cette preuve ait réussi.
Cette distinction est importante car elle modifie complètement la conversation architecturale.
Où s'intègre WebAuthn
WebAuthn vous offre une authentification liée à l'origine, résistante au phishing, basée sur des clés publiques. Un flux de navigateur peut commencer comme ceci :
const credential = await navigator.credentials.get({
publicKey: optionsFromServer,
});
Le point important n'est pas l'appel API. C'est la propriété de sécurité : la référence est liée à l'origine et soutenue par la cryptographie à clé publique.
Où s'intègrent les JWT
Après que l'authentification ait réussi, le serveur doit encore maintenir un modèle de session. Cela pourrait être :
- un cookie HttpOnly
- un JWT
- un identifiant de session opaque
Les JWT concernent le transport de session et la représentation des revendications. Ils ne rendent pas l'authentification résistante au phishing par eux-mêmes.
Cela signifie qu'une architecture robuste peut ressembler à : WebAuthn pour la vérification de l'utilisateur, puis un cookie HttpOnly ou un autre token de session pour l'état continu. Ces couches coopèrent. Elles ne sont pas en compétition.
Meilleure règle
Utilisez WebAuthn pour améliorer la cérémonie de connexion. Choisissez des JWT, des cookies ou des sessions opaques en fonction de la manière dont le reste de la plateforme gère l'état, la révocation et la sécurité du navigateur.
WebAuthn peut renforcer le système, peu importe le format du token de session qui suit.
Lectures complémentaires