web-dev-qa-db-fra.com

Comment désactiver l'écran de connexion Spring-Security?

J'utilise spring-boot-starter-security dépendance, pour utiliser plusieurs classes fournies avec spring-security. Mais comme je veux l'intégrer dans une application vaadin existante, je veux seulement utiliser les classes, et non pas l'écran de connexion/authentification par défaut de spring.

Comment désactiver cet écran?

Je ne peux faire aucune configuration en étendant WebSecurityConfigurerAdapter comme ma classe d'entrée principale déjà extends SpringBootServletInitializer. De plus, les applications vaadin s'exécutent essentiellement sur le même chemin URL tout le temps et utilisent la navigation interne.

@EnableAutoConfiguration
public class MyApp extends SpringBootServletInitializer { 

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(MyApp.class);
        }

        public static void main(String[] args) {
            SpringApplication.run(MyApp.class, args);
        }
}

Alors, que puis-je faire pour désactiver l'écran de connexion, mais utiliser les fonctionnalités de sécurité Spring?

27
membersound

La sécurité par défaut dans Spring Boot est Basic. Vous pouvez le désactiver en définissant security.basic.enabled=false. En savoir plus ici et ici .

8
Andrei Stefan

vous pouvez utiliser Java comme ceci:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity security) throws Exception
    {
     security.httpBasic().disable();
    }
}

et redémarrez votre application si elle est actualisée automatiquement.

27
noobdev

Pour désactiver complètement la route de connexion, utilisez l'objet de configuration Spring Security

L'extrait de code suivant utilise org.springframework.boot:2.1.6.RELEASE

@Configuration
@EnableWebSecurity
class SecurityConfig : WebSecurityConfigurerAdapter() {
  override fun configure(security: HttpSecurity) {
    super.configure(security)

    security.httpBasic().disable()

    security.cors().and().csrf().disable().authorizeRequests()
      .anyRequest().authenticated()
      .and().formLogin().disable() // <-- this will disable the login route
      .addFilter(JWTAuthorizationFilter(authenticationManager()))
      .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
  }

  @Bean
  fun corsConfigurationSource(): CorsConfigurationSource {
    val source = UrlBasedCorsConfigurationSource()
    val config = CorsConfiguration().applyPermitDefaultValues()
    config.addExposedHeader("Authorization")
    source.registerCorsConfiguration("/**", config)
    return source
  }
}
1
nilobarp

Sur la classe d'application Spring-Boot principale (la classe qui a l'annotation @SpringBootApplication)

@SpringBootApplication(exclude={SecurityAutoConfiguration.class})
0
Semir Umut Kurt

Si quelqu'un a encore besoin de la solution, mettez une méthode dans le contrôleur REST comme ceci:

@RestController
public class myRestController{

    @GetMapping("/login")
    public String redirectTo(){
        return "yourRedirectLink";
    }

}

Cette solution est très bonne pour travailler avec un ressort et réagir dans un pot

Il semble y avoir une solution plus simple.

Placez simplement cette annotation au-dessus de votre classe principale ou au même endroit que votre annotation SpingBootApplication

@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})

0
Fangming