첫 프로젝트를 진행하면서 스프링 시큐리티를 처음 사용해봤다.
참... 힘든 시간이었다. 10일 넘는 삽질(?)로 전체 구조를 뒤바꾸는 행동을 3번이나 했다(다음부터는 꼭 전체 구조의 큰 틀을 만들고 시작하자).
지금도 스프링 시큐리티의 지식이 많이 부족하다는 것을 느낀다. 그렇기 때문에 이렇게 정리하면서 복습용으로 사용할 예정이고 다른 분들도 도움이 되었으면 한다.
내가 스프링 시큐리티를 공부하면서 제일 핵심으로 생각하고 배웠던 내용은 커스터마이징이다. 프로젝트를 진행하면서 여러 상황을 모두 충족하는 방법을 항상 생각해야한다. 이 부분에서 스프링 시큐리티가 편의성을 제공하는 것은 사실이지만, 스프링 시큐리티만으로는 모든 것을 충족하는 해결법을 찾기는 힘들다.
그래서 나는 시큐리티를 커스터마이징했고, 그러기 위해서 시큐리티의 기본 이해가 매우 중요하다고 생각한다.
접근자가 누구인지 확인하는 절차
인증을 마친 접근자에게 권한을 허락하는 절차
(긴 설명은 나중에 내가 읽기도 귀찮다. 여기서는 이렇게 인증/인가를 이해하면 충분하다고 생각한다)
간단하게 말하자면 스프링 시큐리티를 설정하기 전에는 사용자 -> 컨트롤러로 바로 요청이 넘어간다(중간에 Dispatcher Servlet과 Interceptor는 사용하지 않을 것이니 생략)
하지만 스프링 시큐리티를 설정하게되면 Filter에 위의 그림과 같이 여러 인증,인가 필터들이 추가된다고 보면 된다. 이 그림을 보면 내용 파악하기가 참 어렵다.
쉽게 정리해보자
쉽게 설명하자면 이런 구조가 된다.
사실 이렇게 많은 필터들과 구조가 있는데 초보자가 한번에 이해하기에는 쉬운 내용이 아니다. 이 그림에서 중요한 내용은 필터들의 순서가 뭔지를 확인하고,