스프링 부트 앱에서 스프링 보안 비활성화
spring 보안이 설정된 spring boot web 앱이 있습니다.잠시(필요할 때까지) 인증을 디세블로 하고 싶다.
이것을 에 추가합니다.application.properties
:
security.basic.enable: false
management.security.enabled: false
여기 저의 일부가 있습니다.
그러나 기본 보안은 아직 포함되어 있습니다.시작 시 기본 보안 비밀번호가 생성되어 있으며 HTTP 인증 프롬프트박스가 계속 표시됩니다.
my pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.test.sample</groupId>
<artifactId>navigo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.1.RELEASE</version>
</parent>
<properties>
<java.version>1.7</java.version>
<jsoup.version>1.8.3</jsoup.version>
<guava.version>18.0</guava.version>
<postgresql.version>9.3-1103-jdbc41</postgresql.version>
</properties>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
</dependencies>
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- Add Spring repositories -->
<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
보안은 WebSecurityConfig.java로 설정되어 있습니다(주석에 코멘트를 달아 무효로 하고 있습니다).
//@Configuration
//@EnableWebSecurity
//@EnableGlobalMethodSecurity(prePostEnabled = true)
//@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserDetailsService userDetailsService;
@Autowired
UserService userService;
@Autowired
private DataSource datasource;
@Override
protected void configure(HttpSecurity http) throws Exception {
// http.authorizeRequests().antMatchers("/bus/topologie", "/home")
// http.authorizeRequests().anyRequest().authenticated()
// .antMatchers("/admin/**").access("hasRole('ADMIN')").and()
// .formLogin().failureUrl("/login?error")
// .defaultSuccessUrl("/bus/topologie").loginPage("/login")
// .permitAll().and().logout()
// .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
// .logoutSuccessUrl("/login").permitAll().and().rememberMe()
// .rememberMeParameter("remember-me")
// .tokenRepository(persistentTokenRepository())
// .tokenValiditySeconds(86400).and().csrf();
}
@Bean
public PersistentTokenRepository persistentTokenRepository() {
JdbcTokenRepositoryImpl tokenRepositoryImpl = new JdbcTokenRepositoryImpl();
tokenRepositoryImpl.setDataSource(datasource);
return tokenRepositoryImpl;
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
PasswordEncoder encoder = new BCryptPasswordEncoder();
auth.userDetailsService(userDetailsService).passwordEncoder(encoder);
auth.jdbcAuthentication().dataSource(datasource);
if (!userService.userExists("user")) {
User userAdmin = new User("user", encoder.encode("password"), true);
Set<Authorities> authorities = new HashSet<Authorities>();
authorities.add(new Authorities(userAdmin,"ADMIN"));
authorities.add(new Authorities(userAdmin,"CRIP"));
authorities.add(new Authorities(userAdmin,"USER"));
userAdmin.setAuthorities(authorities);
userService.createUser(userAdmin);
}
}
}
사용하다security.ignored
속성:
security.ignored=/**
security.basic.enable: false
보안 자동 확인의 일부만 비활성화됩니다.WebSecurityConfig
계속 등록됩니다.
시작 시 생성된 기본 보안 암호가 있습니다.
노력하다Autowired
그AuthenticationManagerBuilder
:
@Override
@Autowired
protected void configure(AuthenticationManagerBuilder auth) throws Exception { ... }
이거 먹어봐.새 클래스 만들기
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeRequests().antMatchers("/").permitAll();
}
}
기본적으로 이것은 Spring에게 모든 URL에 대한 액세스를 허용하도록 지시합니다. @Configuration
스프링에게 컨피규레이션클래스임을 알립니다.
security.ignored는 스프링 부트2 이후 폐지되었습니다.
애플리케이션 클래스의 주석을 확장하기만 하면 다음과 같은 트릭을 얻을 수 있습니다.
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
이 솔루션에서는 명령줄별로 특정 프로파일을 활성화하여 보안을 완전히 활성화/비활성화할 수 있습니다.파일에 프로파일을 정의했습니다.application-nosecurity.yaml
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
그리고 나서 나는 나의 커스텀을 수정했다.WebSecurityConfigurerAdapter
추가함으로써@Profile("!nosecurity")
다음과 같습니다.
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
@Profile("!nosecurity")
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {...}
보안을 완전히 해제하려면 no security 프로파일을 지정하여 응용 프로그램을 시작하면 됩니다.
java -jar target/myApp.jar --spring.profiles.active=nosecurity
보안 자동 설정도 삭제해야 합니다.@SpringBootApplication
주석 클래스:
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration.class})
security.disable 옵션은 사용이 금지되어 있기 때문에 Boot을 사용하는 경우 클래스 플라이를 건드리지 않고 순수한 Configuration에서 실행할 수 있습니다(저에게는 환경 조작 및 ENV 변수를 사용하여 활성화할 수 있는 편리성을 제공합니다).
spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
다음 수업을 제외한 저만의 경우에만 효과가 있었습니다.
import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class}) {
// ...
}
이 방법만 사용할 수 있었습니다. 다음 주석을 응용 프로그램 클래스에 추가하고 보안을 제외했습니다.자동 설정
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
@EnableAutoConfiguration(exclude = {
SecurityAutoConfiguration.class
})
덧붙이기만 하면 된다
@SpringBootApplication(= 보안 제외)AutoConfiguration.class)
잠시 동안 maven 의존성에 대해 언급할 수 있습니다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>-->
</dependencies>
나는 잘 되었다
하다
application.properties
는 Spring2.0 Spring Boot 2.되지 않습니다.
WebSecurityConfig.java
: 의 모든 configure
and add (메서드 및 추가)
http.authorizeRequests().antMatchers("/**").permitAll();
이것에 의해, 모든 요구가 인증 없이 모든 URL 에 히트 할 수 있게 됩니다.
@profile("whatever-name-profile-to-activate-if-needed")
에서 "Security Configuration"을 합니다.WebSecurityConfigurerAdapter
security.ignored=/**
security.basic.enable: false
NB. 자동 설정 제외가 왜 작동하지 않았는지 디버깅해야 합니다.그러나 프로파일이 너무 나빠서 필요한 경우 구성 속성을 통해 다시 활성화할 수 있습니다.
application.properties 파일에서 스프링 자동 구성을 해제하려면 다음 행을 추가합니다.
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
스프링 2.0.5에서 동작합니다.
나는 받아들여진 대답이 통하지 않았다.
다중 구성의 경우 Web Security Config 클래스에 다음 항목을 추가하는 것이 효과적입니다(Order(1)가 클래스의 다른 모든 Order 주석보다 낮음을 확인합니다).
/* UNCOMMENT TO DISABLE SPRING SECURITY */
/*@Configuration
@Order(1)
public static class DisableSecurityConfigurationAdapater extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").authorizeRequests().anyRequest().permitAll();
}
}*/
언급URL : https://stackoverflow.com/questions/36280181/disabling-spring-security-in-spring-boot-app
'programing' 카테고리의 다른 글
woocommerce에서 페이지가 카테고리인지 제품인지 확인하는 방법 (0) | 2023.03.13 |
---|---|
Visual Studio 코드: 일치하는 닫기 태그를 자동으로 변경하는 방법 (0) | 2023.03.13 |
redux 툴킷을 사용할 때 "상태에서 직렬화할 수 없는 값이 검출되었습니다"라는 오류가 표시되지만 일반 redux에서는 검출되지 않습니다. (0) | 2023.03.13 |
번호 처리 방법JSON 응답의 역직렬화 시 Gson을 사용하는 FormatException (0) | 2023.03.13 |
angularjs가 포함된 두 개의 중첩 클릭 이벤트 (0) | 2023.03.13 |