3.4 KiB
3.4 KiB
Proje: GAuth-Central (Go-Gin Merkezi Kimlik Doğrulama Servisi)
1. Proje Özeti
Bu proje, birden fazla istemci uygulama (backend) için merkezi bir kimlik doğrulama ve yetkilendirme (Identity Provider) hizmeti sunar. Go (Gin Framework) ile geliştirilecek olan bu servis; klasik e-posta kaydı, Google ve GitHub OAuth2 girişlerini yönetir ve başarılı giriş sonrası JWT (JSON Web Token) üretir.
2. Teknoloji Yığını
- Dil: Go 1.25.7 (Golang)
- Web Framework: Gin Gonic
- Veritabanı: PostgreSQL (GORM üzerinden)
- Kimlik Doğrulama:
- JWT (github.com/golang-jwt/jwt/v5)
- OAuth2 (golang.org/x/oauth2 ve github.com/markbates/goth)
- Güvenlik: Bcrypt (şifre hashleme), CORS, Rate Limiting.
3. Klasör Yapısı
/atahango
├── /api
│ ├── /handlers # HTTP istek işleyicileri
│ ├── /middlewares # JWT ve Auth kontrolleri
│ └── /routes # Route tanımları
├── /config # Env ve Konfigürasyon yönetimi
├── /internal
│ ├── /models # DB Modelleri (User, SocialAccount)
│ ├── /services # Auth ve JWT iş mantığı
│ └── /database # DB Bağlantısı ve Migration
├── /pkg # Yardımcı araçlar (utils)
├── .env # Gizli anahtarlar
├── go.mod
└── main.go
4. Veritabanı Modeli (GORM)
- User:
ID,Email,Password(hash),CreatedAt,UpdatedAt. - SocialAccount:
ID,UserID(FK),Provider(google/github),ProviderID,Email.
5. API Uç Noktaları (Endpoints)
Klasik Auth
POST /v1/auth/register: E-posta ve şifre ile kayıt.POST /v1/auth/login: E-posta ve şifre ile giriş -> JWT döner.
OAuth2 (Social Login)
GET /v1/auth/:provider: (google/github) Kullanıcıyı ilgili platforma yönlendirir.GET /v1/auth/:provider/callback: Platformdan dönen veriyi işler, kullanıcıyı DB'de eşleştirir/oluşturur -> JWT döner.
Doğrulama ve Yönetim
GET /v1/auth/validate: İstemci uygulama (Django) bu endpoint'e JWT gönderir, servis kullanıcı bilgilerini doğrular.POST /v1/auth/refresh: Refresh token ile yeni Access Token üretimi.
6. JWT Tasarımı
- Payload:
{ "sub": "user_uuid", "email": "user@example.com", "exp": 1738500000, "iss": "gauth-central" } - İmzalama: HS256 veya RS256 algoritması kullanılmalıdır.
7. İstemci Entegrasyon Mantığı (Örn: Django)
- Django, kullanıcıyı
GAuth/v1/auth/googleadresine yönlendirir. - GAuth işlemi tamamlar ve kullanıcıyı Django'nun callback URL'ine bir
?token=...query parametresi ile geri gönderir. - Django, bu token'ı alır ve kendi session'ını oluşturmak için GAuth'un
/v1/auth/validateservisini kullanır.
8. Gemini İçin Talimatlar (Implementation Rules)
- Kodları modüler yaz (Handlers, Services, Models ayrımı).
.envdosyasındanCLIENT_ID,CLIENT_SECRETveJWT_SECRETokumayı unutma.- Hata yönetimini (Error Handling) profesyonelce yap ve JSON formatında hata mesajları dön.
- CORS ayarlarını tüm istemciler (Django vb.) için yapılandırılabilir kıl.
github.com/markbates/gothkütüphanesini kullanarak multi-provider desteğini uygula.
Not: Bu dosya projenin teknik rehberidir. Kod üretim aşamasında bu mimariye sadık kalınmalıdır.