स्प्रिंग बूट सुरक्षा अक्षम करें सुरक्षा


93

जब मैं एक स्प्रिंग बूट परियोजना पर सुरक्षा को अक्षम करने के लिए Security.basic.enabled = false का उपयोग करता हूं जिसमें निम्न निर्भरताएं होती हैं:

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

मैं निम्नलिखित अपवाद देखता हूं :

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: {}

इस अपवाद को ठीक करने के लिए मुझे संपत्ति को जोड़ना पड़ा - management.security.enabled = false । मेरी समझ यह है कि जब एक्ट्यूएटर क्लासपाथ में होता है, तो सिक्योरिटी को अक्षम करने के लिए दोनों Security.basic.enabled = false और management.security.enabled = false को सेट किया जाना चाहिए।

क्या कोई मुझे बता सकता है कि क्या मेरी समझ गलत है?


1
अगर आपको हर चीज को निष्क्रिय करना है तो आपको अपने वर्गपथ पर सुरक्षा की आवश्यकता क्यों है? वैसे भी, आपका स्टैक ट्रेस अधूरा है इसलिए यह जानने का कोई तरीका नहीं है कि ऐप को शुरू करने से कौन रोक रहा था। मुझे उम्मीद है कि यह शुरू हो जाएगा, लेकिन एक्ट्यूएटर एंडपॉइंट्स को तब तक सुरक्षित रहना चाहिए जब तक आप उन्हें स्पष्ट रूप से खोल नहीं देते।
डेव सिरेर

@DaveSyer मैं अस्थायी रूप से सुरक्षा को अक्षम करना चाहूंगा और मेरे एप्लिकेशन कोड को सुरक्षा जार को काम करने के लिए संदर्भित करता है।
Stackee007

आपने अभी भी यह देखने के लिए पर्याप्त जानकारी पोस्ट नहीं की है कि ऐप क्यों शुरू नहीं हो रहा है। एक पूर्ण स्टैक ट्रेस एक शुरुआत होगी।
डेव सीर

2
@DaveSyer एक कारण वसंत-सेकंड- oauth2 का प्रबंधन करने वाला एक माइक्रो सर्विस होगा ClientDetails। आपके पास वसंत-सुरक्षा का एक सकर्मक आयात होगा लेकिन शायद आपकी सेवा में मूल स्थिति नहीं चाहिए।
डिर्क लाचोव्स्की

जवाबों:


79

यह भी लगता है application-dev.propertiesकि ठीक काम करने के लिए एक फ़ाइल बनाई जा रही है जिसमें शामिल हैं:

security.basic.enabled=false
management.security.enabled=false

यदि आप devप्रोफ़ाइल के साथ अपना स्प्रिंग बूट ऐप शुरू करते हैं , तो आपको लॉग ऑन करने की आवश्यकता नहीं है।


1
यदि आप प्रबंधन के साथ सुरक्षा को अक्षम करते हैं, तो सुरक्षा
.basic.enabled

मैंने भी जोड़ा security.ignored=/**तो काम किया। stackoverflow.com/a/36280413/3291867
mojtab23

11
अब यह पदावनत हो गया है!
ईगल_ईये

6
वास्तव में। देखें spring.io/blog/2017/09/15/... प्रतिवाद कि वसंत बूट में हुआ 2 के बारे में अधिक जानकारी के लिए
विम Deblauwe

73

यदि आपके पास अपने पैकेज में स्प्रिंग-बूट-एक्ट्यूएटर है, तो आपको निम्नलिखित जोड़ना चाहिए

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

पुराने स्प्रिंग-बूट के साथ, कक्षा को बुलाया गया था ManagementSecurityAutoConfiguration

नए संस्करणों में यह बदल गया है

@SpringBootApplication(exclude = {
        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
        org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class}
        )

39

यदि आपको एक निर्भरता के रूप में सुरक्षा की आवश्यकता है, लेकिन आप इसे अपने लिए कॉन्फ़िगर करने के लिए स्प्रिंग बूट नहीं चाहते, तो आप इस बहिष्करण का उपयोग कर सकते हैं:

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

24

के लिए स्प्रिंग बूट 2 निम्नलिखित गुण में पदावनत कर रहे हैं application.yml विन्यास

  security.basic.enabled: false
  management.security.enabled: false

स्प्रिंट बूट 2 के लिए सुरक्षा को अक्षम करने के लिए बेसिक + एक्ट्यूएटर सिक्योरिटी निम्नलिखित गुणों का उपयोग एनोटेशन बेस्ड एक्सक्लूजन (@EnableAutoConfiguration.class (Managemente = {SecurityAutoConfoncuration.class), ManagementWebSecurityAutoConfiguration.class}) के बजाय application.yml फ़ाइल में किया जा सकता है।

  spring:
    autoconfigure:
      exclude[0]: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
      exclude[1]: org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration

के लिए application.properties वाक्य रचना की तरह होगा

spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

21

स्प्रिंग बूट 2 उपयोगकर्ताओं के लिए यह होना चाहिए

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

1
स्प्रिंग बूट 2.0 में मैनेजमेंटवेबसिटीसिटीऑटोऑनफिगरेशन का क्या हुआ
वियान झिंगडे

आपको अभी भी अपने @EnableWebSecurityएनोटेशन पर टिप्पणी करनी होगी
विक्टर पेटिट

11

चरण 1: टिप्पणी एनोटेशन @EnableWebSecurity अपने सुरक्षा कॉन्फ़िगरेशन में

//@EnableWebSecurity

चरण 2: इसे अपने एप्लिकेशन में जोड़ें । अनुभव फ़ाइल।

security.ignored=/**
spring.security.enabled=false
management.security.enabled=false
security.basic.enabled=false

अधिक जानकारी के लिए यहां देखें: http://codelocation.com/how-to-turn-on-and-off-spring-security-in-spring-boot-application/


अफसोस की बात है, यह काम नहीं करता है। एक बार जब मैं स्प्रिंग-बूट शुरू करता हूं, तो यह डिफ़ॉल्ट सुरक्षा फ़िल्टर श्रृंखला बनाएगा: 2020-11-29 18: 48: 58.095 INFO 30744 --- [पुनः आरंभ करें] ossweb.DefaultSecurityFilterChain: फ़िल्टर श्रृंखला बनाना: कोई भी अनुरोध, [org.springframework]। सुरक्षा .web.context। csrf.CsrfFilter@71b72226, org.springframework.security ....
विले मिएक-ओजा

6

यदि आप @WebMvcTestअपने परीक्षण वर्ग में एनोटेशन का उपयोग कर रहे हैं

@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
@TestPropertySource(properties = {"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration"})

आपकी मदद नहीं करता है।

आप यहां सुरक्षा अक्षम कर सकते हैं

@WebMvcTest(secure = false)

5

अपने कोड में निम्न वर्ग जोड़ें

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

}

और application.properties के इंसी जोड़ते हैं

security.ignored=/**
security.basic.enabled=false
management.security.enabled=false

4

उत्तर नीचे के रूप में WebSecurityConfigurerAdapter में सभी अनुरोधों को अनुमति देने के लिए है।

आप इसे मौजूदा कक्षा में या नई कक्षा में कर सकते हैं।

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll();
    }

कृपया ध्यान दें: यदि चिकित्सा मौजूदा GlobalMethodSecurityConfiguration वर्ग है, तो आपको इसे अक्षम करना होगा।


काम नहीं किया। लेकिन यह एक मेरे लिए काम करता है stackoverflow.com/questions/23894010/…
रवि एमसीए

हाय रावी, आपके समाधान के अनुसार, इसे csrf को "http.csrf.disable ()" के रूप में उत्पादन में अक्षम करने की अनुशंसा नहीं की गई है। क्या आपको POST, आदि कॉल के लिए CSRF इश्यू मिला है?
U_R_Naveen UR_Naveen

3

एंटीमैचर्स ("/") का उपयोग करके सब कुछ तक पहुंच की अनुमति दें

     protected void configure(HttpSecurity http) throws Exception {
            System.out.println("configure");
                    http.csrf().disable();
                    http.authorizeRequests().antMatchers("/").permitAll();
        }

इसके साथ समस्या यह है, पहुंच और सुरक्षा एक ही बात नहीं है। आप सब कुछ तक पहुंच की अनुमति दे सकते हैं, लेकिन इससे सुरक्षा बंद नहीं होती है। उदाहरण के लिए, दुर्भावनापूर्ण दिखने वाले तार अभी भी पकड़े गए हैं।
विले मीक्क-ओजा 16

3

मैं बस जोड़ा security.ignored=/**में application.properties, और कहा कि आकर्षण था।


इसका मतलब है कि स्वचालित सुरक्षा तंत्र अभी भी लागू है लेकिन सभी रास्तों की अनदेखी कर रहा है। जिन चीजों की आवश्यकता नहीं है उन्हें रखने में मैं सहज नहीं
रहूँगा

2

सुरक्षा से बचने के लिए आप एनोटेशन का उपयोग कर सकते हैं। कॉन्फ़िगर वर्ग के शीर्ष पर इस एनोटेशन का उपयोग करें:

@EnableWebSecurity

उदाहरण के लिए:

@EnableWebSecurity
@Configuration
public class AuthFilter{
   // configured method 
}

17
@EnableWebSecurityवेब सुरक्षा को अक्षम क्यों करना चाहिए ?
lilalinux

कम से कम, यह स्प्रिंग बूट में डिफ़ॉल्ट सुरक्षा कॉन्फ़िगरेशन को निष्क्रिय कर देता है
amseager

2

आपको स्प्रिंगबुट डिफ़ॉल्ट सुरक्षा को बायपास करने के लिए इस प्रविष्टि को application.properties में जोड़ना होगा

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration

फिर कोई प्रमाणीकरण बॉक्स नहीं होगा। ओट्र्स, क्रेडेंशियल्स हैं: - userऔर 99b962fa-1848-4201-ae67-580bdeae87e9 (पासवर्ड बेतरतीब ढंग से उत्पन्न)

Note: my springBootVersion = '1.5.14.RELEASE'


इसके बिना, security.basic.enabled = false management.security.enabled = false security.ignored = / ** पर्याप्त नहीं है क्या यह सामान्य है?
बिल्लाघन

2

आप निम्न चरणों का पालन करके अपनी परियोजना में टॉगल वसंत सुरक्षा को कॉन्फ़िगर कर सकते हैं :

चरण 1:@ConditionalOnProperty अपने SecurityConfig वर्ग के शीर्ष पर एक एनोटेशन जोड़ें । नीचे देखें:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity (prePostEnabled = true)
@ConditionalOnProperty (name = "myproject.security.enabled", havingValue = "true", matchIfMissing = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
   // your security config
}

चरण 2: अपने application.propertiesया application.ymlफ़ाइल के लिए निम्नलिखित विन्यास जोड़ें ।

application.properties

security.ignored=/**
myproject.security.enabled=false

या

application.yml

security:
  ignored: /**

myproject:
  security:
    enabled: false

क्या केवल एक संपत्ति का उपयोग करना संभव है?
14

@wakedeer आपकी टिप्पणी गूढ़ लगती है, क्या आप कृपया विस्तार से बता सकते हैं?
साहिल छाबड़ा

मेरा मतलब है कि सुरक्षा।
नियोजित

2

केवल एक चीज जो मेरे लिए काम करती है:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().authorizeRequests().anyRequest().permitAll();
    }

तथा

security.ignored=/**

हो सकता है कि गुणों वाला हिस्सा बेमानी हो या कोड में किया जा सकता है, लेकिन प्रयोग करने का समय नहीं था। वैसे भी अस्थायी है।


1

निर्भरता या कोड परिवर्तन के बिना स्प्रिंग बूट 2 के लिए सबसे आसान तरीका है:

spring:
  autoconfigure:
    exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

2
यह स्प्रिंग बूट v2.2.2 के साथ काम नहीं कर रहा है। कृपया जारी रखें
Pra_A

0

नीचे की पंक्तियों को अपने मुख्य ऐप में जोड़ें।

यदि आप एक्टिविटी का उपयोग नहीं कर रहे हैं तो org.activiti.spring.boot.SecurityAutoConfiguration.class निकालें।

इसी तरह, यदि आप स्प्रिंग-बूट-एक्ट्यूएटर का उपयोग नहीं कर रहे हैं, तो एक्चुएटर के लिए एक हटा दें।

@EnableAutoConfiguration(exclude = {
org.activiti.spring.boot.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class,
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class })

0

जैसा कि पहले कई समाधानों में टिप्पणी के माध्यम से सुरक्षा को अक्षम करने का उल्लेख किया गया है

@EnableWebSecurity

एनोटेशन और अन्य Application.properties या yml में गुणों के माध्यम से है। लेकिन उन गुणों को नवीनतम स्प्रिंग बूट संस्करण में पदावनत दिखाया जा रहा है।

इसलिए, मैं आपके एप्लिकेशन- dev.properties या एप्लिकेशन-dev.yml में डिफ़ॉल्ट उपयोगकर्ता नाम और पासवर्ड को कॉन्फ़िगर करने के लिए एक और दृष्टिकोण साझा करना चाहूंगा और उन्हें विकास के वातावरण में स्वैगर और आदि में लॉगिन करने के लिए उपयोग करूंगा।

spring.security.user.name=admin
spring.security.user.password=admin

तो, यह दृष्टिकोण आपको कुछ प्रकार की सुरक्षा भी प्रदान करेगा और आप इस जानकारी को अपनी विकास टीम के साथ साझा कर सकते हैं। आप उपयोगकर्ता भूमिकाओं को भी कॉन्फ़िगर कर सकते हैं, लेकिन इसकी आवश्यकता विकास के स्तर में नहीं है।


-3

मैंने Application.yml में सेटिंग्स को नीचे जोड़ा और ठीक काम किया।

security:
    route-patterns-to-be-skipped:
      - /**/*

इसे security.route-paterns-to-be-skipped=/**/*application.properties के रूप में परिवर्तित किया जा सकता है


1
यह संपत्ति बिल्कुल मौजूद नहीं है।
Drakes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.