|
3 | 3 | import org.springframework.context.annotation.Bean;
|
4 | 4 | import org.springframework.context.annotation.Configuration;
|
5 | 5 | import org.springframework.context.annotation.Profile;
|
| 6 | +import org.springframework.http.HttpHeaders; |
6 | 7 | import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
|
7 | 8 | import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
8 | 9 | import org.springframework.security.config.annotation.web.configurers.CsrfConfigurer;
|
| 10 | +import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; |
| 11 | +import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer.CacheControlConfig; |
9 | 12 | import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
|
10 | 13 | import org.springframework.security.web.SecurityFilterChain;
|
| 14 | +import org.springframework.security.web.header.writers.StaticHeadersWriter; |
11 | 15 |
|
12 | 16 | /** Keycloak security configuration. */
|
13 | 17 | @Configuration
|
14 | 18 | @EnableMethodSecurity(jsr250Enabled = true, prePostEnabled = true)
|
15 | 19 | @Profile("!dev")
|
16 | 20 | public class KeycloakSecurityConfig {
|
17 | 21 | @Bean
|
18 |
| - public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { |
| 22 | + SecurityFilterChain filterChain(HttpSecurity http) throws Exception { |
19 | 23 | return http //
|
20 | 24 | .csrf(CsrfConfigurer::disable) //
|
| 25 | + .headers(this::customizeHeaders) |
21 | 26 | .oauth2ResourceServer(
|
22 | 27 | oauth2 -> oauth2.jwt(jwt -> jwt.jwtAuthenticationConverter(jwtAuthenticationConverter()))) //
|
23 | 28 | .authorizeHttpRequests(auth -> auth.anyRequest().permitAll()) //
|
24 | 29 | .build();
|
25 | 30 | }
|
26 | 31 |
|
| 32 | + private HeadersConfigurer<HttpSecurity> customizeHeaders(HeadersConfigurer<HttpSecurity> customizer) { |
| 33 | + return customizer // |
| 34 | + .cacheControl(CacheControlConfig::disable) |
| 35 | + .addHeaderWriter(new StaticHeadersWriter(HttpHeaders.CACHE_CONTROL, "must-revalidate")); |
| 36 | + } |
| 37 | + |
27 | 38 | private JwtAuthenticationConverter jwtAuthenticationConverter() {
|
28 | 39 | JwtAuthenticationConverter jwtConverter = new JwtAuthenticationConverter();
|
29 | 40 | jwtConverter.setJwtGrantedAuthoritiesConverter(new KeycloakRealmRoleConverter());
|
|
0 commit comments