본문 바로가기

카테고리 없음

[스프링 시큐리티] 기본 API & Filter 이해(1) 의존성 추가, 사용자 정의 보안 기능

의존성 추가

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