Originally published at hafiz.dev
Son dönemde Google, GitHub ya da Amazon’a giriş yaptığınızda farklı bir deneyimle karşılaşmış olabilirsiniz. Parolanızı girmek yerine, tarayıcınız sizden parmak izinizi, Yüz Tanıma (Face ID) ya da bir PIN kullanmanızı istemiş olabilir. İşte buna passkey denir.
2025 yılı boyunca passkey’lerin benimsenmesinin hızlandığını gözlemliyorum ve elde edilen veriler göz ardı edilemeyecek kadar dikkat çekici. Microsoft, Mayıs 2025’te yeni hesaplar için passkey’leri varsayılan hale getirdi. Google, şu an 800 milyondan fazla hesabın passkey kullandığını bildiriyor. Amazon ise, sunduğu passkey hizmetinin ilk yılında 175 milyon kullanıcının passkey oluşturduğunu belirtmekte. FIDO Alliance, bir milyardan fazla insanın en az bir passkey’i aktif hale getirdiğini tahmin ediyor.
Laravel uygulamaları geliştirenler için bu değişim önem taşıyor. Kullanıcılar, büyük platformlarda parolasız giriş yapmaya alışıyor ve geliştirdiğimiz SaaS ürünlerinde de aynı deneyimi beklemeye başlayacaklar. Kendi projelerime passkey desteği eklemek için yaptıklarımı paylaşmak istiyorum.
Passkey Nedir?
Passkey Nedir?
Passkey’ler, parolaların yerini alan kriptografik anahtar çiftleri kullanır. Bir passkey kaydettirdiğinizde, cihazınız iki anahtar üretir: birincisi, cihazınızda (veya iCloud Keychain, Google Password Manager ya da 1Password üzerinden senkronize edilir) kalan özel anahtar, ikincisi ise sunucuda saklanan genel anahtardır.
Giriş yaptığınızda, sunucu bir görev gönderir. Cihazınız bu görevi özel anahtarla imzalar ve sunucu imzayı genel anahtar ile doğrular. Gerçek kimlik bilgilerinizi asla cihazınızdan veya ağ üzerinden göndermezsiniz.
Bu yaklaşım, geleneksel parolaları rahatsız eden birçok sorunu çözmektedir:
Phishing’e karşı direnç. Passkey’ler belirli alan adlarına bağlanır. Eğer sizi sahte bir bankacılık sitesine yönlendirirlerse, passkey’iniz orada çalışmayacaktır çünkü alan adı uyuşmaz. Kriptografik bağlama, sahte giriş sayfaları üzerinden kimlik bilgisi çalmayı neredeyse imkansız hale getirir.
Paylaşılan gizli bilgiler yok. Parolalar ile, hem siz hem de sunucu bu gizli bilgiyi bilir. Veritabanı ihlalleri parola hash’lerini açığa çıkarabilir. Passkey’lerde, sunucu yalnızca genel anahtarları saklar. Saldırganlar veritabanınızı çalsa bile, bu genel anahtarları kullanarak kimlik doğrulamaya erişemezler.
Daha iyi kullanıcı deneyimi. FIDO Alliance verileri, passkey ile girişlerin %93 başarı oranı sağladığını, parola tabanlı yöntemlerin ise yalnızca %63 başarı oranına sahip olduğunu ortaya koyuyor. Ortalama giriş süresi ise SMS doğrulaması ile 30 saniyenin üzerindeyken, passkey ile 8 saniyeye kadar düşüyor.
2026’ya Dikkat Edilmeli
2026’ya Dikkat Edilmeli
Yasal çerçeve hızla değişiyor. Birleşik Arap Emirlikleri, tüm finansal kuruluşların Mart 2026’ya kadar SMS ve e-posta OTP’lerini kaldırmasını zorunlu hale getirdi. Hindistan, Nisan 2026’da aynı adımı atacak. Filipinler ise Haziran 2026 için bir son tarih belirledi. ABD’de bile, NIST’in güncellenmiş kimlik doğrulama kılavuzları artık çok faktörlü kimlik doğrulama için phishing’e dayanıklı seçenekler gerektiriyor.
Regülasyonların ötesinde, iş açısından da oldukça faydalı. Passkey kullanan şirketler, %81 daha az girişle ilgili destek talepleri bildirdiklerini raporluyor. Artık şifre sıfırlama talepleri yok. Hesap kilitlenmeleri yok. Binlerce kullanıcıyla çalışan bir SaaS ürünü için bu, gerçek maliyet tasarrufları anlamına geliyor.
Tüketici farkındalığı 2022’den beri %39’dan %57’ye çıktı. iOS ve Android cihazlarının %95’ten fazlası passkey uyumlu. Altyapı mevcut. Standartlar olgun. Soru artık “passkey’leri uygulamak mı?” değil, “ne zaman uygulamak?”
Laravel Passkey Ekosistemi
Laravel Passkey Ekosistemi
Laravel’de passkey alanında iki ana paket öne çıkıyor:
spatie/laravel-passkeys, daha basit bir seçenek. Laravel 11+ ve PHP 8.2+ gerektiriyor, kutudan çıktığında Livewire bileşenleri ile birlikte geliyor ve Vue veya React kullanıyorsanız Inertia ile de çalışabiliyor. Spatie, bu paketi Mailcoach’da üretim ortamında kullanıyor, dolayısıyla sağlam bir şekilde test edilmiş durumda.
laragear/webauthn, API odaklı uygulamalar için daha fazla esneklik sunuyor. Laravel 11+ ile çalışıyor ve WebAuthn akışında daha ince kontroller sağlıyor, ancak daha fazla manuel kurulum gerektiriyor.
Bu kılavuzda, daha az boilerplate ile hızlı bir başlangıç için spatie/laravel-passkeys üzerinde duracağım.
spatie/laravel-passkeys ile Başlarken
spatie/laravel-passkeys ile Başlarken
Temel bir uygulama sürecini geçelim. Fresh bir Laravel 12 uygulamanızın Livewire yüklü olduğunu varsayıyorum.
Kurulum
Kurulum
Paketi ekleyerek başlayın:
composer require spatie/laravel-passkeysGöçleri yayınlayın ve çalıştırın:
php artisan vendor:publish --tag="passkeys-migrations"
php artisan migrateBu, her kaydedilen passkey için genel anahtarları ve meta verileri saklayan bir passkeys tablosu oluşturur.
Kullanıcı Modelinizi Hazırlama
Kullanıcı Modelinizi Hazırlama
Kullanıcı modelinize gerekli trait ve arayüzü ekleyin:
Ön Yüz Bağımlılıklarını Kurma
Ön Yüz Bağımlılıklarını Kurma
Paket, tarayıcı tarafında WebAuthn işlevlerini gerçekleştirmek için SimpleWebAuthn kullanır:
npm install @simplewebauthn/browser
npm run build
Passkey Kayıt Ekleme
Passkey Kayıt Ekleme
Kullanıcıların şifreleriyle giriş yaptıktan sonra passkey kaydetmeleri gerekir. Bunu, kontrol paneli veya profil sayfanıza Livewire bileşenini ekleyerek sağlayabilirsiniz:
<:register>Sadece bu kadar. Bileşen, tüm kayıt akışını yönetir: görevi oluşturma, kullanıcının kimlik doğrulayıcısını isteme ve ortaya çıkan genel anahtarı saklama.
Düğme metnini ve stilini özelleştirmek için görünüm dosyalarını yayınlayabilirsiniz:
php artisan vendor:publish --tag="passkeys-views"
Passkey Kimlik Doğrulama Ekleme
Passkey Kimlik Doğrulama Ekleme
Giriş sayfanıza, normal giriş formunuzun yanında kimlik doğrulama bileşenini ekleyin:
{{-- Normal giriş formu --}}
{{-- Passkey ile giriş seçeneği --}}
ya da
<:authenticate>
Kullanıcılar passkey butonuna tıkladıklarında, şifre yöneticileri (1Password, iCloud Keychain vb.) onlara bir passkey seçmeleri için bir iletişim bulunacaktır. Doğrulama başarılı olursa, kullanıcılar giriş yapmış olacak ve kontrol paneline yönlendirilecektir.
Konfigürasyon Seçenekleri
Konfigürasyon Seçenekleri
Davranışınızı özelleştirmek için yapılandırma dosyasını yayınlayın:
php artisan vendor:publish --tag="passkeys-config"config/passkeys.php dosyasındaki anahtar seçenekleri:
return [
// Başarılı passkey girişi sonrası yönlendirilecek yer
'redirect_to_after_login' => '/dashboard',
// Güvenilir taraf ayarları (genelde uygulamanızın alanı)
'relying_party' => [
'name' => config('app.name'),
'id' => parse_url(config('app.url'), PHP_URL_HOST),
],
// Gerekirse geçiş anahtarı ve kullanıcı modellerini özelleştirin
'models' => [
'passkey' => Spatie\LaravelPasskeys\Models\Passkey::class,
'authenticatable' => App\Models\User::class,
],
];
Inertia (Vue veya React) ile Çalışmak
Inertia (Vue veya React) ile Çalışmak
Livewire kullanmıyorsanız, paketi yine de kullanabilirsiniz. Spatie, sunucu tarafı mantığını yöneten işlem sınıfları sağlar. Öncelikle kendi ön yüz bileşenlerinizi oluşturmanız gerekecektir.
İşte kayıt için basit bir Vue 3 örneği:
{{ error }}
Komple uygulama detayları için Spatie belgelendirmesine göz atabilirsiniz.
Önemli Noktalar
Önemli Noktalar
Passkey'leri yayına alırken dikkate almanız gereken bu unsurları aklınızda bulundurun:
HTTPS zorunludur. WebAuthn, yalnızca güvenli bağlantılar üzerinden çalışır. Bu, üretim için sorun olmaz ama yerel geliştirme için HTTPS yapılandırmanızı yapmanız gerekir. Laravel Valet, bunu otomatik olarak valet secure ile hallederken, Sail kullanıyorsanız SSL sertifikalarını kurmanız gerekecek.
Herkes passkey uyumlu bir cihaza sahip değil. Mevcut cihazların %90'dan fazlası passkey'leri desteklese de, bazı kullanıcılar eski donanımda kalabilir. Her zaman parola kimlik doğrulamayı bir yedek olarak tutmalısınız. Passkey'ler, kimlik doğrulama seçeneklerinizin bir eklemesi olmalı, henüz bir değiştirme değil.
Hesap kurtarma üzerine düşünmek gerekir. Bir kullanıcı tüm cihazlarını kaybederse, nasıl erişim sağlanır? E-posta tabanlı kurtarma, yedek kodlar veya admin müdahalesi yaygın yaklaşımlardır. Paket, kurtarmayı varsayılan olarak yönetmez, bu akışı kendiniz oluşturmamız gerekecek.
Birden Çok Passkey Kullanıcı Başına. Kullanıcılar genellikle birden fazla cihazda passkey kaydetmek ister. Paket bunu varsayılan olarak destekler. Kullanıcıların kaydedilmiş passkey'lerini görüntülemeleri ve iptal etmeleri için bir UI eklemeyi düşünebilirsiniz.
Passkey'leri SaaS'ınıza Ne Zaman Eklemelisiniz?
Passkey'leri SaaS'ınıza Ne Zaman Eklemelisiniz?
Birkaç hafta içinde StudyLab'a passkey desteği eklemeyi planlıyorum. Platformda yüzlerce okul kullanıyor ve parola ile ilgili destek taleplerini azaltmak önemli bir zaman tasarrufu sağlayacaktır.
Şu durumlarda passkey'leri uygulamayı düşünün:
- Kullanıcılarınız sık sık giriş yapıyorsa (günlük aktif kullanıcılar en fazla faydayı sağlar)
- Güvenlik hassas bir sektördeyseniz (finans, sağlık, eğitim)
- Parola sıfırlardan kaynaklanan destek yükünü azaltmak istiyorsanız
- Yeni bir ürün geliştiriyorsanız ve passkey'leri en başından itibaren tasarlayabiliyorsanız
MVP'ler ve erken aşama ürünler için, geleneksel parola kimlik doğrulaması ve isteğe bağlı 2FA hala uygundur. Ancak ürününüz olgunlaştıkça ve kullanıcı tabanınız büyüdükçe, passkey'ler giderek daha cazip hale gelir.
Sırada Ne Var?
Sırada Ne Var?
Bu kılavuz temel bilgileri kapsıyor, ama keşfedilecek daha çok şey var:
- Koşullu UI, kullanıcının e-posta alanına odaklandığında tarayıcının passkey'leri otomatik olarak önermesini sağlar.
- Çapraz cihaz kimlik doğrulama, kullanıcıların bir QR kodunu tarayıp masaüstüne giriş yapmalarına izin verir.
- Passkey'leri yönetme, kaydedilen kimlik bilgilerini görüntüleme ve iptal etmek için bir kullanıcı arayüzü sağlar.
Bu süreci kendim deneyimledikten sonra gerçek bir üretim uygulamasında passkey uygulama konusundaki deneyimimi yazacağım. Şu an için öğrendiğim bilgileri paylaşmak istedim.
WebAuthn standartının altındaki detayları merak ediyorsanız, Spatie belgelendirmesi harika. Ayrıca, uygulama hali için derinlemesine bir bilgi sunan Laracasts kursuna göz atabilirsiniz.
Kaynak: Orijinal Makale
- Passkey Nedir?
- 2026’ya Dikkat Edilmeli
- Laravel Passkey Ekosistemi
- spatie/laravel-passkeys ile Başlarken
- Kurulum
- Kullanıcı Modelinizi Hazırlama
- Ön Yüz Bağımlılıklarını Kurma
- Passkey Kayıt Ekleme
- Passkey Kimlik Doğrulama Ekleme
- Konfigürasyon Seçenekleri
- Inertia (Vue veya React) ile Çalışmak
- Önemli Noktalar
- Passkey'leri SaaS'ınıza Ne Zaman Eklemelisiniz?
- Sırada Ne Var?


