본문 바로가기

패스트캠퍼스/100% 환급 챌린지_2

패스트캠퍼스 환급챌린지 30일차 : Netplix 구독형 멤버십 프로젝트로 배우는 Spring Security 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

안녕하세요 :)

오늘은 챌린지 30일차로, 어느덧 30일대에 진입을 했네요.

 

오늘 배울 내용은,

Part B. 스프링 시큐리티 심화

Ch 2. 필터 체인 이용과 커스텀 필터

"03. 다른 필터 위치에 필터 추가" 입니다.


 

오늘은 다른 필터 위치에 필터 추가하는 방법에 대해서 알아보았다. 먼저 기존 필터와 동일한 순서에 필터 추가는 기촌 필터가 수행하는 책임에 대해 다른 구현을 제공할 때, 이 기능이 필요하다. 앞에서 배웠던 addFilterBefore, addFilterAfter 와 비숫하게 이번 시간에는 addFilterAt 을 배우는 시간이다.

 

정적 키에 기반을 둔 식별에 대해 알아보자. 인증을 위한 정적 헤더 값에 기반을 둔 식별은 아래와 같은 흐름으로 진행된다.

1) 정적 키 등록 : 일반적으로는 데이터베이스나 비밀 볼트에 인증 키 값을 저장한다. 하지만 예시의 간단함을 위해 application.yml 파일에 키 값을 등록하고 활용하고자 한다.
2) @Value 로 키 값 불러오기 : 정적 키 인증을 관리하기 위해 StaticKeyAuthenticationFilter 클래스를 생성한다.
3) @Component 어노테이션을 통해 빈으로 등록한다.
4) @Value 어노테이션을 활용해 application.yml 파일에 등록한 키 값을 주입 받는다.
5) doFilter 구현 : 헤더의 값과 비교하여 동일하면 다음 필터로 전달한다.
6) addFilterAt : 의존성 주입로 StaticKeyAuthenticationFilter 를 주입 받는다. addFiterAt 으로 BasicAuthenticationFilter 위치에 staticKeyAuthenticationFilter 를 위치시킨다.

여기서 주의해야할 점은, 특정 위치에 필터를 추가해도 스프링 시큐리티는 그 위치에 필터가 하나라고 가정하지 않는다. 같은 위치에 필터를 더 추가할 수 있고, 그 경우에는 필터가 실행되는 순서를 보장하지 않는다. 절대 그 위치에 있는 필터와 대체되는 것이 아니다. 따라서 필터 체인에 필요가 없는 필터는 아예 추가되어서는 안 된다는 점이다.