스프링 부트 보안 비활성화
security.basic.enabled=false를 사용하여 다음과 같은 종속성을 가진 Spring Boot 프로젝트에서 보안을 비활성화하는 경우:
<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를 모두 설정해야 합니다.
혹시 제가 잘못 이해한 부분이 있으면 알려주실 수 있나요?
패키지에 spring-boot-actuator가 포함되어 있는 경우 다음 항목을 추가해야 합니다.
@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}
)
갱신하다
리액티브한 애플리케이션의 경우는, 다음의 클래스를 제외할 수 있습니다.
@SpringBootApplication(exclude = {ReactiveSecurityAutoConfiguration.class, ReactiveManagementWebSecurityAutoConfiguration.class })
, 은, 「 」 「 」 「 」 「 」 「 」 「 」 「 」 「 」를 작성하는 것입니다.application-dev.properties
다음을 포함합니다.
security.basic.enabled=false
management.security.enabled=false
후 Spring 을 "Spring Boot"로 dev
프로파일은 로그온할 필요가 없습니다.
Spring Boot 2의 경우 application.yml 구성에서는 다음 속성이 사용되지 않습니다.
security.basic.enabled: false
management.security.enabled: false
Sprint Boot 2 Basic + Actuator Security 보안을 비활성화하려면 주석 기반 제외 대신 application.yml 파일에서 다음 속성을 사용할 수 있습니다(@Enable).자동 구성(= {보안 제외)AutoConfiguration.class, Management Web SecurityAutoConfiguration.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
의존관계로서 시큐러티가 필요하지만, Spring Boot로 시큐러티가 설정되는 것을 원하지 않는 경우는, 다음의 제외를 사용할 수 있습니다.
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class
})
스프링 부트 2 사용자의 경우,
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})
스텝 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/ 를 참조해 주세요.
코드에 다음 클래스 추가
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의 insie는
security.ignored=/**
security.basic.enabled=false
management.security.enabled=false
답변은 다음과 같이 Web Security Configurer Adapter의 모든 요청을 허용하는 것입니다.
기존 수업이나 새 수업에서 이 작업을 수행할 수 있습니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll();
}
주의: GlobalMethodSecurityConfiguration 클래스가 존재하는 경우 비활성화해야 합니다.
「 」를 사용하고 @WebMvcTest
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
@TestPropertySource(properties = {"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration"})
도움이 안 돼요
여기서 보안을 해제할 수 있습니다.
@WebMvcTest(secure = false)
antMatchers("/")를 사용하여 모든 항목에 대한 액세스 허용
protected void configure(HttpSecurity http) throws Exception {
System.out.println("configure");
http.csrf().disable();
http.authorizeRequests().antMatchers("/").permitAll();
}
Spring Boot 2에서 의존관계나 코드를 변경하지 않는 가장 쉬운 방법은 다음과 같습니다.
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
덧붙였습니다.security.ignored=/**
application.properties
그리고 그게 매력적이죠
나한테 효과가 있었던 건
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests().anyRequest().permitAll();
}
그리고.
security.ignored=/**
속성 부분이 중복되거나 코드로 수행될 수 있지만 실험할 시간이 없었을 수 있습니다.어쨌든 일시적이야.
Springboot Default Security를 바이패스하려면 이 엔트리를 application.properties에 추가해야 합니다.
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
그러면 인증 상자가 없습니다. 자격 증명은 다음과 같습니다.user
★★★★★★★★★★★★★★★★★」99b962fa-1848-4201-ae67-580bdeae87e9
으로 생성됩니다 (비밀번호는 랜덤으로 생성됩니다)
Note: my springBootVersion = '1.5.14.RELEASE'
다음 2단계를 수행하여 프로젝트에서 스프링 보안을 전환하도록 설정할 수 있습니다.
순서 1: 추가@ConditionalOnProperty
[ Security Config ]는, 「Security Config」를 참조해 주세요.이하를 참조해 주세요.
@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
filename을 클릭합니다.
application.properties
security.ignored=/**
myproject.security.enabled=false
또는
application.yml
security:
ignored: /**
myproject:
security:
enabled: false
보안을 피하기 위해 주석을 사용할 수 있습니다.구성 클래스의 맨 위에 다음 주석을 사용합니다.
@EnableWebSecurity
예를 들어 다음과 같습니다.
@EnableWebSecurity
@Configuration
public class AuthFilter{
// configured method
}
앞서 설명한 바와 같이 코멘트를 통해 보안을 해제하는 여러 솔루션에서
@Enable Web Security
주석 및 기타는 application.properties 또는 yml의 속성을 통해 이루어집니다.그러나 이러한 속성은 최신 스프링 부트 버전에서 사용되지 않는 것으로 표시됩니다.
따라서 어플리케이션 dev.properties 또는 application-dev.yml에서 기본 사용자 이름과 비밀번호를 설정하고 이를 사용하여 개발 환경에서 swagger 로그인 등에 사용할 수 있는 다른 접근 방식을 공유하고자 합니다.
spring.security.user.name=admin
spring.security.user.password=admin
이 접근방식은 보안도 제공합니다.또한 이 정보를 개발팀과 공유할 수 있습니다.사용자 역할도 구성할 수 있지만 개발 수준에서는 필요하지 않습니다.
당신의 메인 앱에 다음 행을 추가하세요.
org.activiti.spring.boot를 삭제합니다.보안.activiti를 사용하지 않는 경우 AutoConfiguration.class를 선택합니다.
마찬가지로 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 })
및4에서는 이 설정을 Gradle v2.4에 추가하여 할 수 .4에서는 이 구성을 에 추가하여 스프링 보안을 완전히 배제할 수 있습니다.build.gradle
configurations.all {
exclude group:"org.springframework.boot", module: "spring-boot-starter-security"
}
Spring Boot 2.7.3을 2.7@EnableAutoConfiguration(exclude = {})
에러를 생성했습니다.exclude
에서 사용되는 속성@SpringBootApplication
주석입니다.
Spring Security를 완전히 비활성화했을 때 도움이 된 것은 다음과 같습니다.
@SpringBootApplication(
exclude = {
SecurityAutoConfiguration.class,
ManagementWebSecurityAutoConfiguration.class
})
public class GeoServiceApplication {
public static void main(String[] args) {
SpringApplication.run(GeoServiceApplication.class, args);
}
}
제외하려고 했는데SecurityAutoConfiguration.class
에러가 발생했습니다.HttpSecurity
정의되는 콩ManagementWebSecurityAutoConfiguration.class
.
Spring 2.6.0에서는 이것이 도움이 되었습니다.
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.SecurityDataConfiguration.class
})
또한 pom.xml의 의존관계를 삭제해야 했습니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
스프링 보안 5.7.0-M2WebSecurityConfigurerAdapter
더 이상 사용되지 않습니다.Spring Security 팀은 사용자에게 컴포넌트 기반의 보안 구성으로 이행할 것을 권장합니다.
package com.may.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/**").permitAll(); // config to permit all requests
return http.build();
}
@Bean
public AuthenticationManager authenticationManager() { // to delete default username and password that is printed in the log every time, you can provide here any auth manager (InMemoryAuthenticationManager, etc) as you need
return authentication -> {
throw new UnsupportedOperationException();
};
}
}
기타 예는 다음과 같습니다.
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter
최신 봄 2.7.x에서 두 개의 클래스를 만들고 보안 활성화/비활성화를 위해 응용 프로그램 프로파일에서 DISABLE_KEYLOAK_AUDIT_PROPERTY = 'your key'를 설정합니다.
public static final String DISABLE_KEYCLOAK_AUDIT_PROPERTY = "enable_security";
@EnableAutoConfiguration(exclude =
{org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class
})
@Configuration
@ConditionalOnProperty(name = DISABLE_KEYCLOAK_AUDIT_PROPERTY, havingValue = "true")
static
class DisableSecurityConfig {
}
@Configuration
@ConditionalOnProperty(name = DISABLE_KEYCLOAK_AUDIT_PROPERTY, havingValue = "false")
@Import({KeycloakSecurityConfig.class, KeycloakConfig.class})
static
class EnableSecurityConfig {
}
예를 들어 application.yml에서 사용합니다.
enable_security: true
application.yml에 아래 설정을 추가하여 정상적으로 동작하였습니다.
security:
route-patterns-to-be-skipped:
- /**/*
이것은 로 변환할 수 있다.security.route-paterns-to-be-skipped=/**/*
application.properties의 경우
언급URL : https://stackoverflow.com/questions/23894010/spring-boot-security-disable-security
'source' 카테고리의 다른 글
Typescript 컴파일러가 컴파일된 js를 다른 디렉토리에 출력하도록 하려면 어떻게 해야 합니까? (0) | 2023.03.13 |
---|---|
Angular.js를 사용하여 영상을 사전 로드하는 가장 좋은 방법 (0) | 2023.03.13 |
Angular에서 "취소"를 처리하는 패턴이 있습니까?JS 모달 대화 상자? (0) | 2023.03.08 |
WordPress: 작성자 상자에 표시되지 않는 사용자 지정 사용자 (0) | 2023.03.08 |
JWT 토큰보안에 의한 스프링부트 유닛 테스트 (0) | 2023.03.08 |