| name | spring-security-patterns |
| description | Elly'deki JWT, OAuth2 ve Spring Security pattern'leri. Auth flow değişikliği, yeni endpoint güvenliği, token handling, SecurityConfig güncelleme veya OAuth2 konfigürasyonu ile ilgili konularda otomatik aktif et. |
| version | 1.0.0 |
Elly Spring Security & Auth Patterns
JWT Yapısı
JwtUtil.generateToken(user, loginSource, tenantId)
JwtUtil.generateRefreshToken(user, loginSource, tenantId)
Login Akışları
| Akış | Endpoint | Interceptor | loginSource |
|---|
| Admin | POST /api/auth/admin/login | AdminLoginInterceptor | ADMIN |
| Tenant | POST /api/auth/login | TenantLoginInterceptor | TENANT |
| OAuth2 | /oauth2/authorize/{provider} | OAuth2AuthenticationSuccessHandler | OAUTH2 |
SecurityConfig Kuralları
.requestMatchers("/api/public/**").permitAll()
.requestMatchers("/api/auth/**").permitAll()
.requestMatchers("/api/admin/**").hasRole("ADMIN")
.requestMatchers("/api/**").authenticated()
Yeni Endpoint Güvenliği — Checklist
SecurityConfig.java'ya uygun requestMatchers kuralı ekle
- Method-level güvenlik gerekiyorsa:
@PreAuthorize("hasRole('ADMIN')")
- Admin endpoint ise:
loginSource claim'ini doğrula
- Tenant endpoint ise:
tenantId claim'i context'e set edilmiş mi kontrol et
OAuth2 Provider'lar
- Google, Facebook, GitHub
- User bilgisi:
CustomOAuth2UserService → CustomOAuth2User
- Başarı callback:
OAuth2AuthenticationSuccessHandler.onAuthenticationSuccess()
- Başarı sonrası JWT üretimi aynı
JwtUtil ile yapılır
Filter Sırası
JwtAuthenticationFilter ← JWT doğrulama, SecurityContext'e yükle
→ JwtTenantFilter ← tenantId'yi TenantContext'e set et
→ AdminLoginInterceptor ← /admin/** için loginSource kontrolü
→ TenantLoginInterceptor ← /api/** için tenant kontrolü