it-swarm.com.de

So deaktivieren Sie Spring Security in der Spring Boot-Anwendung

Ich habe die Authentifizierung in meiner Spring Boot-Anwendung mit Spring Security implementiert. 

Die Hauptklasse, die die Authentifizierung steuert, sollte websecurityconfig sein:

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

Da ich OAuth mache, habe ich auch AuthServerConfig und ResourceServerConfig. Meine Hauptanwendungsklasse sieht folgendermaßen aus:

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

Da wir die Codekonsolidierung durchführen, muss die Authentifizierung vorübergehend deaktiviert werden. Ich habe jedoch die folgenden Methoden ausprobiert und nichts scheint zu funktionieren. Ich bekomme immer noch 401, wenn ich diese Rest-API-URLs stoße.

  1. Kommentieren Sie alle Anmerkungen zu Klassen aus, die sich auf die Sicherheit beziehen, einschließlich @Configuration, @EnableWebSecurity. In Spring boot Security Disable Sicherheit wurde unten vorgeschlagen, durch Hinzufügen von @EnableWebSecurity wird auth deaktiviert, was meiner Meinung nach keinen Sinn macht. Versuchte es trotzdem, funktionierte nicht.

  2. Ändern Sie websecurityconfig, indem Sie alle Sicherheitsfunktionen entfernen, und führen Sie nur .__ aus. http .authorizeRequests() .anyRequest().permitAll();

Deaktivieren Sie die Basisauthentifizierung während der Spring Security Java-Konfiguration . Hilft auch nicht.

  1. Entfernen Sie die automatische Sicherheitskonfiguration

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

wie in Deaktivieren der Federsicherheit in Spring Boot App . Ich denke jedoch, dass diese Funktion nur mit spring-boot-actuator funktioniert, den ich nicht habe. Also nicht probiert.

Was ist der richtige Weg, um die Federsicherheit zu deaktivieren?

8
ddd

Wie von @Maciej Walkowiak erwähnt, sollten Sie dies für Ihre Hauptklasse tun:

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

Versuche dies

1-> Kommentieren Sie Annotation @EnableWebSecurity in Ihrer Sicherheitskonfiguration

// @ EnableWebSecurity

2-> Fügen Sie diese Zeilen in Ihre Sicherheitskonfiguration ein 

spring.security.enabled = false

management.security.enabled = false

security.basic.enabled = false

2
Mohammad