Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다.
'인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리한다. Filter는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Interceptor는 Dispatcher와 Controller사이에 위치한다는 점에서 적용 시기의 차이가 있다. Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있다.
출처: https://mangkyu.tistory.com/76 [MangKyu's Diary]
의존성 주입
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
}
SecurityConfig 기본 구성하기
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests() // 보안 시작
.anyRequest().authenticated() // 어떤 요청이든 인증 처리함
;
}
👉🏾 @Configuration
설정파일을 만들기 위한 애노테이션 or Bean을 등록하기 위한 애노테이션. 가독성 때문에도 사용하지만 설정파일은 인스턴스가 많이 생성될 필요가 없기 때문에 싱글톤 패턴을 유지해준다.
👉🏾 @EnableWebSecurity
SpringSecurityFilterChain이 자동으로 포함되고 내부에 기본적인 웹 보안이 적용되어 있다
👉🏾 WebSecurityConfigurerAdapter.class
스프링 시큐리티가 초기화 되면서 WebSecurityConfigurerAdapter.class 가 실행되고 초기화 작업에서 HttpSeucrity.class를 생성해서 대략 11개 정도의 API를 호출하면서 초기화를 하고 있다. 그후 configure method가 추가적인 설정(formLogin, 모든 경로에 인증시키기)을 하고 있다.
yml 설정
security:
user:
name: user
password: 1234
앞으로의 시큐리티 인증 테스트시 사용할 임의의 name과 password 를 설정해준다.
🌱👮🏿♀️Spring Security (4) - RememberMe 인증 (1) | 2022.05.24 |
---|---|
🌱👮🏿♀️Spring Security (3) - Logout 처리, LogoutFilter 동작 순서 (0) | 2022.05.24 |
🌱👮🏿♀️Spring Security (2) - Login Form 인증, FormLoginFilter 동작 순서 (0) | 2022.05.23 |
댓글 영역