1
1
package com .behl .overseer .configuration ;
2
2
3
+ import java .util .List ;
4
+
3
5
import org .springframework .context .annotation .Bean ;
4
6
import org .springframework .context .annotation .Configuration ;
5
7
import org .springframework .http .HttpMethod ;
9
11
import org .springframework .security .crypto .password .PasswordEncoder ;
10
12
import org .springframework .security .web .SecurityFilterChain ;
11
13
import org .springframework .security .web .authentication .UsernamePasswordAuthenticationFilter ;
14
+ import org .springframework .web .cors .CorsConfiguration ;
15
+ import org .springframework .web .cors .CorsConfigurationSource ;
16
+ import org .springframework .web .cors .UrlBasedCorsConfigurationSource ;
12
17
13
18
import com .behl .overseer .filter .JwtAuthenticationFilter ;
14
19
import com .behl .overseer .filter .RateLimitFilter ;
@@ -47,7 +52,7 @@ public class SecurityConfiguration {
47
52
@ SneakyThrows
48
53
public SecurityFilterChain configure (final HttpSecurity http ) {
49
54
http
50
- .cors (corsConfigurer -> corsConfigurer .disable ( ))
55
+ .cors (corsConfigurer -> corsConfigurer .configurationSource ( corsConfigurationSource () ))
51
56
.csrf (csrfConfigurer -> csrfConfigurer .disable ())
52
57
.sessionManagement (sessionConfigurer -> sessionConfigurer .sessionCreationPolicy (SessionCreationPolicy .STATELESS ))
53
58
.authorizeHttpRequests (authManager -> {
@@ -66,5 +71,17 @@ public SecurityFilterChain configure(final HttpSecurity http) {
66
71
public PasswordEncoder passwordEncoder () {
67
72
return new BCryptPasswordEncoder ();
68
73
}
74
+
75
+ private CorsConfigurationSource corsConfigurationSource () {
76
+ final var corsConfiguration = new CorsConfiguration ();
77
+ corsConfiguration .setAllowedOrigins (List .of ("*" ));
78
+ corsConfiguration .setAllowedMethods (List .of ("GET" , "POST" , "PUT" , "DELETE" , "OPTIONS" ));
79
+ corsConfiguration .setAllowedHeaders (List .of ("Authorization" , "Origin" , "Content-Type" , "Accept" ));
80
+ corsConfiguration .setExposedHeaders (List .of ("Content-Type" , "X-Rate-Limit-Retry-After-Seconds" , "X-Rate-Limit-Remaining" ));
81
+
82
+ final var corsConfigurationSource = new UrlBasedCorsConfigurationSource ();
83
+ corsConfigurationSource .registerCorsConfiguration ("/**" , corsConfiguration );
84
+ return corsConfigurationSource ;
85
+ }
69
86
70
87
}
0 commit comments