Coruh Auth

Coruh Auth

Sıfırdan Yazılmış, PHP Tabanlı Güvenli Kimlik Doğrulama Sistemi

Session • JWT • 2FA • Rate Limiting • RBAC (Rol/Permission) • Hepsi bir arada, sıfırdan.

Coruh Auth, hazır kütüphanelere sırtını dayamayan, her satırı düşünülmüş, anlaşılır ve saldırılara karşı dayanıklı bir kimlik doğrulama altyapısıdır. Sadece “çalışan” değil, “neden çalıştığını bildiğin” bir sistem.


🧠 Felsefe

“Güvenlik, körü körüne kullanılan araçlarla değil, doğru kurulmuş katmanlarla sağlanır.”

Coruh Auth’un temel prensibi: Her şey opsiyoneldir ama her şey sağlamdır. İhtiyacın kadarını al, ihtiyacın kadarını kullan. Ama kullandığın her parça, en ince detayına kadar düşünülmüştür.


🔐 Katmanlar ve Mantığı

1. Session Yönetimi (Klasik ama Sağlam)

Ne yapar?
Kullanıcı giriş yaptığında, sunucu tarafında bir oturum açar. Bu oturumun bir kimliği vardır ve bu kimlik kullanıcıya çerez olarak verilir.

Neden özel?
Coruh Auth, session verilerini şifreler ve oturuma parmak izi ekler (IP, tarayıcı bilgisi). Bir oturum çalınsa bile farklı bir cihazda çalışmaz.

Örnek:
Ahmet, ev bilgisayarından giriş yapar. Session’ı şifrelenir ve IP’si ile ilişkilendirilir. Hırsız bu session çerezi alıp kendi bilgisayarında kullanmaya çalıştığında, sistem “IP eşleşmiyor” diyerek reddeder.


2. JWT (Token Tabanlı Kimlik)

Ne yapar?
Kullanıcı giriş yapar, sunucu bir “token” üretir. Bu token içinde kullanıcının kimliği ve yetkileri vardır. Token imzalıdır, yani kimse içini değiştiremez.

Neden özel?
Coruh Auth’ta iki token vardır:

  • Access Token (kısa ömürlü, 15-30 dk)

  • Refresh Token (uzun ömürlü, 7 gün)

Örnek:
Ayşe, mobil uygulamaya giriş yapar. Access token alır (15 dk geçerli). 15 dakika sonra token dolar. Ama Refresh token sayesinde yeni bir Access token alır, Ayşe tekrar giriş yapmak zorunda kalmaz. Eğer Refresh token çalınırsa, sunucu hepsini geçersiz kılar.


3. 2FA (İki Faktörlü Doğrulama)

Ne yapar?
Kullanıcı şifresini girdikten sonra, bir de telefonundaki uygulamadan (Google Authenticator gibi) 6 haneli kodu ister.

Neden özel?
Şifre çalınsa bile, ikinci faktör olmadan giriş yapılamaz. Coruh Auth, TOTP (Time-based One Time Password) standardını kullanır. Her 30 saniyede bir değişen kodlar.

Örnek:
Mehmet’in şifresi bir veri sızıntısında ortaya çıktı. Hacker Mehmet’in hesabına girmek ister. Şifreyi girer, karşısında “2FA kodunu girin” yazısı. Kod olmadan giremez. Mehmet’in telefonu hacker’da olmadığı için hesap güvende.


4. Rate Limiting (İstek Sınırlama)

Ne yapar?
Aynı IP veya aynı kullanıcı, kısa sürede çok fazla istek yaparsa sistem onu geçici olarak engeller.

Neden özel?
Coruth Auth, hem IP bazlı hem de kullanıcı bazlı sınırlama yapar. Brute force saldırılarını (şifre deneme) ve DDoS’u engeller.

Örnek:
Bir hacker, “admin” şifresini bulmak için 1 saniyede 1000 farklı şifre dener. Coruth Auth, 5 başarısız denemeden sonra bu IP’yi 15 dakika bekletir. 5 deneme daha mı yaptı? 1 saat. Hacker yoluna devam edemez.


5. RBAC (Rol ve Permission Sistemi)

Ne yapar?
Kullanıcılara roller verirsin (admin, editör, izleyici). Her role belirli izinler tanımlarsın (kullanıcı silme, yazı düzenleme, rapor görme). Sistem, bir işlem yapılmadan önce “Bu kullanıcının bu izni var mı?” diye sorar.

Neden özel?
Esnektir. Roller ve izinler tamamen yapılandırılabilir. Kullanıcı birden fazla role sahip olabilir. İzinler birleşir.

Örnek:

  • Admin rolü: Kullanıcı_oluştur, Kullanıcı_sil, Yazı_düzenle, Rapor_gör (4 izin)

  • Editör rolü: Yazı_düzenle, Yorum_sil (2 izin)

  • İzleyici rolü: Sadece oku (0 izin, sadece giriş yapmış olmak yeterli)

Zeynep hem Editör hem de Rapor_Görüntüleyici rolüne sahip. Toplam izni: Yazı_düzenle + Yorum_sil + Rapor_gör. Admin değil ama yine de raporları görebilir.


🔄 Bütünleşik Çalışma Örneği

Bir kullanıcının sisteme giriş yapma süreci, tüm katmanların nasıl birlikte çalıştığını gösterir:

text
1. Kullanıcı giriş formunu doldurur (IP: 192.168.1.5)
2. Rate Limiter kontrol eder: Bu IP son 5 dakikada 3 kez başarısız deneme yapmış. 2 hakkı kaldı.
3. Şifre kontrolü yapılır (Argon2id hash ile doğrulanır)
4. Şifre doğru → 2FA kontrolüne geçilir
5. Kullanıcı 6 haneli kodu girer → Doğru
6. Session oluşturulur (veya JWT üretilir)
7. Kullanıcının rolleri çekilir (admin mi, editör mü?)
8. Giriş başarılı logu düşülür
9. Kullanıcı ana sayfaya yönlendirilir

Eğer herhangi bir adımda hata olursa, sistem o noktada durur ve giriş reddedilir. Hangi katmanda olduğu loglanır.


📊 Kimler İçin?

Kullanıcı Profili Neden İşine Yarar?
Kurumsal Uygulama Geliştiricisi API’lerini JWT ile korur, rollerle yetkilendirme yapar
Panel/Admin Sitesi Sahibi Session + 2FA ile güvenli yönetim paneli
Mobil Uygulama Arkası Refresh token ile kullanıcıyı sürekli giriş yapmaktan kurtarır
Startup CTO’su Hazır auth sistemi arar ama siyah kutu istemez, her şeyi bilmek ister
PHP Öğrenen Geliştirici “Auth sistemi nasıl yapılır?” sorusunun cevabını canlı görür

🎯 Coruh Auth’un Farkı

Özellik Hazır Kütüphaneler Coruh Auth
Anlaşılırlık Kara kutu Her satır açık
Bağımlılık Composer paketleri Sıfırdan PHP
Özelleştirme Zor Çok kolay
Eğitim değeri Yok Yüksek
Güvenlik Varsayılan ayarlar En iyi pratikler

Coruh Auth – Kimlik doğrulama, sır değil, sistemdir.
Katman katman, düşüne düşüne.