62 lines
2.5 KiB
Java
62 lines
2.5 KiB
Java
package nl.connectedit.swiss.authentication;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.security.authentication.AuthenticationManager;
|
|
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
|
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
import org.springframework.security.web.SecurityFilterChain;
|
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
|
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
|
|
import static org.springframework.security.config.Customizer.withDefaults;
|
|
|
|
@Configuration
|
|
@ConditionalOnExpression("${security}")
|
|
@EnableWebSecurity
|
|
@RequiredArgsConstructor
|
|
public class JwtSecurityConfig {
|
|
|
|
private final JwtRequestFilter jwtRequestFilter;
|
|
|
|
@Bean
|
|
BCryptPasswordEncoder passwordEncoder() {
|
|
return new BCryptPasswordEncoder();
|
|
}
|
|
|
|
@Bean
|
|
public AuthenticationManager authenticationManager(
|
|
final AuthenticationConfiguration authenticationConfiguration) throws Exception {
|
|
return authenticationConfiguration.getAuthenticationManager();
|
|
}
|
|
|
|
@Bean
|
|
public SecurityFilterChain configure(final HttpSecurity http) throws Exception {
|
|
return http.cors(withDefaults())
|
|
.csrf((csrf) -> csrf.disable())
|
|
.authorizeHttpRequests((authorize) -> authorize
|
|
.requestMatchers("/", "/authenticate", "/testdata").permitAll()
|
|
.anyRequest().hasAuthority(UserRoles.ROLE_USER))
|
|
.sessionManagement((session) -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
|
|
.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class)
|
|
.build();
|
|
}
|
|
|
|
@Bean
|
|
public WebMvcConfigurer corsConfigurer() {
|
|
return new WebMvcConfigurer() {
|
|
@Override
|
|
public void addCorsMappings(CorsRegistry registry) {
|
|
registry.addMapping("/**")
|
|
.allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
|
|
}
|
|
};
|
|
}
|
|
|
|
} |