Tenho a configuração abaixo que funciona normalmente para uma api rest. Gostaria de adicionar uma tela de login e um painel administrativo com funcionalidade de criação de usuarios e reset de senha nesta api.] como ficara a forma correta do meu security config nesse caso para que possa funcionar tanto como uma rest api e com a parte web? Seria somente adicionar as rotas das paginas e conceder direitos para os usuarios necessários? abaixo o código atual funcionando e minha api rest.
@Configuration
@EnableWebSecurity
public class SecurityConfigurations {
@Autowired
private SecurityFilter securityFilter;
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http.csrf(csr -> csr.disable())
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(authorize -> { authorize
.requestMatchers(HttpMethod.POST,"/auth").permitAll()
.requestMatchers(HttpMethod.GET,"/auth/login").permitAll() /* esse seria para o meu login*/
.requestMatchers(HttpMethod.GET,"/empresa1/v1/**").hasAnyAuthority(Role.EMPRESA1.name(),Role.ADMIN.name())
.requestMatchers(HttpMethod.GET,"/empresa2/v1/**").hasAnyAuthority(Role.EMPRESA2.name(),Role.ADMIN.name())
.requestMatchers(HttpMethod.POST,"/user/v1/**").hasAuthority(Role.ADMIN.name())
.anyRequest().authenticated();
})
.addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
.build();
}
@Bean
public AuthenticationManager authenticationManager (AuthenticationConfiguration configuration) throws Exception {
return configuration.getAuthenticationManager();
}
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return web -> web.ignoring().requestMatchers("/actuator", "/actuator/**","/v3/api-docs/**","/api-docs/**", "/swagger-ui.html", "/swagger-ui/**");
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}