View Javadoc
1   package org.petify.feed.config;
2   
3   import org.springframework.context.annotation.Bean;
4   import org.springframework.context.annotation.Configuration;
5   import org.springframework.security.config.annotation.web.builders.HttpSecurity;
6   import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
7   import org.springframework.security.config.http.SessionCreationPolicy;
8   import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
9   import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
10  import org.springframework.security.web.SecurityFilterChain;
11  
12  @Configuration
13  public class JwtSecurityConfig {
14  
15      @Bean
16      public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
17          http
18                  .csrf(AbstractHttpConfigurer::disable)
19                  .authorizeHttpRequests(auth -> auth
20                          .requestMatchers("/posts/**").permitAll()
21                          .requestMatchers("/events/**").permitAll()
22                          .requestMatchers(
23                                  "/swagger-ui.html",
24                                  "/swagger-ui/**",
25                                  "/v3/api-docs",
26                                  "/v3/api-docs/**",
27                                  "/actuator/health"
28                          ).permitAll()
29                  )
30                  .sessionManagement(session -> session
31                          .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
32                  )
33                  .oauth2ResourceServer(oauth2 -> oauth2
34                          .jwt(jwt -> jwt
35                                  .jwtAuthenticationConverter(jwtAuthenticationConverter())
36                          )
37                  );
38          return http.build();
39      }
40  
41      @Bean
42      public JwtAuthenticationConverter jwtAuthenticationConverter() {
43          JwtGrantedAuthoritiesConverter grantedAuthoritiesConverter = new JwtGrantedAuthoritiesConverter();
44          grantedAuthoritiesConverter.setAuthorityPrefix("ROLE_");
45          grantedAuthoritiesConverter.setAuthoritiesClaimName("roles");
46  
47          JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
48          jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(grantedAuthoritiesConverter);
49          return jwtAuthenticationConverter;
50      }
51  }