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.
Может кто-нибудь, пожалуйста, сообщите мне, если мое понимание не так?
Ответы
Ответ 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