1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| @EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true) public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
private AnonymousAuthenticationEntryPoint anonymousAuthenticationEntryPoint; private AuthenticationLogout authenticationLogout; private AccessDeny accessDeny; private SecurityUserService securityUserService;
@Autowired public void setAnonymousAuthenticationEntryPoint(AnonymousAuthenticationEntryPoint anonymousAuthenticationEntryPoint) { this.anonymousAuthenticationEntryPoint = anonymousAuthenticationEntryPoint; }
@Autowired public void setAuthenticationLogout(AuthenticationLogout authenticationLogout) { this.authenticationLogout = authenticationLogout; } @Autowired public void setAccessDeny(AccessDeny accessDeny) { this.accessDeny = accessDeny; } @Autowired public void setSecurityUserService(SecurityUserService securityUserService) { this.securityUserService = securityUserService; }
@Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }
@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(securityUserService).passwordEncoder(passwordEncoder()); }
@Override public void configure(WebSecurity web) { String[] authWhiteList = { "/swagger-ui.html", "/webjars/**", "/swagger-resources/**", "/v2/**", "/csrf",
"/css/**", "/js/**", "/html/**", "/instances", "/favicon.ico" }; web.ignoring() .antMatchers(HttpMethod.OPTIONS, "/**") .antMatchers(authWhiteList); }
@Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/index/**").anonymous() .antMatchers("/api/**").hasRole("USER") .antMatchers("/login").permitAll() .anyRequest().authenticated() .and() .exceptionHandling() .accessDeniedHandler(accessDeny) .authenticationEntryPoint(anonymousAuthenticationEntryPoint) .and() .logout() .logoutSuccessHandler(authenticationLogout) .and() .addFilterBefore(new JWTLoginFilter("/login",authenticationManager()),UsernamePasswordAuthenticationFilter.class) .addFilterBefore(new SecurityAuthTokenFilter(authenticationManager()),UsernamePasswordAuthenticationFilter.class) .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .csrf().disable(); }
@Bean @Override public AuthenticationManager authenticationManager() throws Exception { return super.authenticationManager(); }
}
|