Spring Security는 Spring 기반의 애플리케이션의 보안을 담당하는 Spring 하위 Framework이다.
주로, 인증과 인가에 대한 부분을 filter로 처리하고 있다.
filter는 Dispatcher Servlet으로 가기 전에 먼저 적용되므로, 가장 먼저 URL요청을 받게 된다는 특징을 가지고 있다.
보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 관련 로직을 작성하지 않아도 된다는 편리성을 제공한다.
→ Spring Security는 세션-쿠키 기반 인증방법이다.
Spring Security를 이용해서 SpringFilterChaindp JWT관련 filter를 추가해서 사용했었다.
GenericFilterBean을 상속받은 JwtAuthenticationFilter에 있는 doFilter 메소드를 구현해주었다.
이 메로드는 토큰에서 이메일 값을 추출하고, 토큰을 생성하여 Provider에게 인증을 요청하는 역할을 한다.
인증을 마쳤다면, Authentication 객체를 SecurityContext에 저장한다.
토큰 생성 및 인증에 필요한 메소드를 제공한다.
나는 프로젝트에서 토큰 생성 / 토큰 정보 추출 / 토큰 정보 검증 / 토큰 파싱과 같은 메소드를 구현했었다.
그리고 config에 filter로 걸어주었다.
JWT가 먼저 제대로 된 것인지 판단한 다음에, UsernamePasswordAuthenticationFilter에서 정보를 활용해 토큰을 만들 수 있도록 해주었다.
요즘 면접 준비를 하면서, 단순히 기술을 사용했던 것에 대해 정확히 알고있는지 물어보는 질문들이 많아서, 옛날에 써야겠다고 숨겨놨던 주제를 다시 꺼내서 공부하면서 작성을 해보았다.
구현하신 fillterchaining방식에서 addfilterbefore로써 jwtfilter를 거신것에 대한 상징적의미와 내부로직까지 살펴보시면 좋은 학습 기회가 될거 같습니다