web-dev-qa-db-fra.com

Comment désactiver la sécurité Spring dans l'application Spring Boot

J'ai implémenté l'authentification dans mon application Spring Boot avec Spring Security. 

La classe principale contrôlant l'authentification devrait être websecurityconfig:

@Configuration
@EnableWebSecurity
@PropertySource(value = { "classpath:/config/application.properties" })
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {


    @Autowired
    private RestAuthenticationSuccessHandler authenticationSuccessHandler;
    @Autowired
    private RestAuthenticationEntryPoint restAuthenticationEntryPoint;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
          .httpBasic()
            .and()
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(
                    SessionCreationPolicy.STATELESS)
            .and()
            .exceptionHandling()
            .authenticationEntryPoint(restAuthenticationEntryPoint)
            .and()
            .authorizeRequests()
                .antMatchers("/").permitAll()
                .antMatchers("/login").permitAll()
                .antMatchers("/logout").permitAll()
                .antMatchers("/ristore/**").authenticated()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .successHandler(authenticationSuccessHandler)
                .failureHandler(new SimpleUrlAuthenticationFailureHandler());
    }

Depuis que je fais OAuth, j'ai aussi AuthServerConfig et ResourceServerConfig. Ma classe d'application principale ressemble à ceci:

@SpringBootApplication
@EnableSpringDataWebSupport
@EntityScan({"org.mdacc.ristore.fm.models"}) 
public class RistoreWebApplication extends SpringBootServletInitializer
{
   @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedOrigins("*");
            }
        };
    }
    public static void main( String[] args )
    {
        SpringApplication.run(RistoreWebApplication.class, args);
    }

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
         return application.sources(RistoreWebApplication.class);
     }
}

Étant donné que nous procédons à la consolidation du code, nous devons désactiver l’authentification temporairement. Cependant, j'ai essayé les méthodes suivantes et rien ne semble fonctionner. Je reçois toujours 401 quand je frappe ces urls api de repos.

  1. Mettez en commentaire toutes les annotations dans les classes liées à la sécurité, y compris @Configuration, @EnableWebSecurity. Dans Sécurité au démarrage du printemps Désactiver la sécurité , il a été suggéré au bas de la page d'ajouter que @EnableWebSecurity désactive l'autorisation, ce qui, à mon avis, n'a aucun sens. Essayé quand même, n'a pas fonctionné.

  2. Modifiez websecurityconfig en supprimant tous les éléments de sécurité et ne le faites que http .authorizeRequests() .anyRequest().permitAll();

Désactiver l’authentification de base lors de l’utilisation de la configuration Java de Spring Security . N'aide pas non plus.

  1. Supprimer la configuration automatique de sécurité

    @EnableAutoConfiguration (exclude = { Org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class, Org.

comme ce qu'ils ont fait dans désactivation de la sécurité de printemps dans l'application de démarrage de printemps . Cependant, je pense que cette fonctionnalité ne fonctionne qu'avec spring-boot-actuator que je n'ai pas. Donc, je n'ai pas essayé ça.

Quelle est la bonne façon de désactiver la sécurité du ressort?

8
ddd

Comme @Maciej Walkowiak l'a mentionné, vous devriez le faire pour votre classe principale:

@SpringBootApplication(exclude = org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class)
public class MainClass {
11
luboskrnac

essaye ça

1-> Commentaire annotation @EnableWebSecurity dans votre configuration de sécurité

// @ EnableWebSecurity

2-> Ajoutez ces lignes dans votre configuration de sécurité 

spring.security.enabled = false

management.security.enabled = false

security.basic.enabled = false

2
Mohammad