Подтвердить что ты не робот

Spring boot Безопасность Отключить безопасность

Когда я использую security.basic.enabled = false для отключения безопасности в проекте загрузки Spring, который имеет следующие зависимости:

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

Может кто-нибудь, пожалуйста, сообщите мне, если мое понимание не так?

4b9b3361

Ответ 1

То, что также прекрасно работает, - это создать файл application-dev.properties, который содержит:

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

Если вы затем запустите приложение Spring Boot с профилем dev, вам не нужно входить в систему.

Ответ 2

Если в вашей упаковке есть пружинный привод, вы должны добавить следующее

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

В более старых версиях Spring-boot этот класс назывался ManagementSecurityAutoConfiguration.

В более новых версиях это изменилось на

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

Ответ 3

Если вам нужна безопасность как зависимость, но не хотите, чтобы Spring Boot настраивал ее для вас, вы можете использовать это исключение:

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

Ответ 4

Для пользователей весенней загрузки 2 это должно быть

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

Ответ 5

Шаг 1: Комментируйте аннотацию @EnableWebSecurity в вашей конфигурации безопасности

//@EnableWebSecurity

Шаг 2. Добавьте это в свой файл application.properties.

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/

Ответ 6

Разрешить доступ ко всем, используя antMatchers ( "/" )

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

Ответ 7

Я просто добавил security.ignored=/** в application.properties, и это привлекло внимание.

Ответ 8

Во избежание безопасности вы можете использовать аннотации. Используйте эту аннотацию поверх класса configure:

@EnableWebSecurity

Например:

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

Ответ 9

Вам нужно добавить эту запись в application.properties, чтобы обойти Springboot Default Security

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

Тогда не будет никакой коробки аутентификации. otrws, учетные данные: - user и 99b962fa-1848-4201-ae67-580bdeae87e9 (случайно сгенерированный пароль)

Note: my springBootVersion = '1.5.14.RELEASE'

Ответ 10

Добавьте следующий класс в свой код

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

Ответ 11

Добавьте приведенные ниже строки в основное приложение.

Удалить org.activiti.spring.boot.SecurityAutoConfiguration.class, если вы не используете activiti.

Аналогично, удалите его для привода, если вы не используете spring -boot-actuator.

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

Ответ 12

Вы можете настроить переключение безопасности Spring в вашем проекте, выполнив следующие 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

Ответ 13

Я добавил ниже настройки в application.yml и работал нормально.

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

это можно преобразовать в security.route-paterns-to-be-skipped=/**/* для application.properties

Ответ 14

Как упоминалось ранее, несколько решений упоминали отключение безопасности путем комментирования

@EnableWebSecurity

аннотации и прочее - через свойства в application.properties или yml. Но эти свойства отображаются как устаревшие в последней весенней загрузочной версии.

Итак, я хотел бы поделиться другим подходом для настройки имени пользователя и пароля по умолчанию в ваших application-dev.properties или application-dev.yml и использовать их для входа в swagger и т.д. В среда разработки.

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

Итак, этот подход также обеспечит некоторую безопасность, и вы сможете поделиться этой информацией с вашей командой разработчиков. Вы также можете настроить роли пользователей, но это не требуется на уровне разработки.

Ответ 15

Для Spring Boot 2 следующие свойства устарели в application.yml конфигурации

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

Чтобы отключить защиту для Sprint Boot 2 Basic + Actuator Security, можно использовать следующие свойства в файле application.yml вместо исключения на основе аннотаций (@EnableAutoConfiguration (exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class}))

  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