상세 컨텐츠

본문 제목

🌱👮🏿‍♀️Spring Security (1) - 스프링 시큐리티 시작하기

SPRING/spring security

by 개발하는 정복자 2022. 5. 23. 17:54

본문

Spring Security란?

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 를 설정해준다.

관련글 더보기

댓글 영역