Passkey Authentication in Laravel 13: login senza password — articolo

> Passkey Authentication in Laravel 13: login senza password

Come Laravel 13 integra le Passkey negli starter kit e in Fortify per un autenticazione moderna e sicura.

Luigi Iadicola
~4 min lettura
#Laravel #Sicurezza #Autenticazione
Passkey Authentication in Laravel 13: login senza password
Passkey Authentication in Laravel 13: login senza password

Cosa sono le Passkey e perche sostituiscono le password

Le Passkey sono credenziali crittografiche legate al dispositivo dell'utente. Sostituiscono le password tradizionali con autenticazione biometrica — impronta digitale, Face ID — o con il PIN del dispositivo. Il risultato: niente piu password da ricordare, niente piu password manager, niente piu rischi legati a credenziali deboli o riutilizzate.

Dal punto di vista tecnico, le Passkey si basano sul protocollo WebAuthn (Web Authentication API), uno standard W3C supportato da tutti i browser moderni: Chrome, Firefox, Safari, Edge. Anche i principali sistemi operativi — Windows, macOS, iOS, Android — gestiscono nativamente la sincronizzazione delle Passkey tra dispositivi.

Per chi sviluppa applicazioni web con Laravel, la domanda non era se adottare le Passkey, ma quando il framework avrebbe offerto un supporto nativo. Con Laravel 13, la risposta e adesso.

Come funzionano le Passkey in Laravel 13

Laravel 13 integra le Passkey in due punti dell'ecosistema:

  • Starter kit: i template Breeze e Jetstream includono registrazione e login via Passkey out of the box, con interfaccia utente gia pronta e flusso completo
  • Laravel Fortify: il backend di autenticazione gestisce il flusso WebAuthn sotto il cofano, con metodi dedicati per la registrazione, l'autenticazione e la gestione delle Passkey

Il flusso di registrazione

Quando un utente registra una Passkey, il processo e trasparente:

  • L'applicazione genera una challenge crittografica e la invia al browser
  • Il browser invoca l'API WebAuthn del sistema operativo
  • L'utente conferma con biometria o PIN
  • Il dispositivo genera una coppia di chiavi pubblica/privata
  • La chiave pubblica viene inviata al server e salvata nel database con una migrazione dedicata
  • La chiave privata resta sul dispositivo, non lascia mai il dispositivo dell'utente

Il flusso di login

Al login successivo, il processo e ancora piu rapido:

  • L'applicazione invia una challenge
  • L'utente sblocca con biometria o PIN
  • Il dispositivo firma la challenge con la chiave privata
  • Il server verifica la firma con la chiave pubblica salvata
  • L'utente e autenticato — senza aver digitato nulla

Impatto sulla sicurezza: quali attacchi eliminano le Passkey

Le Passkey non sono solo piu comode delle password — sono oggettivamente piu sicure. Ecco i vettori di attacco che eliminano completamente:

  • Phishing: le Passkey sono legate al dominio. Una Passkey creata per tuosito.com non funziona su tuosito-fake.com. L'attacco di phishing piu comune diventa impossibile.
  • Brute force: non esiste una password da indovinare. L'autenticazione si basa su crittografia asimmetrica, non su stringhe che possono essere enumerate.
  • Credential stuffing: poiche non ci sono password, non ci sono credenziali da riutilizzare. Un data breach su un altro sito non compromette l'account dell'utente.
  • Keylogging: l'utente non digita nulla. Non c'e input da intercettare.
  • Man-in-the-middle: il protocollo WebAuthn include la verifica dell'origine, rendendo inefficaci gli attacchi MITM sull'autenticazione.

Compatibilita e fallback: gestire la transizione

Non tutti gli utenti hanno dispositivi che supportano le Passkey, e non tutti sono pronti ad abbandonare le password. Laravel 13 gestisce questa transizione in modo pragmatico:

  • Il fallback a email e password resta disponibile per tutti gli utenti
  • Un utente puo registrare piu Passkey per dispositivi diversi
  • La migrazione aggiunge una tabella dedicata senza modificare la tabella users esistente
  • Il flusso di autenticazione rileva automaticamente se il browser supporta WebAuthn e propone la Passkey come opzione primaria, con fallback trasparente alla password tradizionale

Questo approccio graduale e fondamentale: non si puo forzare l'adozione delle Passkey, ma si puo incentivare offrendo un'esperienza di login superiore a chi le utilizza.

Implementazione pratica: cosa serve per attivare le Passkey

Per attivare le Passkey in un progetto Laravel 13, i passaggi sono minimi:

  • Eseguire la migrazione che crea la tabella passkeys
  • Aggiungere il trait HasPasskeys al modello User
  • Configurare le rotte di registrazione e autenticazione Passkey in fortify.php
  • Aggiungere il componente frontend per la registrazione e il login (incluso negli starter kit)

Per chi usa gli starter kit Breeze o Jetstream, tutto e gia configurato. Per progetti esistenti che usano Fortify direttamente, l'integrazione richiede circa 30 minuti di lavoro.

Considerazioni per applicazioni multi-tenant

In applicazioni multi-tenant, le Passkey richiedono attenzione aggiuntiva sulla configurazione del dominio. Poiche le Passkey sono legate al dominio, ogni tenant con un dominio diverso richiede Passkey separate. Laravel 13 gestisce questo scenario tramite la configurazione dinamica del relying party nel flusso WebAuthn, permettendo di adattare il dominio in base al tenant corrente.

Perche adottare le Passkey ora

Per chi lavora come sviluppatore freelance su progetti Laravel, offrire l'autenticazione via Passkey ai clienti e un valore aggiunto concreto. Non e un nice-to-have futuristico: e uno standard maturo, supportato da tutti i browser e sistemi operativi principali, con un'integrazione nativa nel framework.

Per applicazioni che gestiscono dati sensibili — gestionali, aree admin, piattaforme SaaS, applicazioni finanziarie — adottare le Passkey migliora la sicurezza in modo misurabile e offre un'esperienza utente superiore. Con Laravel 13, l'integrazione e nativa, documentata e testata: non c'e motivo per non iniziare.

altri articoli
progetti correlati