Kuba Hejda
(JPA, security, RestTemplate, integration testing)
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private BasicAuthenticationEntryPoint authenticationEntryPoint;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user1").password(passwordEncoder().encode("user1Pass"))
.roles("USER")
.and()
.withUser("admin").password(passwordEncoder().encode("adminPass"))
.roles("ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(HttpMethod.GET,"/user/login/**").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic()
.authenticationEntryPoint(authenticationEntryPoint);
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}@Configuration
@RequiredArgsConstructor
public class SecurityConfiguration {
private final SecurityConfigurationProperties securityConfigurationProperties;
@Bean
public InMemoryUserDetailsManager userDetailsService() {
UserDetails user = User.withDefaultPasswordEncoder()
.username("user")
.password("password")
.roles("USER")
.build();
return new InMemoryUserDetailsManager(user);
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf()
.disable()
.authorizeHttpRequests((authz) -> authz
.antMatchers(HttpMethod.GET, "/api/v1/products/**", "/api/v1/authors/**", "/api/v1/genres/**", "/api/v1/carts/**")
.permitAll()
.antMatchers(HttpMethod.POST, "/api/v1/orders/**", "/api/v1/carts/**")
.permitAll()
.antMatchers(HttpMethod.PUT, "/api/v1/carts/**")
.permitAll()
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
return http.build();
}New Spring security
@Bean
public CorsConfigurationSource corsConfigurationSource() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration()
.setAllowedOriginPatterns(List.of(securityConfigurationProperties.getUrl()));
corsConfiguration.setAllowedMethods(securityConfigurationProperties.getMethods());
corsConfiguration.setAllowedHeaders(List.of("Authorization", "Content-Type"));
source.registerCorsConfiguration("/**", corsConfiguration);
return source;
}Global Cors settings
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/*IT</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
<includes>
<include>**/*IT</include>
</includes>
</configuration>
</plugin>