Günümüzde birçok uygulama, özellikle Fullstack uygulamaları, frontend ve backend’in farklı domain veya portlarda çalıştığı durumlarla karşılaşabilir. Bu durumda CORS (Cross-Origin Resource Sharing) problemleriyle karşılaşabilirsiniz. CORS, farklı bir domainden veya porttan gelen isteklere izin vermek veya bu izinleri sınırlamak için kullanılır.
Bu yazıda, Spring Boot backend kullanarak geliştirilen bir uygulamada CORS problemlerini nasıl çözebileceğinizi ve Spring Security ile nasıl güvenli bir yapı kurabileceğinizi ele alacağız.
1. Spring Boot’ta CORS Yapılandırması
a. Maven Dependency Ekleme: İlk olarak, projemizde spring-boot-starter-web bağımlılığının olduğundan emin olmalıyız. Bu bağımlılık, CORS desteği için gereklidir.
b. CORS Yapılandırması: WebConfig sınıfımızda CORS yapılandırmasını ekleyeceğiz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://izinverilendomain.com") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowedHeaders("*") .allowCredentials(true) .maxAge(3600); } } |
2. Spring Boot’ta Güvenlik Yapılandırması
Eğer Spring Security kullanıyorsanız, CORS yapılandırmasını SecurityConfig sınıfınıza eklemeniz gerekecektir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
@Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .cors() // CORS desteği ekleniyor .and() .csrf().disable() .authorizeHttpRequests((authorize) -> authorize .requestMatchers("/api/v1/auth/**").permitAll() .anyRequest().authenticated() ) .exceptionHandling(exception -> exception .authenticationEntryPoint(authenticationEntryPoint) ) .sessionManagement(session -> session .sessionCreationPolicy(SessionCreationPolicy.STATELESS) ); http.addFilterBefore(authenticationFilter, UsernamePasswordAuthenticationFilter.class); return http.build(); } |
Bu yapılandırmada, /api/v1/auth/** URL’lerine gelen isteklerin doğrulanmadan geçmesine izin veriyoruz, diğer tüm istekler için ise kimlik doğrulama gerekiyor.
Bu yapılandırmalarla, frontend ve backend arasında güvenli ve sorunsuz bir iletişim sağlamış olduk. CORS konfigürasyonu sayesinde frontend uygulamanızın backend’e istekte bulunmasına izin verdik. Spring Security konfigürasyonuyla da API’ye erişimi kontrol altına aldık.
Umarım “Spring Boot CORS ve Güvenlik Yapılandırması” başlıklı yazım sizin için faydalı olmuştur.
Şu yazılar da ilginizi çekebilir.
Java Projelerini Kolaylaştıran Kütüphane: Lombok
Yeni bir yazımda görüşmek üzere.
Happy coding!