33import org .springframework .context .annotation .Bean ;
44import org .springframework .context .annotation .Configuration ;
55import org .springframework .http .HttpMethod ;
6+ import org .springframework .security .authentication .AuthenticationManager ;
67import org .springframework .security .authentication .AuthenticationProvider ;
78import org .springframework .security .authentication .dao .DaoAuthenticationProvider ;
9+ import org .springframework .security .config .BeanIds ;
810import org .springframework .security .config .annotation .authentication .builders .AuthenticationManagerBuilder ;
911import org .springframework .security .config .annotation .method .configuration .EnableGlobalMethodSecurity ;
1012import org .springframework .security .config .annotation .web .builders .HttpSecurity ;
1113import org .springframework .security .config .annotation .web .configuration .EnableWebSecurity ;
1214import org .springframework .security .config .annotation .web .configuration .WebSecurityConfigurerAdapter ;
15+ import org .springframework .security .config .http .SessionCreationPolicy ;
1316import org .springframework .security .core .userdetails .User ;
1417import org .springframework .security .core .userdetails .UserDetails ;
1518import org .springframework .security .core .userdetails .UserDetailsService ;
1619import org .springframework .security .crypto .password .PasswordEncoder ;
1720import org .springframework .security .provisioning .InMemoryUserDetailsManager ;
1821
22+ import com .bookstore .api .jwt .JwtAuthenticationEntryPoint ;
23+ import com .bookstore .api .jwt .JwtAuthenticationFilter ;
1924import com .bookstore .api .services .ApplicationUserService ;
2025
2126import lombok .RequiredArgsConstructor ;
@@ -31,18 +36,33 @@ public class ApplicationSecurityConfig
3136
3237 private final PasswordEncoder passwordEncoder ;
3338 private final ApplicationUserService applicationUserService ;
39+ private final JwtAuthenticationEntryPoint handler ;
40+ 41+ 42+ @ Bean
43+ public JwtAuthenticationFilter jwtAuthenticationFilter (){
44+ return new JwtAuthenticationFilter ();
45+ }
46+ 47+ @ Bean (BeanIds .AUTHENTICATION_MANAGER )
48+ @ Override
49+ public AuthenticationManager authenticationManagerBean () throws Exception {
50+ return super .authenticationManagerBean ();
51+ }
3452
3553 @ Override
3654 protected void configure (HttpSecurity http ) throws Exception {
3755 http
3856 .csrf ().disable ()
57+ .exceptionHandling ().authenticationEntryPoint (handler )
58+ .and ()
59+ .sessionManagement ()
60+ .sessionCreationPolicy (SessionCreationPolicy .STATELESS )
61+ .and ()
3962 .authorizeRequests ()
4063 .antMatchers ("/api/v1/**" ).hasRole (ADMIN .name ())
41- .antMatchers ("/api/v1/**" ).permitAll ()
4264 .anyRequest ()
43- .authenticated ()
44- .and ()
45- .httpBasic ();
65+ .authenticated ();
4666 }
4767
4868 @ Override
0 commit comments