Passer au contenu principal
Cet article est une analyse initiale basée sur les README de laravel/passkeys-server et laravel/passkeys. Les deux packages sont en phase de développement, sans tag (à la date d’avril 2026).

De quoi s’agit-il ?

Le dépôt officiel Laravel publie deux packages pour implémenter une authentification sans mot de passe (WebAuthn / passkeys). Combinés, ils permettent d’implémenter de bout en bout l’enregistrement et la connexion par passkey dans une application Laravel.

Côté serveur : laravel/passkeys-server

Installation et configuration initiale

1

Ajouter le package PHP

composer require laravel/passkeys
2

Publier et exécuter les migrations

php artisan vendor:publish --tag=passkeys-migrations
php artisan migrate
3

Ajouter le trait et le contract au modèle User

use Laravel\Passkeys\Contracts\PasskeyUser;
use Laravel\Passkeys\PasskeyAuthenticatable;

class User extends Authenticatable implements PasskeyUser
{
    use PasskeyAuthenticatable;
}
Le fichier de configuration peut être publié si besoin.
php artisan vendor:publish --tag=passkeys-config

Routes enregistrées automatiquement

CatégorieMéthodeRouteRôle
Login (invité)GET/passkeys/login/optionsRécupération des options d’authentification
Login (invité)POST/passkeys/loginVérification de la passkey et connexion
Confirm (auth)GET/passkeys/confirm/optionsRécupération des options de confirmation
Confirm (auth)POST/passkeys/confirmConfirmation de la passkey
Management (auth)GET/user/passkeys/optionsRécupération des options d’enregistrement
Management (auth)POST/user/passkeysEnregistrement d’une nouvelle passkey
Management (auth)DELETE/user/passkeys/{passkey}Suppression d’une passkey

Options principales de config/passkeys.php

  • relying_party_id
  • allowed_origins
  • user_handle_secret
  • timeout
  • guard
  • middleware
  • throttle
  • redirect

Événements

Le package déclenche les événements suivants.
  • PasskeyRegistered
  • PasskeyVerified
  • PasskeyDeleted

Points de personnalisation

Passkeys::authorizeLoginUsing() permet de contrôler l’autorisation de connexion après une vérification réussie. Pour l’interrompre, retournez false ou levez une ValidationException.
En héritant de GenerateRegistrationOptions, GenerateVerificationOptions, StorePasskey, VerifyPasskey ou DeletePasskey et en les liant au conteneur, vous pouvez modifier leur comportement.
En implémentant vos propres contracts comme PasskeyLoginResponse, vous adaptez les réponses de succès (JSON, redirections, etc.) aux besoins de votre application.

Côté client : @laravel/passkeys

@laravel/passkeys est un client JavaScript qui prend en charge la cérémonie WebAuthn côté navigateur.

Installation

npm install @laravel/passkeys

API de base

import { Passkeys } from "@laravel/passkeys";

await Passkeys.register({ name: "My MacBook" });
await Passkeys.verify();

Helpers par framework

  • React : usePasskeyVerify, usePasskeyRegister dans @laravel/passkeys/react
  • Vue : usePasskeyVerify, usePasskeyRegister dans @laravel/passkeys/vue
  • Svelte : usePasskeyVerify, usePasskeyRegister dans @laravel/passkeys/svelte

Autofill de passkey

En spécifiant autofill: true, le sélecteur de passkeys du navigateur s’affiche pour les input ayant autocomplete="... webauthn". En cas d’environnement non supporté ou d’annulation utilisateur, le flux retombe sur le parcours classique.

Erreurs typées

Le README expose les classes d’erreur suivantes.
  • NotSupportedError
  • UserCancelledError
  • PasskeyExistsError
  • PasskeyError (classe de base)

Support SSR

WebAuthn est une API navigateur, mais les hooks de chaque framework sont sûrs pour le SSR. Côté serveur, isSupported est traité comme false et est mis à jour côté navigateur après le montage.

Conclusion

  • La combinaison laravel/passkeys-server (PHP) et @laravel/passkeys (JS) permet de construire une pile d’authentification par passkey complète et cohérente dans Laravel.
  • Les deux packages sont en phase de développement sans tag, mais il est très probable qu’ils deviennent la méthode d’authentification standard de l’écosystème officiel Laravel.
  • Pour une adoption précoce, basez votre conception sur les routes, la configuration, la gestion d’erreurs et les points de personnalisation décrits dans le README.
Par la suite, les passkeys ont été officiellement ajoutées comme fonctionnalité de Laravel Fortify. Pour activer les passkeys via Fortify, utilisez Features::passkeys() au lieu d’installer directement laravel/passkeys-server. Voir Laravel Fortify et starter kits pour les détails.

laravel/passkeys-server

Consultez le README et l’implémentation du package côté serveur.

@laravel/passkeys

Consultez le README et l’API du package côté client.

Laravel Fortify et starter kits

Procédure d’activation des passkeys via Fortify et relation avec les starter kits.
Dernière modification le 13 juillet 2026