ADR-006: İki Faktörlü Kimlik Doğrulama Uygulaması
Önerilen
Bağlam
Section titled “Bağlam”XOOPS user kimlik doğrulaması için gelişmiş güvenliğe ihtiyaç duyar. İki faktörlü kimlik doğrulama (2FA), parolaların ötesinde ek bir güvenlik katmanı sağlayarak, parolalar ele geçirilse bile hesapları korur.
Önemli hususlar:
- Mevcut kimlik doğrulamayla geriye dönük uyumluluk
- Birden fazla 2FA yöntemi desteği
- Kurulum ve giriş sırasında user deneyimi
- Kayıp cihazlar için kurtarma mekanizmaları
- Mevcut izin sistemiyle entegrasyon
Yedek kod desteğiyle birincil 2FA yöntemi olarak TOTP (Zamana Dayalı Tek Kullanımlık Şifre) uygulayacağız.
Uygulama Yaklaşımı
Section titled “Uygulama Yaklaşımı”sequenceDiagram participant U as User participant X as XOOPS participant T as TOTP Library participant D as Database
U->>X: Login with password X->>D: Validate password D-->>X: Password valid X->>D: Check 2FA enabled D-->>X: 2FA required X->>U: Request 2FA code U->>X: Submit TOTP code X->>T: Validate code T-->>X: Code valid X->>U: Login successfuldatabase Şeması
Section titled “database Şeması”CREATE TABLE `{PREFIX}_users_2fa` ( `user_id` INT(11) NOT NULL, `secret` VARCHAR(32) NOT NULL, `enabled` TINYINT(1) DEFAULT 0, `backup_codes` TEXT, `last_used` INT(11), `created` INT(11) NOT NULL, PRIMARY KEY (`user_id`), FOREIGN KEY (`user_id`) REFERENCES `{PREFIX}_users`(`uid`));Servis Arayüzü
Section titled “Servis Arayüzü”interface TwoFactorAuthInterface{ public function enable(int $userId): TwoFactorSetup; public function disable(int $userId): void; public function verify(int $userId, string $code): bool; public function generateBackupCodes(int $userId): array; public function isEnabled(int $userId): bool;}Ara Yazılım Entegrasyonu
Section titled “Ara Yazılım Entegrasyonu”class TwoFactorMiddleware implements MiddlewareInterface{ public function process( ServerRequestInterface $request, RequestHandlerInterface $handler ): ResponseInterface { $session = $request->getAttribute('session');
if ($session->has('pending_2fa_user_id')) { // User needs to complete 2FA if ($this->isVerificationRequest($request)) { return $handler->handle($request); } return new RedirectResponse('/2fa/verify'); }
return $handler->handle($request); }}Sonuçlar
Section titled “Sonuçlar”Olumlu
Section titled “Olumlu”- Önemli ölçüde geliştirilmiş hesap güvenliği
- Endüstri standardı TOTP uyumluluğu (Google Authenticator, Authy, vb.)
- Yedek kodlar hesabın kilitlenmesini önler
- user başına isteğe bağlı - benimsenmeyi zorlamaz
- PSR-15 ara katman yazılımı temiz entegrasyona olanak tanır
Negatif
Section titled “Negatif”- Ek oturum açma adımı user deneyimini etkiler
- users kimlik doğrulama uygulamalarını yönetmelidir
- Kayıp cihazlar kurtarma işlemi gerektirir
- Ek database depolama alanı ve sorgular
- Kriptografik kütüphane bağımlılığı gerektirir
Geçiş Yolu
Section titled “Geçiş Yolu”- 2FA verileri için database tablosu ekleyin
- TOTP hizmetini kütüphane bağımlılığıyla uygulayın
- Kimlik doğrulama zincirine ara yazılım ekleyin
- Kurulum ve doğrulama user arayüzü oluşturun
- Belirli gruplar için 2FA’yı zorunlu kılan yönetici seçeneği
Alternatifler Değerlendirildi
Section titled “Alternatifler Değerlendirildi”SMS tabanlı OTP
Section titled “SMS tabanlı OTP”Şu nedenlerle reddedildi:
- SIM takas güvenlik açıkları
- SMS ağ geçidinin maliyeti
- Telefon numarası doğrulama karmaşıklığı
- Gizlilik endişeleri
Donanım Güvenlik Anahtarları (WebAuthn)
Section titled “Donanım Güvenlik Anahtarları (WebAuthn)”Gelecek için ertelendi ADR:
- Daha karmaşık uygulama
- Tarihsel olarak sınırlı tarayıcı desteği
- Daha yüksek user maliyeti
- Daha sonra TOTP yanına eklenebilir
E-posta tabanlı OTP
Section titled “E-posta tabanlı OTP”Şu nedenlerle reddedildi:
- E-posta hesabının ele geçirilmesi amacı bozar
- Teslimat gecikmeleri user deneyimini etkiler
- Spam filtresi sorunları
Referanslar
Section titled “Referanslar”- RFC 6238 - TOTP
- Google Şifrematik Anahtar Formatı
- ../../02-Core-Concepts/Security/Security-Best-Practices - Güvenlik yönergeleri
- ../../02-Core-Concepts/Users-Permissions/Authentication - Kimlik doğrulama sistemi belgeleri