개발스토리

Spring Security 본문

Spring & SpringBoot

Spring Security

무루뭉 2021. 8. 20. 09:57

스프링을 시작하면서 회원가입 & 로그인을 직접 구현하는 도중에 보안이나 권한 처리 등 직접 생각하고 구상할 것 들이 많아서 힘들어하는 와중에 스프링 시큐리티를 접하게 되었다.

 

Spring Security가 뭘까...?

 

우리가 사용하는 대부분의 어플리케이션들 또한, 우리가 만드려는 어플리케이션에는 인증과 권한이 필요하다.

사용자 권한을 가진 사용자는 관리자 페이지로 이동이 안되는 것. 권한의 영역이다.

또한, 어플리케이션을 사용하기 위해 자신이 사용자라는 것을 인증하는 것. 

이 두가지는 어떻게 보면 당연하면서도 생각보다 까다로운 것들이다. 

왜냐면 각종 보안 위협에 대응도 해야 하고, 세션을 유지하는 과정 등 생각할 것이 많기 때문이다.

우선 정의부터 얘기하자면,

Spring Security는 엔터프라이즈 어플리케이션에 대한 인증, 권한 부여 및 보안 기능을 제공하는 프레임 워크다.

즉, 개발자는 이미 인증과 인가가 잘 추상화되어있는 스프링 시큐리티를 적용하면 쉽게 처리할 수 있고 보안 이슈에도 대응할 수 있다는 것이다.

쉬운 지는 잘 모르겠습니다..

 

바로 코드를 봐도 되지만 요즘 나는 근본(?)을 추구하기 때문에 스프링 시큐리티의 인증 프로세스를 살펴보겠다.

스프링 시큐리티는 기본적으로 세션 & 쿠키 방식으로 인증을 한다.

또한, Filter 기반으로 동작을 한다. 서비스 로직들은 모두 필터를 거친 다음에 컨트롤러 단으로 넘어간다.

 

이 사진은 스프링 MVC에서의 요청에 대한 처리 과정을 보여준다. 필터를 거친다음에 Dispatcher Servlet을 거친다. 그 다음에 컨트롤러로 넘어가는 것을 볼 수 있다. 응답은 반대 순서이다. 무튼, 알아야 할 것은 스프링 시큐리티는 Dispatcher Servlet에 도달하기 전에 로직을 수행한다는 것이다. 시큐리티는 여러 필터가 존재하고, 각 역할에 따른 필터들을 순서대로 처리한 뒤에 Dispatcher Servlet으로 보내게 된다.

 

Dispatcher Servlet의 개념이 부족하다면 글 한번 읽고 오자. 다른 블로그의 좋은 글이다.

| https://mangkyu.tistory.com/18?category=761302 

각 필터 별 기능

 

 

예시를 통한 인증과 권한

또한 인증 관리자와 접근 결정 관리자를 통해서 사용자의 자원 접근을 관리한다.

인증 관리자는 UsernamePasswordAuthenticationFilter, 접근 결정 관리자는 FilterSecurityInterceptor가 수행한다.

 

!! 스프링 시큐리티는 여러 필터로 구성되어 있기 때문에 각 필터 별로 어떤 역할을 하는 지 잘 봐야할 것 같다. 다음에는 코드를 통해 로그인 기능을 직접 구현해서 흐름을 제대로 이해 해야겠다.

 

참고

https://devuna.tistory.com/55

'Spring & SpringBoot' 카테고리의 다른 글

Spring REST Docs 적용  (1) 2021.11.11
Spring REST Docs 도입 이유  (0) 2021.11.11
@Bean, @Component, @Configuration  (3) 2021.08.31
Service와 ServiceImpl  (1) 2021.08.31
HikariCP가 뭘까?!  (0) 2021.08.30
Comments