의존성 추가
Spring Security 의존성을 추가하면 다음 작업이 수행된다.
- 서버가 기동 되면서 Spring Security 의 초기화 작업과 보안 설정이 이루어진다.
- 별도의 설정이나 코드 구현 없이도 기본적인 웹 보안 기능이 시스템에 연동된다.
기본적인 웹 보안 기능이란?
- 모든 요청에서 인증을 받아야만 Application 자원에 접근할 수 있게 된다.
- Form, HttpBasic 2가지 인증 방식을 제공한다.
- 기본 로그인 페이지를 제공한다.
- 기본 계정 1개를 제공한다.
- Username=user
- Pwd=Random문자열 (로그에서 확인 가능)
기본적인 웹 보안 기능으론 부족하기 때문에 다음과 같은 세부적인 추가 작업이 필요하다.
- 계정 추가 why? 기본 계정이 1개 밖에 없으므로
- 권한 추가 why? 계정 별로 자원을 제한할 수 있도록
- DB 연동
- 기타
사용자 정의 보안 기능
보안 기능을 제공하는 주요 클래스들은 다음과 같다.
- WebSecurityConfigurerAdapter
- 스프링 시큐리티 시큐리티 의존성을 추가했을 때 핵심 클래스로서 웹 보안 기능 초기화를 담당한다.
- HttpSecurity 인스턴스를 생성하여 세부적인 보안 기능을 설정할 수 있는 API 들을 사용한다.
- 즉, 이를 상속받아 임의의 클래스를 만들어 사용자 정의 보안 기능을 구현할 수 있다.
사용자 정의 보안 기능 클래스 예시
@Configuration
@EnableWebSecurity // 1
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated() // 2
http
.formLogin(); // 3
}
}
- @EnableWebSecurity
- 보안 설정을 import 해 오는 역할
- http.authorizeRequests().anyRequest().authenticated()
- 어떠한 요청에도 인가를 받도록 설정
- http.formLogin()
- 폼 로그인 방식으로 인증을 하도록 설정
- 환경 설정 파일에 직접 인증, 인가될 계정 정보를 정의할 수 있다.
# application.yml
spring.security.user.name=user
spring.security.user.password=1234