최근 개인 프로젝트를 진행하며 시큐리티를 적용시켜 로그인 기능을 구현하고 싶단 생각이 들어 무작정 구글링을 통해 적용시켰지만 아직 동작원리에 대해 정확히 이해하지 못 한 느낌이 들어 따로 정리해보기로 했다
이란 스프링 기반의 애플리케이션 보안을 담당하는 하위 개념의 프레임워크이다 간단하게 말해 애플리케이션의 인증 인가를 담당하는 역할이다
인증(Authentication) -> 유저가 실제 사이트의 유저가 맞는지 식별하는 과정
인가(Authorization) -> 특정 리소스에 접근이 가능한지 확인
Security는 필터흐름으로 처리된다
Client (request) → Filter → DispatcherServlet → Interceptor → Controller
(실제로 Interceptor가 Controller로 요청을 위임하는 것은 아님, Interceptor를 거쳐서 가는 것)
여기서 필터와 인터셉터 둘 다 요청과 응답을 가로채는 역할을 한다 반대로 차이점은 필터는 DispatcherServlet 이전에 처리가 되고 인터셉터는 DispatcherServlet에서 Controller로 가기 전에 처리가 된다는 차이가 있다
< 필터의 위치와 인터셉터의 위치 사진 참고 >
위에 사진은 시큐리티의 동작방식에 관한 사진이다
참고
https://velog.io/@soyeon207/SpringBoot-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0%EB%9E%80
https://dev-coco.tistory.com/174
https://emgc.tistory.com/108
https://mangkyu.tistory.com/173