Advertisement
finalmail

Untitled

Dec 15th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.68 KB | None | 0 0
  1. package com.tbb.demo.config;
  2.  
  3. import com.tbb.demo.domain.UsersService;
  4. import com.tbb.demo.exception.NonexisitngEntityException;
  5. import com.tbb.demo.security.JwtAuthenticationFilter;
  6. import com.tbb.demo.security.JwtAuthorizationFilter;
  7. import com.tbb.demo.security.RestAuthenticationEntryPoint;
  8. import com.tbb.demo.security.RestSavedRequestAwareAuthenticationSuccessHandler;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.http.HttpMethod;
  13. import org.springframework.http.HttpStatus;
  14. import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
  15. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  16. import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  17. import org.springframework.security.config.http.SessionCreationPolicy;
  18. import org.springframework.security.core.userdetails.UserDetailsService;
  19. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  20. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  21. import org.springframework.security.crypto.password.PasswordEncoder;
  22. import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
  23. import org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler;
  24. import org.springframework.web.cors.CorsConfiguration;
  25. import org.springframework.web.cors.CorsConfigurationSource;
  26. import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
  27.  
  28. import java.util.Arrays;
  29. import java.util.Collections;
  30.  
  31. @Configuration
  32. public class SecurityConfig extends WebSecurityConfigurerAdapter {
  33.  
  34.     @Autowired
  35.     private UsersService usersService;
  36.  
  37.     @Override
  38.     protected void configure(HttpSecurity http) throws Exception {
  39.                 http.csrf().disable()
  40.                 .cors().and()
  41.                 .authorizeRequests()
  42.                 //TODO:Change this
  43.                 .antMatchers("/api/public").permitAll()
  44.                 .anyRequest().authenticated()
  45.                 .and()
  46.                 .addFilter(new JwtAuthenticationFilter(authenticationManager()))
  47.                 .addFilter(new JwtAuthorizationFilter(authenticationManager()))
  48.                 .sessionManagement()
  49.                 .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
  50.                 .and()
  51.                 .logout()
  52.  
  53.                 .deleteCookies("JSESSIONID")
  54.                 .clearAuthentication(true)
  55.                 .invalidateHttpSession(true)
  56.                 .logoutUrl("/api/logout")
  57.                 .logoutSuccessHandler(new HttpStatusReturningLogoutSuccessHandler(HttpStatus.ACCEPTED));
  58.         ;
  59.     }
  60.     @Override
  61.     public void configure(AuthenticationManagerBuilder auth) throws Exception {
  62.         auth.userDetailsService(username -> usersService.findByUsername(username));
  63.  
  64.     }
  65.  
  66.     @Bean
  67.     public CorsConfigurationSource corsConfigurationSource() {
  68.         final CorsConfiguration configuration = new CorsConfiguration();
  69.         configuration.setAllowedOrigins(Arrays.asList("*"));
  70.         configuration.setAllowedMethods(Arrays.asList("HEAD", "GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"));
  71.         configuration.setAllowCredentials(true);
  72.         configuration.setAllowedHeaders(Arrays.asList("Authorization", "Cache-Control", "Content-Type"));
  73.         final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  74.         source.registerCorsConfiguration("/**", configuration);
  75.         return source;
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement