Lozinke su 30+ godina stari dizajn koji više ne radi. Korisnici imaju 100+ accounta, koriste "password123" svuda, padaju na phishing, izgubljene lozinke su 30% support tiketa. Passwordless auth — magic links i passkeys — eliminira ove probleme. Ovo je vodič kako i kad implementirati u 2026.
Što ne radi s lozinkama
- Password reuse — leak na jednom sajtu = compromised na 20 drugih.
- Phishing — korisnik upisuje lozinku na lažnom sajtu, gotovo.
- Brute force — slabe lozinke probiju se kroz minute.
- UX horror — "Special character, 1 number, 12 znakova, ne smije bit s prethodnih 10..."
- Support cost — "forgot password" tiketi su 20-40% svih support requests-a.
- 2FA fatigue — dodavanje 2FA pomoći sigurnost ali ubija UX.
Dvije passwordless opcije
Magic links
Korisnik upiše email → server pošalje email s jednokratnim link-om → korisnik klikne → loginan.
Plus: jednostavan UX, ne treba dodatna app, radi na svakom uređaju.
Minus: ovisi o email delivery (slow, ponekad spam), security ovisi o tome da je email account siguran.
Passkeys (WebAuthn)
Cryptographic key par. Privatni key na uređaju (Face ID, Touch ID, Windows Hello, hardware key), javni na serveru.
Plus: phishing-proof (key provjerava domenu), instant (Face ID = 1 sec login), sync između uređaja (iCloud Keychain, Google Password Manager).
Minus: noviji standard, neki stariji uređaji ne podržavaju, recovery flow komplikiran.
Magic links — implementacija
WordPress
Plugin: Passwordless Login (od Cozmoslabs) ili Magic Login.
- Instaliraj plugin.
- Settings → enable magic links za login form.
- Customize email template (brand-specific).
- Postavi link expiration (15 min default).
- Test flow.
Laravel
Built-in od verzije 11 ("Passwordless Login" via Magic Links). Stariji Laravel:
composer require grosv/laravel-passwordless-login
// LoginController
public function sendLink(Request $request) {
$user = User::where('email', $request->email)->first();
$url = URL::temporarySignedRoute('passwordless.login',
now()->addMinutes(15),
['user' => $user->id]
);
Mail::to($user->email)->send(new MagicLinkMail($url));
}
Endpoint passwordless.login verifikira signed URL, log-in usera, redirect.
Custom (Craft, vlastiti app)
Pattern:
- User upiše email.
- Server generira token (uuid v4) + spremi u DB s expiry +15 min + user_id + IP/UA hash.
- Server pošalje email s URL-om
https://example.com/auth/magic?token=XXX. - User klika link. Server provjeri token: postoji, nije expired, IP/UA approximate match (opcionalno).
- Server kreira session/JWT, briše token iz DB.
Magic links — najbolje prakse
- Token expiration 15-30 min.
- One-time use — token se briše nakon successful login.
- Rate limit po email-u (max 3 zahtjeva u 10 min).
- Email template uključi: "Niste tražili ovo? Ignoriraj." + IP/lokacija requestor-a.
- HTTPS only (HTTP magic link = token leak preko mreže).
- Same-browser requirement opcionalno (sec hint cookie set pri request-u, provjeri pri klick-u).
Passkeys — implementacija
WordPress
Plugin: WP 2FA (Melapress) ima WebAuthn/passkey support. Alternativa: Two-Factor plugin s passkey add-on.
- Instaliraj plugin.
- Korisnik u profilu klika "Add Passkey".
- Browser pita za biometric (Face ID, Touch ID, ili insert YubiKey).
- Passkey kreiran, spremljen na server + uređaj.
- Sljedeći login: klik "Login with Passkey", biometric, ulaz.
Laravel
Paket: laragear/webauthn.
composer require laragear/webauthn
php artisan webauthn:install
php artisan migrate
Frontend treba JS za WebAuthn ceremoniju (registration + authentication). Paket dolazi s Blade komponentama i Inertia adapterima.
Hybrid pristup — najbolji UX
Nemoj brisat lozinke odmah. Ponudi sve tri:
- Email + password (legacy, za korisnike koji nisu prešli).
- Magic link (default za nove korisnike, jednostavnije).
- Passkey (preporučljivo, prikaži "Add Passkey for faster login" nakon prvog login-a).
S vremenom (6-12 mjeseci), većina korisnika prijeđe na passkey ili magic link.
Recovery scenarios
Magic link — "izgubio sam email pristup"
Treba secondary recovery (telefon, recovery email). Bez toga, korisnik je locked out.
Passkey — "izgubio sam uređaj"
- iCloud Keychain / Google Password Manager sync = passkey je na drugom uređaju automatski.
- Ako ne koristi sync, treba imat backup passkey (drugi uređaj registriran).
- Bez backupa: admin reset kroz support → registracija novog passkey.
Najbolji setup: zahtijevaj 2+ passkeys ili 1 passkey + magic link backup.
Security comparison
| Metoda | Phishing-proof | Brute-force-proof | UX score |
|---|---|---|---|
| Lozinka | ne | ovisi o snazi | 3/10 |
| Lozinka + TOTP 2FA | ne | da | 5/10 |
| Magic link | donekle | da | 7/10 |
| Passkey | DA | da | 9/10 |
Browser i OS support za passkeys
- Chrome 108+ (sve OS-evi).
- Safari 16+ (macOS Ventura+, iOS 16+).
- Firefox 122+ (limited).
- Edge 108+.
- Windows 11 — Windows Hello as authenticator.
- Android 9+, iOS 16+ — biometric authenticator.
Koverage ~95% modern users. Fallback na lozinku/magic link za stariji browsers.
Conversion impact
Real-world data od Auth0, Stytch, Clerk:
- Magic link login: 30-50% bolji success rate od password.
- Passkey: 50-70% bolji.
- Password reset volume pada za 80-90% nakon prelaska na passkey.
- Support tiketi za login pada za 60-80%.
SaaS providers (alternative custom implementaciji)
- Stytch — passwordless API, magic links + passkeys + SMS OTP. Free do 25 MAU, Production od 199 USD/mj.
- Clerk — full auth platform, passkey-first. Free do 10k MAU.
- Auth0 — enterprise auth, passkey support, od 240 USD/mj za production.
- Magic.link — magic links specijalist + Web3 integration.
- WorkOS — enterprise SSO + passkey.
Cost calculation — custom vs SaaS
Custom (Laravel + laragear/webauthn): 10-20h dev work jednokratno = ~1000-2000 EUR. Bez running cost-a.
SaaS (Clerk): 0-500 USD/mj ovisno o korisnicima. Nula dev time.
Razlika: custom je jeftiniji long-term ali treba interno održavat. SaaS je faster-to-market.
WMD i passwordless setup
Za WP klijente postavljamo magic links plugin + email deliverability (Postmark integration). Za Laravel klijente integriramo Fortify + WebAuthn s vlastitim setup-om. Email template branding, recovery flow, audit log uključen u Pro Maintenance Plan. Za enterprise klijente konfiguriramo Clerk ili Stytch ako preferiraju SaaS. Migration plan: hybrid pristup s gradual rollout-om, bez force-anja postojećih korisnika.
FAQ
Magic link ili passkey? Passkey ako moguće (bolji UX + sigurnost). Magic link kao fallback za korisnike bez modern uređaja.
Mogu li passkey radit u Croatia browser-u? Da, sve modern browseri (Chrome, Safari, Edge) podržavaju.
Passkey i 2FA — treba li oba? Passkey je već 2-factor (nešto što imaš — uređaj + nešto što jesi — biometric). Dodatni TOTP suvišan.
GDPR — koliko biometric data se sprema? Nikako na serveru. Biometric je samo na uređaju, server dobije samo cryptographic public key (ne PII).
Treba li mi SSL? Da, obavezno. WebAuthn radi samo preko HTTPS.
Magic link expira prerano za nekoga tko sporo otvara email — što sad? Standardno 15 min. Možeš podić na 30-60 min za enterprise UX (uz veći security risk).
Razmišljaš o passwordless auth-u? WMD postavlja magic links i passkey support za WP, Laravel i custom apps. Javi se preko kontakt forme.