Zum Hauptinhalt springen
Dieser Artikel ist eine erste Analyse auf Basis der READMEs von laravel/passkeys-server und laravel/passkeys. Beide Pakete befinden sich noch in einer Entwicklungsphase ohne Tags (Stand: April 2026).

Was steckt hinter diesen Paketen?

In den offiziellen Laravel-Repositories werden zwei Pakete zur Umsetzung passwortloser Authentifizierung (WebAuthn / Passkeys) bereitgestellt. Die Kombination beider Pakete erlaubt in einer Laravel-Anwendung die einheitliche Umsetzung von Passkey-Registrierung und -Login.

Serverseitig: laravel/passkeys-server

Installation und Erst-Setup

1

PHP-Paket hinzufügen

composer require laravel/passkeys
2

Migrationen veröffentlichen und ausführen

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

Trait und Contract am User-Modell ergänzen

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

class User extends Authenticatable implements PasskeyUser
{
    use PasskeyAuthenticatable;
}
Bei Bedarf lässt sich auch die Konfigurationsdatei veröffentlichen.
php artisan vendor:publish --tag=passkeys-config

Automatisch registrierte Routen

KategorieMethodeRouteZweck
Login (guest)GET/passkeys/login/optionsOptionen für die Authentifizierung abrufen
Login (guest)POST/passkeys/loginPasskey verifizieren und einloggen
Confirm (auth)GET/passkeys/confirm/optionsOptionen für die Bestätigung abrufen
Confirm (auth)POST/passkeys/confirmPasskey bestätigen
Management (auth)GET/user/passkeys/optionsOptionen für die Registrierung abrufen
Management (auth)POST/user/passkeysNeuen Passkey speichern
Management (auth)DELETE/user/passkeys/{passkey}Passkey löschen

Wichtige Optionen in config/passkeys.php

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

Events

Das Paket löst folgende Events aus.
  • PasskeyRegistered
  • PasskeyVerified
  • PasskeyDeleted

Anpassungspunkte

Mit Passkeys::authorizeLoginUsing() steuern Sie, ob nach erfolgreicher Verifikation eingeloggt werden darf. Zum Abbrechen geben Sie false zurück oder werfen eine ValidationException.
Sie können GenerateRegistrationOptions, GenerateVerificationOptions, StorePasskey, VerifyPasskey und DeletePasskey erweitern, im Service-Container binden und das Verhalten ersetzen.
Durch eigene Implementierungen von Contracts wie PasskeyLoginResponse passen Sie Erfolgs-Responses (JSON, Redirects u. a.) an Ihre Anforderungen an.

Clientseitig: @laravel/passkeys

@laravel/passkeys ist ein JavaScript-Client, der die WebAuthn-Zeremonien im Browser übernimmt.

Installation

npm install @laravel/passkeys

Grundlegende API

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

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

Framework-Helfer

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

Passkey-Autofill

Mit autofill: true lässt sich in Inputs mit autocomplete="... webauthn" der Passkey-Picker des Browsers anzeigen. In nicht unterstützten Umgebungen oder bei Nutzer-Abbruch erfolgt ein Fallback auf den normalen Ablauf.

Typisierte Fehler

Die README stellt folgende Fehlerklassen bereit.
  • NotSupportedError
  • UserCancelledError
  • PasskeyExistsError
  • PasskeyError (Basisklasse)

SSR-Unterstützung

WebAuthn ist zwar eine Browser-API, doch die Framework-Hooks sind SSR-sicher. Auf der Serverseite wird isSupported als false behandelt und nach dem Mount auf den echten Browser-Zustand aktualisiert.

Fazit

  • Die Kombination aus laravel/passkeys-server (PHP) und @laravel/passkeys (JS) erlaubt in Laravel den Aufbau eines vollständigen Passkey-Auth-Stacks.
  • Beide Pakete befinden sich in einer Entwicklungsphase ohne Tags, dürften jedoch als offizieller Bestandteil des Laravel-Ökosystems künftig ein Standard-Authentifizierungsweg werden.
  • Bei einer frühen Einführung sollten Sie das Design an Routen, Konfiguration, Fehlerbehandlung und Erweiterungspunkten aus der README ausrichten.
Passkeys wurden anschließend offiziell als Feature von Laravel Fortify aufgenommen. Um Passkeys über Fortify zu aktivieren, verwenden Sie Features::passkeys(), statt laravel/passkeys-server direkt zu installieren. Details finden Sie unter Laravel Fortify und die Starterkits.

laravel/passkeys-server

Aktuelle README und Implementierung des serverseitigen Pakets.

@laravel/passkeys

Aktuelle README und API des clientseitigen Pakets.

Laravel Fortify und die Starterkits

Anleitung zum Aktivieren von Passkeys über Fortify und der Zusammenhang mit den Starterkits.
Zuletzt geändert am 13. Juli 2026