Miracle Morning, LHWN

18-1. Spring Security 에 대해 (1) 본문

IT 기술/[JAVA] Spring Boot

18-1. Spring Security 에 대해 (1)

Lee Hye Won 2021. 6. 1. 09:28

대부분의 시스템에서는 회원관리를 하고 있고, 이에 따라 인증(Authentication) 과 인가(Authorization) 에 대한 처리를 해주어야 한다.

Spring 에서는 Spring Security 라는 별도의 프레임워크에서 관련된 기능을 제공하고 있다.

 

Spring Security

 

Spring Security 는 Spring 기반의 애플리케이션의 보안 (인증과 권한, 인가 등) 을 담당하는 스프링 하위 프레임워크이다.

Spring Security 는 '인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리하고 있다. Filter 는 Dispatcher Servlet 으로 가기 전에 적용되므로 가장 먼저 URL 의 요청을 받지만, Interceptor 는 Dispatcher 와 Controller 사이에 위치한다는 점에서 적용 시기의 차이가 있다.

Spring Security 는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있다.

 

Filter of Spring Security

 

웹 서비스에서 Spring Security 는 MVC 패턴 이전에 'Filter' 로서 동작한다. Filter 란 클라이언트 요청이 Servlet 으로 가기 전에 먼저 처리할 수 있도록 톰캣 (WAS) 에서 지원해주는 기능이다. 따라서 설정 또한 톰캣 설정 파일인 web.xml 파일에 해주며, web.xml 파일은 톰캣이 구동되는 시점에 알고 있어야 하는 정보를 넣어주는 설정 파일이다.

 

  • Spring Security 에서 Filter 는 기본적으로 Servlet Engine 의 Filter 인터페이스를 상속하게 된다.
  • 외에도 Spring Security 에서 여러 Filter 관련 인터페이스를 제공하고 있다.
    • (예) UsernamePasswordAuthenticationFilter : 사용자ID 와 비밀번호를 통한 인증

 

Spring Security 의 Servlet 은 Servlet Filter (javax.servlet) 를 기반으로 하고 있기 때문에 필터의 역할을 살펴보는 것이 중요하다.

아래 그림은 하나의 HTTP 요청 (Request) 에 대한 일반적인 Filter 계층을 보여주고 있다.

 

URI 경로를 기반으로 HttpServletRequest 를 처리하는 필터는 서블릿을 포함하는 필터 사슬 (Filter Chain) 을 만든다.

 

Spring MVC 어플리케이션에서 서블릿 (Servlet) 이라 함은 DispatcherServlet 을 말하며, 서블릿은 HttpServletRequest, HttpServletResponse 를 처리함에 있어 하나 이상의 Filter 가 사용 (= 필터 사슬:Filter Chain) 되어 HttpServletRequest, HttpServletResponse 를 수정한다.

https://docs.spring.io/spring-security/site/docs/current/reference/html5/#prerequisites

 

UsernamePasswordAuthenticationFilter

 

http/form-login 을 지원하는 즉 Form data 를 기반으로 인증을 지원하기 위해 제공되는 Filter 이다.

기본적으로 Http Security 에 formLogin() 을 설정함으로써 활성화되며, UserDetail 과 UserDetailsService 를 활용하여 인증한다.

 

# UsernamePasswordAuthenticationFilter Flow

Spring Security 에서 제공하는 WebSecurityConfigureAdapter 에 다양한 설정을 통하여 웹 화면을 통해서 전송되는 Form data 의 username, password 를 데이터베이스에 저장된 (또는 다양한 방식으로 저장된) 사용자 정보와 비교하게 된다.

https://fastcampus.co.kr/courses/204729/clips/

  

Custom Spring Security

 

# Authentication Provider Custom : Authentication Provider 을 상속하여 필요에 맞게 수정 및 개발을 한다.

 

# Filter Custom : UsernamePasswordAuthentication Filter 를 상속하고 수정한다. 그리고 Filter 를 수정하여 시스템 전반의 URL 요청에 대한 인증을 점검한다.

https://fastcampus.co.kr/courses/204729/clips/


 

출처 :

https://mangkyu.tistory.com/76

 

[SpringBoot] Spring Security란?

대부분의 시스템에서는 회원의 관리를 하고 있고, 그에 따른 인증(Authentication)과 인가(Authorization)에 대한 처리를 해주어야 한다. Spring에서는 Spring Security라는 별도의 프레임워크에서 관련된 기능

mangkyu.tistory.com

https://codevang.tistory.com/275

 

스프링 필터와 스프링 시큐리티(Spring Security)의 동작 구조

- Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6..

codevang.tistory.com

 

Comments