web-dev-qa-db-fra.com

Spring Boot Security Désactiver la sécurité

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? 

59
user3600073

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.

66
Wim Deblauwe

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}
        )
48
Varesh

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 
    })
31
gyoder

Pour le démarrage de printemps 2 utilisateurs, il doit être

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

É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/

10
VK321

J'ai simplement ajouté security.ignored=/**dans le application.properties et c'est ce qui a fait le charme.

3
codereal

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 
}
3
Ramesh Babu

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();
        }
2
Sarat Chandra

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
0
Sahil Chhabra

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 })
0
CodeShadow

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

0
Prasath Rajan

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
0
vaquar khan