Passkey ve WebAuthn: Şifresiz Kimlik Doğrulama Rehberi
Parola tabanlı kimlik doğrulama, internetin en eski ama en kırılgan alışkanlıklarından biri. Kullanıcılar zayıf parola seçiyor, aynı şifreyi farklı platformlarda tekrar kullanıyor, phishing sayfaları kimlik bilgilerini topluyor ve MFA bile her zaman yeterli olmuyor. Passkey yaklaşımı bu döngüyü kırmak için geliştirildi: kullanıcı bir "sır" hatırlamaz, cihaz kriptografik anahtar çifti üretir ve sunucuya yalnızca public key kaydedilir.
Passkey teknik olarak WebAuthn standardının modern kullanıcı deneyimiyle paketlenmiş halidir. Apple, Google ve Microsoft ekosistemlerinin tamamı desteklediği için artık sadece "gelecek teknoloji" değil, bugün üretimde kullanılabilir bir yöntemdir.
Temel Mantık
Kayıt anında cihazda bir anahtar çifti oluşur:
- Private key: Cihazı terk etmez.
- Public key: Sunucuya kaydedilir.
Girişte sunucu bir challenge üretir, cihaz private key ile challenge'ı imzalar, sunucu public key ile doğrular.
KAYIT
User -> Browser -> Authenticator (TPM/Secure Enclave)
-> key pair üret
-> public key -> Server DB
GİRİŞ
Server -> challenge -> Browser -> Authenticator
Authenticator -> signed challenge -> Server
Server -> verify(public key) -> Login Success
Bu modelde sunucuda çalınabilecek parola hash'i olmadığı için veri sızıntılarının etkisi ciddi şekilde azalır.
Backend Akışı Nasıl Tasarlanır?
İki endpoint seti yeterlidir:
-
Begin Registration
- Kullanıcı kimliği alınır.
challenge,rp,user,pubKeyCredParamsalanları üretilir.- Challenge kısa süreli olarak saklanır (Redis ideal).
-
Finish Registration
- Tarayıcıdan dönen attestation doğrulanır.
- Public key, credential id, signCount kaydedilir.
-
Begin Authentication
- Kullanıcının credential listesi bulunur.
- Yeni challenge üretilir.
-
Finish Authentication
- Assertion doğrulanır.
- signCount anti-replay kontrolü yapılır.
- Session/JWT üretilir.
Güvenlik Kazanımları
Passkey'i güçlü yapan tek şey "şifresiz" olması değil; phishing'e karşı doğrudan dirençli olmasıdır. Çünkü WebAuthn imzası origin'e bağlıdır. Kullanıcı sahte bir domaine giderse imza geçerli üretilemez. Yani saldırganın parolayı "ikna ile" alma yolu kapanır.
Ek avantajlar:
- Brute-force riski azalır.
- Credential stuffing etkisizleşir.
- SMS OTP bağımlılığı düşer.
- Kullanıcı deneyimi hızlanır (Face ID / Touch ID ile giriş).
Uygulamada Kritik Detaylar
1) Challenge Yönetimi
Challenge tek kullanımlık ve kısa ömürlü olmalı (60-180 saniye). Başarıyla kullanıldığında hemen silinmelidir.
2) Origin ve RP ID Doğrulaması
Yanlış domain yapılandırması en sık görülen üretim hatasıdır. rpId ve origin değerleri ortam bazında net ayrılmalıdır (app.example.com, staging.example.com gibi).
3) Cihazlar Arası Senkronizasyon
Platform passkey'leri (iCloud Keychain, Google Password Manager) senkronize olabilir. Bu iyi bir UX sağlar ama hesap kurtarma politikası yine de tasarlanmalıdır.
4) Fallback Stratejisi
İlk günden yalnızca passkey'e geçmek yerine aşamalı yaklaşım güvenlidir:
Parola + MFA (mevcut)
+
Passkey (opsiyonel)
->
Passkey first (önerilen)
->
Passkey only (olgunlaşınca)
Ölçülmesi Gereken Metrikler
- Kayıt dönüşüm oranı (registration completion)
- Giriş başarı oranı
- Login süresi (median ve p95)
- Fallback kullanım oranı
- Cihaz/platform dağılımı
Bu metrikler, sadece teknik doğrulama değil ürün kalitesi için de gereklidir. Örneğin iOS'ta yüksek, Android'de düşük başarı görüyorsan UX akışında platforma özgü bir sorun olabilir.
Sonuç
Passkey, kimlik doğrulamayı hem daha güvenli hem daha akıcı hale getiren nadir teknolojilerden biri. En büyük değerini iki alanda üretir: phishing riskini sert biçimde düşürmesi ve kullanıcıyı parola yükünden kurtarması. Backend tarafında doğru challenge yönetimi, origin doğrulaması ve fallback planı ile kurgulandığında, passkey'e geçiş projeleri kısa sürede somut güvenlik kazanımı üretir. Özellikle B2C uygulamalarda login friksiyonunu azaltırken hesap ele geçirme vakalarını düşürmek için artık "opsiyonel yenilik" değil, yol haritasında öncelikli yatırım olarak değerlendirilmelidir.
İlgili Yazılar
Go ile JWT Authentication: Access Token, Refresh Token ve Güvenli Saklama
JWT üretimi ve doğrulaması Go'da; kısa ömürlü access token, refresh token rotasyonu, HttpOnly cookie ve yaygın hatalar.
Feature Flag Mimarisi: OpenFeature ile Güvenli Yayınlama
Feature flag yaklaşımıyla riskli release'leri küçük adımlara bölmeyi, OpenFeature ile sağlayıcı bağımsız mimari kurmayı ve production'da kontrollü rollout yapmayı detaylıca ele alıyoruz.
Node.js ile File Streaming: Büyük Dosyalar, Bellek ve Performans
createReadStream, pipeline ve backpressure; tampon yerine akış kullanmak; HTTP, sıkıştırma ve hata yönetimiyle üretim kalıpları.