Şifreler uzun süredir güvenliğin en zayıf halkası. Aynı şifrenin birden fazla sitede kullanılması, phishing sayfalarına kanılması ve veri sızıntıları derken kullanıcı hesaplarını korumak giderek zorlaşıyor. Passkey teknolojisi bu zinciri tamamen değiştiriyor: kullanıcı şifre yazmıyor, cihazındaki biyometrik doğrulama veya güvenlik anahtarıyla giriş yapıyor.
Flarum Passkeys, WebAuthn/FIDO2 standardını Flarum 2.0’a taşıyan bir eklenti. Kullanıcılar hesap ayarlarından passkey ekleyebiliyor, mevcut passkey’lerini listeleyip kaldırabiliyor ve giriş ekranından kullanıcı adı yazmadan passkey ile oturum açabiliyor.
Passkey tam olarak nedir?
Passkey, cihazınızda oluşturulan bir kriptografik anahtar çiftidir. Özel anahtar cihazdan dışarı çıkmaz; sunucuya yalnızca açık anahtar, kimlik bilgisi kimliği ve imza sayacı kaydedilir. Giriş sırasında cihaz, sunucunun gönderdiği tek kullanımlık doğrulama isteğini özel anahtarla imzalar. Sunucu da açık anahtarla imzayı kontrol eder.
Bu modelin en önemli avantajı, klasik şifrelerdeki “çalınabilir gizli bilgi” sorununu ortadan kaldırması. Biyometrik veri hiçbir zaman sunucuya gönderilmiyor; Touch ID, Windows Hello veya güvenlik anahtarı yalnızca yerel doğrulama için kullanılıyor.

Öne çıkan özellikler
- Hesap ayarlarından passkey kaydı ve mevcut passkey’leri listeleme/silme.
- Kayıt modalından passkey ile yeni hesap oluşturma; şifre alanı boş bırakılırsa hesabın kurtarılabilmesi için rastgele bir şifre saklanıyor.
- Kullanıcı adı gerektirmeyen (discoverable credential) passkey girişi.
- Yönetici tarafında özelliği açma/kapatma, passkey kaydına izin verme ve Relying Party bilgilerini ayarlama.
- İngilizce ve Türkçe dil desteği.
- Flarum oturumları ve CSRF middleware’i ile korunan uç noktalar.
- Beş dakika geçerli, tek kullanımlık challenge saklama.
- Kullanıcı doğrulaması ve resident key zorunluluğu.
- Biyometrik verinin sunucuya hiçbir şekilde gönderilmemesi.
Nasıl çalışıyor?
Kayıt sırasında sunucu bir WebAuthn oluşturma challenge’ı hazırlayıp oturumda saklıyor. Tarayıcı, cihazdaki authenticator’dan (Touch ID, Windows Hello, güvenlik anahtarı vb.) yeni bir kimlik bilgisi oluşturmasını istiyor. Dönen attestation yanıtı doğrulandıktan sonra Flarum hesabı oluşturuluyor veya mevcut hesaba bağlanıyor; açık anahtar ve kimlik bilgisi kimliği saklanıyor.
Giriş sırasında sunucu discoverable credential isteği üretiyor. Tarayıcı kullanıcıya kayıtlı passkey’lerden birini seçtiriyor. Sunucu kimlik bilgisini bulup imzayı ve sayacı doğruladıktan sonra Flarum oturumunu açıyor. Başarılı girişte oturum SessionAuthenticator üzerinden yeniden oluşturuluyor.
Challenge’lar oturumda tutuluyor, beş dakika sonra geçersiz oluyor ve tek bir doğrulama denemesinden sonra siliniyor. Attestation conveyance değeri none olarak ayarlı; yani sertifika zinciri istenmiyor veya saklanmıyor.
Kurulum
Eklenti Flarum 2.0 ve üzeri, PHP 8.3 ve üzeri sürümlerle çalışıyor. Üretim ortamında HTTPS zorunlu; geliştirme için localhost kabul ediliyor. WebAuthn tarayıcı tarafında güvenli kaynak (secure context) gerektirdiği için düz HTTP üzerinden IP adresiyle çalışmaz.
composer require cengizkemec/passkeys
php flarum cache:clear
Ardından Yönetim → Eklentiler bölümünden Passkeys’i etkinleştirin. Derlenmiş JavaScript dosyaları paket içinde geldiği için ayrıca frontend build yapmanız gerekmiyor.
Üretimde Relying Party ayarlarını açıkça belirtmek önemli:
- RP ID:
example.comgibi alan adı. - Origin:
https://example.comgibi şema dahil tam kaynak.
Forum bir alt alan adında çalışıyorsa RP ID olarak üst alan adını kullanabilirsiniz; ancak Origin her zaman forumun tam adresiyle birebir eşleşmeli. Örneğin forum forum.example.com ise Origin https://forum.example.com olmalı.
Güvenlik notları
Passkey’lerin en güçlü yanı phishing’e karşı dirençli olması: kimlik bilgisi yalnızca kayıtlı olduğu alan adı için kullanılabiliyor. Yine de sunucu tarafında birkaç noktaya dikkat ediliyor:
- Her kimlik bilgisi işlemi oturum açmış kullanıcıya bağlı; başka kullanıcının passkey’ine erişilemiyor.
- Challenge’lar tek kullanımlık ve süreli.
- Başarılı girişte oturum yeniden oluşturuluyor.
- Kimlik bilgisi silme işlemleri kullanıcı kapsamında doğrulanıyor.
- Attestation sertifika zinciri istenmiyor, böylece gereksiz veri toplanmıyor.
Passkey desteği tarayıcıya ve cihaza bağlı. Eski tarayıcılarda veya WebAuthn desteklemeyen cihazlarda buton görünmeyebilir; bu durumda kullanıcılar klasik şifreyle giriş yapmaya devam eder.
Sonuç
Flarum Passkeys, forumunuza modern ve kullanıcı dostu bir güvenlik katmanı eklemek isteyenler için temiz bir çözüm. Kullanıcılar için giriş sürecini kısaltırken sunucuda parola yerine yalnızca açık anahtar tutulmasını sağlıyor.
- GitHub: github.com/cengizkemec/flarum-passkeys
- Packagist: packagist.org/packages/cengizkemec/passkeys
