Passkey / WebAuthn
Les Passkeys sont des identifiants FIDO2/WebAuthn qui permettent aux utilisateurs de s’authentifier avec la biométrie de leur appareil (Face ID, Touch ID, Windows Hello), des clés de sécurité matérielles (YubiKey) ou des authentificateurs de plateforme — sans mot de passe.
Les passkeys sont résistantes au phishing car elles sont liées au domaine de l’application et ne peuvent pas être utilisées sur des sites frauduleux. Elles ne sont jamais transmises au serveur, éliminant les risques liés au partage de secrets.
Support des Navigateurs
| Navigateur | Version Minimale | Authentificateur Plateforme | Clés Matérielles |
|---|---|---|---|
| Chrome | 108 | ✅ | ✅ |
| Firefox | 119 | ✅ | ✅ |
| Safari | 16.4 | ✅ | ✅ |
| Edge | 108 | ✅ | ✅ |
| Opera | 94 | ✅ | ✅ |
| Samsung Internet | 22 | ✅ | ✅ |
Les passkeys sont synchronisées entre appareils via le trousseau iCloud (Apple), Google Password Manager ou Windows Hello for Business. Les utilisateurs qui configurent une passkey sur iPhone peuvent l’utiliser sur Mac et vice versa.
Configuration dans la Console
Active WebAuthn
Va dans Console → Paramètres → Authentification → Méthodes Passwordless et active Passkey / WebAuthn.
Configure l’Origine
Assure-toi que ton domaine est enregistré comme URL autorisée dans les paramètres de l’application. L’origine WebAuthn doit correspondre exactement au domaine de ton app (ex. https://votreapp.com).
Flux d’Inscription
Initie l’Inscription
Ton app demande les options d’inscription au serveur Auris.
import { startRegistration } from '@simplewebauthn/browser'
const options = await fetch('/api/auth/webauthn/register/challenge', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${accessToken}`
},
}).then(r => r.json())Demande les Identifiants au Navigateur
const registration = await startRegistration(options)Le navigateur affiche l’invite biométrique/passkey à l’utilisateur.
Vérifie sur le Serveur
const { verified } = await fetch('/api/auth/webauthn/register/verify', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${accessToken}`
},
body: JSON.stringify(registration),
}).then(r => r.json())
if (verified) {
console.log('Passkey enregistrée !')
}Flux d’Authentification
Initie l’Authentification
import { startAuthentication } from '@simplewebauthn/browser'
const options = await fetch('/api/auth/webauthn/authenticate/challenge', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: '[email protected]' }),
}).then(r => r.json())Obtiens l’Assertion du Navigateur
const assertion = await startAuthentication(options)Vérifie et Obtiens les Tokens
const { tokens, user } = await fetch('/api/auth/webauthn/authenticate/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(assertion),
}).then(r => r.json())Passkey comme Second Facteur
WebAuthn peut aussi être utilisé comme méthode MFA en plus de la connexion par mot de passe. Configure-le dans Console → Paramètres → MFA → Méthodes en activant WebAuthn/Passkey comme méthode MFA disponible.
Guides Associés
- Magic Link — Autre méthode sans mot de passe
- MFA Multi-facteur — Guide complet sur le MFA
- Protection contre les Attaques — Sécurité avancée