*스프링시큐리티설정 전 프로젝트 기본셋팅*
1. pom.xml에 의존성 추가
<!-- Spring Security Core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring Security Config -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring Security Web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring Security JSP Custom Tags -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${spring.version}</version>
</dependency>
2. Spring Security 설정파일 작성
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
//AbstractSecurityWebApplicationInitializer를 상속받는 클래스를 작성해야 스프링 시큐리티 필터들이 활성화된다.
public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
}
SecurityWebApplicationInitializer.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// /webjars/** 경로에 대한 요청은 인증/인가 처리하지 않도록 무시 (** = 모든경로)
//아래 메소드는 인증/인가가 필요 없는 경로를 설정할 필요가 있을 때 오버라이딩
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/webjars/**");
}
//아래 메소드는 인증/인가에 대한 설정
// /, /main에 대한 요청은 누구나 할 수 있지만,
// 그 외의 요청은 모두 인증 후 접근 가능
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/", "/main").permitAll()
.anyRequest().authenticated();
}
//패스워드 인코더를 빈으로 등록.
//암호를 인코딩하거나 인코딩된 암호와 사용자가 입력한 암호가 같은지 확인할때 사용
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder();
}
}
SecurityConfig.java
스프링 시큐리티를 이용해 로그인/로그아웃/인증/인가 등을 처리하기 위한 설정 파일
- @EnableWebSecurity가 붙어 있을 경우 스프링 시큐리티를 구성하는 기본적인 빈(Bean)들을 자동으로 구성해준다.
- WebSecurityConfigurerAdapter를 상속받으면, 특정 메소드를 오버라이딩 함으로써 좀 더 손쉽게 설정할 수 있다.
3. 보안 설정 테스트 컨트롤러 작성
@Controller
public class MainController {
@RequestMapping("/main")
@ResponseBody
public String main() {
return "main page";
}
@RequestMapping("/securepage")
@ResponseBody
public String securitypage() {
return "secure page";
}
}
http://localhost:8080/securityexam/main 실행모습
http://localhost:8080/securityexam/securepage 요청시
= 인증을 거쳐야 접근이 가능함
출처: https://ivory-room.tistory.com/19?category=875739 [개발로 자기개발]
'study > java' 카테고리의 다른 글
[Spring Security] DB정보로 로그인/로그아웃하기 (2) (0) | 2021.12.30 |
---|---|
[Spring Security] DB정보로 로그인/로그아웃하기 (1) (0) | 2021.12.30 |
[Spring Security] 스프링 시큐리티 개념 (0) | 2021.12.30 |
[JSP] DB연동시 사용되는 클래스와 메소드 정리,. (0) | 2021.12.30 |
[JSP] JSP DB 연동(2) (0) | 2021.12.30 |