Repository navigation
Releases: KEYDALTR/kAuth
Release list
kAuth v1.0.4 - Güvenlik + Code Review
kAuth v1.0.4 - Güvenlik Denetimi + Kapsamlı Code Review
Bu sürüm 35 sorun içeren kapsamlı bir güvenlik denetimi ve code review sonucudur.
🔴 Kritik Güvenlik Düzeltmeleri
- DataAccessException: DB hataları artık "kayıtlı değil" veya "yanlış şifre" gibi business fact'lere sessizce dönüştürülmüyor. MySQL hiccup'ında legitim kullanıcılar yanlışlıkla banlanmıyor.
- Brute force bypass race:
VerificationEntry.attemptsartıkAtomicInteger+ConcurrentHashMap.computeile atomik check-and-update. İki paralel/dogruladenemesi artık race etmiyor. - Unified password validation:
ChangePasswordCommand,PasswordResetCommand, admin/kauth sifredegistirartıkAuthService.validatePassword()helper'ını kullanıyor. Weak password listesini (90+ entry) bypass edemiyor. - SQLite thread safety: Tüm metodlar
synchronized(lock)içinde, WAL mode + busy_timeout aktif. - getIp null bucket: Null address'li oyuncular artık
"unknown"bucket'ına eklenmiyor (cross-user session/ban collision önlendi).
🟠 Performans & Concurrency
- setAuthenticated async-safe: Bukkit API çağrıları (sendPluginMessage, updateLastLogin) async thread'den çağrıldığında main thread'e trampoline ediliyor.
- Admin komutları async:
LogoutCommand,VerifyCommand,ChangePasswordCommand,KAuthCommand(kayitsil/sifredegistir/cikis) DB yazımları async. - Settings atomic snapshot:
AtomicReference<Snapshot>pattern, cross-field invariant garantili./kauth reloadartık atomik. - ipAttempts decay: 5 dakikada bir tamamen silinmek yerine TTL bazlı decay.
- ResultSet try-with-resources: Tüm DB query'lerinde explicit close.
🟡 Hata Yönetimi & UX
- AsyncChatEvent: Deprecated
AsyncPlayerChatEvent→ Paper nativeAsyncChatEvent(1.21.11'de chat engeli aslında çalışmıyordu). - Dialog exception fallback:
DialogProviderexception'ları log'luyor ve chat fallback'e düşüyor (stuck player önlendi). - Command blocked feedback: Giriş yapmamış oyuncular artık "giriş yapmadan kullanamazsınız" mesajı görüyor.
- EmailService future tracking:
.whenCompletecallback ile SMTP fail → user'a "kod gönderilemedi" mesajı, pending code iptal. - LOGOUT → beginAuthFlow: Velocity remote logout sonrası oyuncu stuck kalmıyor, tam auth flow yeniden başlıyor.
- onDisable teardown: Tüm session task'ları kapatılıyor, stale bossbar yok.
- LoginCommand logAction %attempts%: Unlimited attempts case'i düzgün handle ediliyor.
Ayrıca
auth.max-login-attempts=0uyarısı (güvenlik riski)email.verification.code-length4-9 arası clamp (int overflow önlendi)- Velocity config read fail → severe log + secret=empty (güvenli fallback)
sessionsByNamesecondary index → offline user için declearSessionçalışıyorAuthMessagecompact constructor validation (null/empty reject)- Task self-cancel handler throw ederse temizlenir
- Duplicate root
src/dizini silindi
Test Sonuçları
- 46/46 unit test geçti (PasswordUtil, AuthMessage, SQLiteDatabase)
- 15/15 entegrasyon testi (Paper 1.21.11 + mineflayer bot)
Kurulum
| Dosya | Nereye |
|---|---|
kAuth-1.0.4.jar |
Paper sunucusu plugins/ |
kAuth-Velocity-1.0.4.jar |
Velocity proxy plugins/ |
Velocity secret'ı ilk başlatmada otomatik oluşur, konsola basılır. Paper config.yml'de velocity.secret olarak yapıştırın.
kAuth v1.0.3 - Bossbar, Countdown, Optimize
kAuth v1.0.3
Yeni Özellikler
Görsel Bekleme Ekranı
- Bossbar countdown (
effects.waiting.bossbar) - kalan süre progress bar ile - Title/subtitle countdown (
effects.waiting.title-countdown) - dialog açıkken de görünür, her saniye güncellenir - Arka plan ses döngüsü (
effects.waiting.sound-loop) - oyuncu sıkılmasın diye - Actionbar/bossbar/title mesajlarında
%time%placeholder (kalan saniye)
Yapılandırma
- Şifre tekrarı aç/kapa (
auth.require-password-confirmation)true→/kayit <şifre> <tekrar>(varsayılan)false→/kayit <şifre>(tek şifre, dialog'da ikinci alan gizlenir)
- Max login attempts varsayılan 5 → 3 (configurable)
- IP temp ban prelogin kontrolü (
auth.ip-ban-on-prelogin)- Bloklanan IP
AsyncPlayerPreLoginEvent'te kick edilir - Sunucu kaynağı harcamadan engellenir
- Kick mesajında kalan süre gösterilir
- Bloklanan IP
Düzeltmeler
/cikissonrası countdown/bossbar/title task'ları yeniden başlamıyordu →beginAuthFlowtam akış yeniden başlatır- Auth başarılı olunca title ekrandan temizlenmiyordu →
clearTitle()+ boş actionbar - Manuel logout sonrası session cache temizlenmiyor, reconnect'te auto-login oluyordu → session temizliği eklendi
- Admin
kayitsil/sifredegistirsonrası hedef oyuncu için tam auth flow yeniden başlatılıyor
Optimizasyonlar
- Global Settings cache (
config/Settings.java) - 20+ hot-path config değerivolatilefield'larda,/kauth reload'da yenilenir - PlayerProtectionListener tamamen Settings kullanıyor, her event'te config okuma yok
- Allowed commands O(1) Set lookup (önceden List traverse)
- PlayerMoveEvent
event.hasChangedBlock()shortcut +ignoreCancelled=true - Session state tek
Map<UUID, SessionEntry>(önceden 2 ayrı map) - JoinListener unified update task - actionbar + bossbar + title countdown tek timer'a birleşti (6 task → 3 task)
- Per-join AuthSession config cache - her tick config lookup yok
- DB + PBKDF2 async -
LoginCommand,RegisterCommand,ChangePasswordCommand, dialog callback'leri async thread'de
Performans Sonuçları (Spark Profiler)
60 saniye profil, 3 bot sürekli login/logout/wrong-password yük altında:
- Main thread kAuth CPU: %1.7
- Server genel: %94 idle
- DB toplam: 24ms / 60s (query başına ~0.4ms)
- PBKDF2 main thread'de sıfır (async çalışıyor)
Test Sonuçları
- 38/38 unit test (PasswordUtil, AuthMessage, SQLiteDatabase)
- 15/15 entegrasyon testi (Paper 1.21.11 sunucusunda mineflayer bot)
Kurulum
| Dosya | Nereye |
|---|---|
kAuth-1.0.3.jar |
Paper sunucusu plugins/ |
kAuth-Velocity-1.0.3.jar |
Velocity proxy plugins/ |
Config otomatik oluşturulur. Velocity plugin kullanıyorsan plugins/kauth/config.properties'te ignored-servers=limbo,filter ayarını yapabilirsin (LimboFilter uyumluluğu).
kAuth v1.0.2 - LimboFilter Uyumluluğu
kAuth v1.0.2 - LimboFilter Uyumluluğu
Düzeltmeler
LimboFilter / Limbo Sunucu Desteği
- Velocity plugin artık limbo/filtre sunucularını tanır ve bu sunuculara auth mesajı göndermez
plugins/kauth/config.propertiesdosyası ile yoksayılacak sunucular ayarlanabilir:ignored-servers=limbo,filterServerConnectedEvent→ limbo sunucusu ise LOGIN gönderilmez- Broadcast mesajları limbo sunucularını atlar
- Sunucu değişimi gecikmesi 500ms → 1s (LimboFilter sonrası stabilite)
- Gecikme sonrası oyuncunun hala hedef sunucuda olduğu doğrulanır
Shadow JAR Düzeltmesi
- Duplicate META-INF dosyaları (LICENSE.md, NOTICE.md) sorunu giderildi
- Paper 1.21.11 plugin remap hatası düzeltildi
Kurulum
| Dosya | Nereye |
|---|---|
kAuth-1.0.2.jar |
Paper plugins/ |
kAuth-Velocity-1.0.2.jar |
Velocity plugins/ |
LimboFilter Kullanıcıları İçin
kAuth-Velocity-1.0.2.jardosyasını Velocity proxy'ye yükleyin- Sunucuyu başlatın →
plugins/kauth/config.propertiesotomatik oluşur ignored-serverssatırına limbo sunucunuzun adını yazın- Velocity'yi yeniden başlatın
Test Sonuçları
- 38 unit test ✓
- 15 entegrasyon testi (Paper 1.21.11 + mineflayer bot) ✓
kAuth v1.0.1
kAuth v1.0.1 - Velocity + E-posta/SMTP Desteği
Yeni Özellikler
Velocity Proxy Senkronizasyonu
- Sunucular arası auth durumu paylaşımı (plugin messaging
kauth:sync) - Bir sunucuda giriş yapan oyuncu, diğer sunuculara geçtiğinde tekrar şifre sormaz
kAuth-Velocity-1.0.1.jar→ Velocity proxy'ye yüklenir- Disconnect/server-switch olaylarında otomatik LOGIN/LOGOUT broadcast
MySQL/MariaDB Desteği
- Config'den seçilebilir:
database.type: sqlite | mysql - HikariCP connection pool ile yüksek performans
- Mevcut SQLite veritabanları geriye uyumlu çalışmaya devam eder
E-posta Doğrulama (Kayıt)
- SMTP ile doğrulama kodu gönderimi
- Dialog GUI'de doğrulama kodu girişi
- Chat fallback:
/dogrula <kod>komutu - Configurable: kod uzunluğu, geçerlilik süresi, SMTP ayarları
Şifre Sıfırlama
/sifresifirla <kullanıcı>→ e-posta adresine sıfırlama kodu gönderir/sifresifirla onayla <kod> <yenişifre>→ kodu doğrulayıp şifreyi değiştirir- Doğrulanmış e-posta adresi zorunlu
Kurulum
| Dosya | Nereye Yüklenir |
|---|---|
kAuth-1.0.1.jar |
Paper sunucusu plugins/ dizini |
kAuth-Velocity-1.0.1.jar |
Velocity proxy plugins/ dizini |
Yapılandırma
config.yml içinde yeni bölümler:
database:- SQLite/MySQL seçimivelocity:- Velocity sync aktif/pasifemail:- SMTP ayarları, doğrulama kodu ayarları
Test Sonuçları
- 38 unit test: PasswordUtil (10), AuthMessage (6), SQLiteDatabase (22)
- Tümü başarılı ✓
kAuth v1.0.0
kAuth v1.0.0
First public release of kAuth - Modern authentication plugin for Minecraft servers.
Features
- Dialog GUI (1.21.5+ clients) + Chat fallback (older clients)
- PBKDF2-SHA256 encryption (65,536 iterations)
- IP brute-force protection & account limits
- Weak password blocking
- Session management & rule agreement system
- ViaVersion/ViaBackwards support
- Full effect system (title, sound, particles)
Requirements
- Paper 1.20+ (1.21.5+ recommended)
- Java 21+
Screenshots
Developed by KEYDAL Projects


