Spring Security Nedir? Spring Boot ile Authentication ve Authorization (2026)
Spring Security, Spring tabanlı uygulamalarda kimlik doğrulama (authentication) ve yetkilendirme (authorization) işlemlerini yöneten güçlü ve esnek bir güvenlik framework’üdür.
Token tabanlı mimariyi detaylı öğrenmek için: Token Nedir? Access ve Refresh Token rehberine de göz atabilirsiniz.
Spring Security Nedir?
Spring Security, Java ve özellikle Spring Boot uygulamalarında kullanıcı kimliğini doğrulamak ve kaynaklara erişimi kontrol etmek için kullanılan bir güvenlik katmanıdır.
- Login mekanizması
- Role bazlı yetkilendirme
- JWT doğrulama
- CSRF koruması
- Session yönetimi
Authentication vs Authorization
Authentication (Kimlik Doğrulama)
Kullanıcının kim olduğunu doğrulama sürecidir.
Authorization (Yetkilendirme)
Doğrulanan kullanıcının hangi kaynaklara erişebileceğini belirler.
Authentication → "Kimsin?" Authorization → "Neye erişebilirsin?"
Spring Security Nasıl Çalışır?
Spring Security, HTTP isteklerini bir Filter Chain üzerinden geçirir. Her istek, güvenlik filtrelerinden geçerek doğrulanır.
Temel akış:
HTTP Request
↓
Security Filter Chain
↓
Authentication Manager
↓
Authorization Check
↓
Controller
Spring Boot’ta Basit Security Config (Spring Boot 2.x)
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.csrf().disable();
}
}
Bu yapı:
- /public/** → herkes erişebilir
- /admin/** → sadece ADMIN rolü
- Diğer tüm endpointler → login gerekli
JWT ile Stateless Authentication
Modern API mimarilerinde Spring Security genellikle JWT (JSON Web Token) ile birlikte kullanılır.
JWT yapısını detaylı öğrenmek için: JWT Nedir?
Stateless vs Stateful Security
| Özellik | Stateful | Stateless (JWT) |
|---|---|---|
| Session | Var | Yok |
| Ölçeklenebilirlik | Daha düşük | Yüksek |
| Sunucu Hafızası | Kullanır | Kullanmaz |
Production Best Practices (2026)
- CSRF sadece session-based uygulamalarda açık bırakılmalı
- JWT süresi kısa tutulmalı
- Refresh token rotation uygulanmalı
- Password encoder (BCrypt) kullanılmalı
- Security config minimal tutulmalı
Sık Yapılan Hatalar
- permitAll ile tüm endpointleri açmak
- JWT doğrulamasını filtreye eklememek
- CSRF mantığını yanlış anlamak
- Password’ü plain text saklamak
Sonuç
Spring Security, modern Java uygulamalarında güvenliğin temelidir. Doğru yapılandırıldığında hem yüksek güvenlik hem de ölçeklenebilirlik sağlar.
API performansını izlemek için JavaMelody rehberine de göz atabilirsiniz.