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.
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é.
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.
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?
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 {
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