Spring Security 란?
Spring MVC 기반 애플리케이션의 인증(Authentication) 및 인가(Authorization or 권한 부여) 기능을 지원하는 보안 프레임워크.
Spring 기반 애플리케이션 보안을 위한 사실상의 표준
쓰는이유?
→ Spring Security는
보안과 관련하여 체계적으로 많은 옵션을 제공
해주기 때문에 개발자 입장에서는 이런 보안 로직들을 하나하나 작성할 필요가 없는 장점이 존재Spring FilterChain
Spring security는 다양한 기능을 가진 필터들을 10개 이상 기본적으로 제공한다.
이렇게 제공되는 필터들을 Security Filter Chain이라고 한다.
Spring Security에서는 필터를 통해 전, 후처리 과정에서 보안작업을 수행가능하다.
Filter는 Dispatcher Servlet으로 가기 전에 적용되기 때문에 가장 먼저 url의 요청을 받는다.
Spring Security 구조

- 사용자가 로그인 정보 입력 후
HttpRequest
를 서버로 전송
- 전송이 오면
AuthenticationFilter
로 요청이 오고 아이디, 비밀번호 기반으로UserPasswordAuthenticationToken
을 발급해주어야 한다.
- 2에서 발급된 토큰을
AuthenticationManager
에게 전달한다.AuthenticationManager
는 인증 처리를 위한 여러개의AuthenticationProvider
를 가지고 있다.
- 2의 토큰을
AuthenticationProvider
에게 전달한다.AuthenticationManager
는 토큰을 순차적으로 Provider에게 전달하여 실제 인증 과정을 수행한다. 실제 인증에 대한 부분은 Authenticate함수에 작성을 해야하고 Security에서는 DB에서 데이터를 조회할 때 Username으로 조회하기 때문에 전달받은 토큰으로부터 아이디 조회, 비밀번호 일치를 확인한다.
UserDetailsService
로 조회할 아이디 전달한다.UserDetailsService
는 인터페이스라서 이를 구현할 클래스를 작성해야하며 여기서 아이디를 기반으로 데이터를 조회해야 한다.
- 아이디를 기반으로 DB에서 데이터를 조회한다.
- 조회한 결과를 반환한다.
- 인증 처리 후 토큰을
AuthenticationManager
에 반환,AuthenticationProvider
에서UserDetailsService
를 통해 조회한 정보와 입력받은 비밀번호가 일치하는지 확인하고 일치한다면 인증된 토큰을 반환해야 한다. DB에 비밀번호는 보통 암호화 되어있기 때문에 똑같이 암호화 후 비교.
- 인증된 토큰을
AuthenticationFilter
에 전달, 인증이 완료된UserPasswordAuthenticationToken
을AuthenticationFilter
로 반환하고AuthenticationFilter
는LoginSuccessHandler
로 전달한다.
- 인증된 토큰을
SecurityContextHolder
에 저장한다.
Share article