2016-10-24 29 views
5

Mam zaimplementowane uwierzytelnianie w mojej aplikacji Spring Boot z Spring Security.Jak wyłączyć Spring Security w Spring Boot Application

Uwierzytelnianie kontrolowania Główna klasa powinna być 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()); 
    } 

Ponieważ robię OAuth, mam AuthServerConfig i ResourceServerConfig również. Moja główna klasa aplikacji wygląda następująco:

@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); 
    } 
} 

Ponieważ przeprowadzamy konsolidację kodu, musimy chwilowo wyłączyć uwierzytelnianie. Jednak próbowałem następujące metody i nic nie wydaje się działać. Wciąż dostaję 401 kiedy trafiam te adresy URL odpoczynku.

  1. Komentarz wszystkie adnotacje w zajęciach związanych z bezpieczeństwem w tym @Configuration, @EnableWebSecurity. W wersji Spring boot Security Disable security zasugerowano na dole dodając, że @EnableWebSecurity WYŁĄCZ AUTOH, co nie wydaje mi się sensowne. Próbowałem to mimo wszystko, nie działa.

  2. Zmienić websecurityconfig usuwając wszystkie rzeczy zabezpieczeń i tylko zrobić http .authorizeRequests() .anyRequest().permitAll();

Disable Basic Authentication while using Spring Security Java configuration. To też nie pomaga.

  1. usuwania zabezpieczeń automatycznej konfiguracji

    @EnableAutoConfiguration (wyklucza = { org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class, org.springframework.boot. actuate.autoconfigure.ManagementSecurityAutoConfiguration.class})

jak to, co zrobili w disabling spring security in spring boot app. Jednak myślę, że ta funkcja działa tylko z spring-boot-actuator, której nie mam. Więc nie próbowałem tego.

Jaki jest właściwy sposób wyłączenia bezpieczeństwa sprężynowego?

+1

Dodanie '@ EnableWebSecurity' wyłącza konfigurację Wiosna Boot auto bezpieczeństwo. W twoim przypadku masz już tę adnotację, więc i tak nie korzystasz z automatycznej konfiguracji. Sugeruję próbę skomentowania '@ EnableWebSecurity' z twojej klasy i wykluczenie' SecurityAutoConfiguration.class' z automatycznej konfiguracji. –

+0

@MaciejWalkowiak Czy mogę wykluczyć SecurityAutoConfiguration.class w klasie aplikacji? – ddd

+0

Spójrz na [to] (https://stackoverflow.com/questions/25639188/disable-basic-authentication-while-using-spring-security-java-configuration#25740336) – rocksteady

Odpowiedz

9

Jak wspomniano @Maciej Walkowiak, należy zrobić to za główne klasy:

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

Działa po dodaniu tego w moim głównym Klasy aplikacji i komentowanie '@ EnableWebSecurity' w mojej klasie securityconfig, np. Co powiedział @MaciejWalkowiak. – ddd

3

spróbować tej

1-> Komentarz adnotacji @EnableWebSecurity w swojej konfiguracji zabezpieczeń

// @ EnableWebSecurity

2-> Dodaj te linie w konfiguracji zabezpieczeń

spring.security.enabled = false

management.security.enabled = false

security.basic.enabled = false