1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (186)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (26)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON

논리적 코딩

스프링 시큐리티 ① : 기본 설정
🌱 SPRING/스프링 인 액션

스프링 시큐리티 ① : 기본 설정

2018. 8. 1. 13:25

스프링 시큐리티 ① : 기본 설정

스프링 시큐리티는 필터 기반으로 인증과 권한을 통해 강력한 보안을 제공한다. 그 중 DelegatingFilterProxy 는 스프링 애플리케이션 컨텍스트에 위임된 필터 빈을 처리하기 위한 프록시 필터로써 스프링 프레임워크 기반의 웹 애플리케이션에서 서블릿 필터 라이프 사이클과 연계해 스프링 빈 의존성을 서블릿 필터에 바인딩하는데 사용된다.


아래 기본 설정을 해두면 스프링에서 제공하는 10개의 시큐리티 필터가 자동으로 등록된다.


이 때 10개의 필터는 아래와 같다.

00 시큐리티 필터

필터

설명

SecurityContextPersistenceFilter

SecurityContextRepository에서 SecurityContext를 로드하고 저장하는 일을 담당함

LogoutFilter

로그아웃 URL로 지정된 가상URL에 대한 요청을 감시하고 매칭되는 요청이 있으면 사용자를 로그아웃시킴

UsernamePasswordAuthenticationFilter

사용자명과 비밀번호로 이뤄진 폼기반 인증에 사용하는 가상 URL요청을 감시하고 요청이 있으면 사용자의 인증을 진행함

DefaultLoginPageGeneratingFilter

폼기반 또는 OpenID 기반 인증에 사용하는 가상URL에 대한 요청을 감시하고 로그인 폼 기능을 수행하는데 필요한 HTML을 생성함

BasicAuthenticationFilter

HTTP 기본 인증 헤더를 감시하고 이를 처리함

RequestCacheAwareFilter

로그인 성공 이후 인증 요청에 의해 가로채어진 사용자의 원래 요청을 재구성하는데 사용됨 SecurityContextHolderAwareRequestFilter HttpServletRequest를 HttpServletRequestWrapper를 상속하는 하위 클래스(SecurityContextHolderAwareRequestWrapper)로 감싸서 필터 체인상 하단에 위치한 요청 프로세서에 추가 컨텍스트를 제공함

AnonymousAuthenticationFilter

이 필터가 호출되는 시점까지 사용자가 아직 인증을 받지 못했다면 요청 관련 인증 토큰에서 사용자가 익명 사용자로 나타나게 됨

SessionManagementFilter

인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹되도록 도움

ExceptionTranslationFilter

이 필터는 보호된 요청을 처리하는 동안 발생할 수 있는 기대한 예외의 기본 라우팅과 위임을 처리함

FilterSecurityInterceptor

이 필터는 권한부여와 관련한 결정을 AccessDecisionManager에게 위임해 권한부여 결정 및 접근 제어 결정을 쉽게 만들어 줌


01 XML 설정

1
2
3
4
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Colored by Color Scripter
cs

DelegatingFilterProxy 위임을 위해 필요로 하는 빈의 이름이 springSecurityFilterChain 이기 때문에 반드시 filter-name 을 springSecurityFilterChain 로 지정해주어야 한다.


02 JAVA 설정

1
2
3
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
 
public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer { }
cs

AbstractSecurityWebApplicationInitializer 를 상속받는 클래스를 만들어주기만 하면 된다.


XML로 설정을 하던 Java로 설정을 하던 애플리케이션으로 들어오는 요청을 가로채 ID가 springSecurityFilterChain인 빈에 위임시킨다.


03 스프링 MVC 웹 보안 활성화

1
2
3
@Configuration
@EnableWebMVCSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {  }
cs

@EnableWebMVCSecurity 어노테이션으로 간단하게 시큐리티 웹 보안을 활성화 시킬 수 있다.



참고 : Spring Security와 보안, 첫번째 이야기 (http://www.nextree.co.kr/p1886/)


 


 이 포스트는 스프링 인 액션을 읽고 개인적으로 필요하다고 생각되는 내용을 정리한 포스트입니다.

일부 내용, 소스코드는 스프링 인 액션의 내용일 수 있습니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'🌱 SPRING > 스프링 인 액션' 카테고리의 다른 글

스프링 시큐리티 ③ : 사용자 저장소  (0) 2018.09.16
스프링 시큐리티 ② : 상세 설정하기  (1) 2018.09.16
예외 처리하기  (0) 2018.07.31
멀티 파트 폼 데이터  (0) 2018.06.13
자바 설정으로 Filter 등록하기  (1) 2018.06.13
    '🌱 SPRING/스프링 인 액션' 카테고리의 다른 글
    • 스프링 시큐리티 ③ : 사용자 저장소
    • 스프링 시큐리티 ② : 상세 설정하기
    • 예외 처리하기
    • 멀티 파트 폼 데이터
    1HOON
    1HOON

    티스토리툴바