Lorsque j'utilise security.basic.enabled = false pour désactiver la sécurité sur un projet Spring Boot comportant les dépendances suivantes:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.Oracle</groupId>
<artifactId>ojdbc6</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-Tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Je vois ce qui suit Exception:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration$ManagementWebSecurityConfigurerAdapter': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.setObjectPostProcessor(org.springframework.security.config.annotation.ObjectPostProcessor); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.config.annotation.ObjectPostProcessor] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Afin de corriger cette exception, j'ai dû ajouter la propriété - management.security.enabled = false . Si j'ai bien compris, lorsque l'actionneur se trouve dans le chemin de classe, security.basic.enabled = false et management.security.enabled = false doit être défini pour désactiver la sécurité.
Est-ce que quelqu'un pourrait me faire savoir si ma compréhension est fausse?
Ce qui semble également fonctionner correctement est la création d'un fichier application-dev.properties
qui contient:
security.basic.enabled=false
management.security.enabled=false
Si vous démarrez ensuite votre application Spring Boot avec le profil dev
, vous n'avez pas besoin de vous connecter.
Au cas où vous auriez un actionneur de démarrage à ressort dans votre emballage, vous devez ajouter le
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class})
Avec Spring-boot, la classe s'appelait ManagementSecurityAutoConfiguration
.
Dans les nouvelles versions, cela a changé pour
@SpringBootApplication(exclude = {
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class}
)
Si vous avez besoin de la sécurité en tant que dépendance mais que vous ne voulez pas que Spring Boot la configure pour vous, vous pouvez utiliser cette exclusion:
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class
})
Pour le démarrage de printemps 2 utilisateurs, il doit être
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})
Étape 1: Annotation des commentaires @EnableWebSecurity dans votre configuration de sécurité
//@EnableWebSecurity
Étape 2: Ajoutez ceci à votre fichier application.properties.
security.ignored=/**
spring.security.enabled=false
management.security.enabled=false
security.basic.enabled=false
Pour plus de détails, regardez ici: http://codelocation.com/how-to-turn-on-and-off-spring-security-in-spring-boot-application/
J'ai simplement ajouté security.ignored=/**
dans le application.properties
et c'est ce qui a fait le charme.
Pour éviter la sécurité, vous pouvez utiliser des annotations . Utilisez cette annotation au-dessus de la classe configure:
@EnableWebSecurity
Par exemple:
@EnableWebSecurity
@Configuration
public class AuthFilter{
// configured method
}
Autoriser l'accès à tout avec antMatchers ("/")
protected void configure(HttpSecurity http) throws Exception {
System.out.println("configure");
http.csrf().disable();
http.authorizeRequests().antMatchers("/").permitAll();
}
Vous pouvez configurer pour basculer la sécurité du ressort dans votre projet en suivant les 2 étapes suivantes:
ÉTAPE 1: Ajoutez une annotation @ConditionalOnProperty
au-dessus de votre classe SecurityConfig. Voir ci-dessous:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity (prePostEnabled = true)
@ConditionalOnProperty (name = "myproject.security.enabled", havingValue = "true", matchIfMissing = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// your security config
}
ÉTAPE 2: .__ Ajoutez la configuration suivante à votre fichier application.properties
ou application.yml
.
application.properties
security.ignored=/**
myproject.security.enabled=false
OU
application.yml
security:
ignored: /**
myproject:
security:
enabled: false
Ajoutez les lignes ci-dessous à votre application principale.
Supprimez org.activiti.spring.boot.SecurityAutoConfiguration.class si vous n'utilisez pas activiti.
De même, retirez celui qui correspond à l'actionneur si vous n'utilisez pas d'actionneur à ressort.
@EnableAutoConfiguration(exclude = {
org.activiti.spring.boot.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class,
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class })
J'ai ajouté les paramètres ci-dessous dans application.yml et j'ai bien fonctionné.
security:
route-patterns-to-be-skipped:
- /**/*
cela peut être converti en security.route-paterns-to-be-skipped=/**/*
pour application.properties
Ajouter la classe suivante dans votre code
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/**
* @author vaquar khan
*/
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/**").permitAll().anyRequest().authenticated().and().csrf().disable();
}
}
Et insie de application.properties add
security.ignored=/**
security.basic.enabled=false
management.security.enabled=false