Spring Security란?

박지혜·2025년 8월 28일
post-thumbnail

Spring Security란? Spring의 보안, 인증, 권한관리 프레임워크

왜 쓰는지? Spring의 loC/DI 패턴을 염두하고 인증/인가 기능을 제공하기 때문에 효율적이고 편리하게 구현할 수 있게 해준다.

어디에 쓰이는지? 회원가입, 로그인, 세션관리, 권한관리 등에 쓰인다

결론적으로 사용자 정보를 어디서 가져올건지, 어떤식으로 암호화를 할건지에 대한 대답을 @Bean에 만들어둔다면 알아서 Spring Security가 알아서 해줌

<Spring Security 아키텍처>

  1. 사용자의 요청이 들어온다.

  2. AuthenticationFilter가 요청을 가로채고 AuthenticationManager에게 요청을 위임한다.

  3. AuthenticationManager은 등록된 Authentication Provider을 조회하며 인증을 요구한다.

  4. Authentication Provider가 실제 데이터를 조회하여 UserDetail의 결과를 돌려준다.

  5. 결과는 SecurityContextHolder에 저장이 되어 저장된 유저정보를 Spring Controller에서 사용한다.

<Spring Security 내부구조>


1. 사용자가 로그인 시도(Http POST요청)
2. AbstractAuthenticationProcessingFilter에서 요청을 가로챔
3. 필터는 가로챈 요청에서 아이디와 비밀번호를 꺼낸 후 Authentication 객체 생성
4. Authentication 객체가 AuthenticationManager에게 전달
5. AuthenticationManager은 인증을 요구한다.
6. 인증 요구 실패/성공

  • 인증 요구 실패 시 SecurityContextHolder의 값이 지워지고,
    RememberMeService.joinFail()이 실행,
    AuthenticationFailureHandler도 실행
  • 인증 요구 성공 시 SessionAuthenticationStrategy가 새로 로
    그인 되었음을 알림,
    Authentication이 SecurityContexHolder에 올라감

7. 이후에 SecurityContextPersistenceFilter가 SecurityContext를 HttpSession에 저장하면서 로그인 세션 정보가 저장

8. 그 뒤로 RememberMeServices.loginSuccess()가 실행 ApplicationEventPublisher가InteractiveAuthenticationSuccessEvent를 발생시키고 AuthenticationSuccessHandler가 실행





출처 : https://www.elancer.co.kr/blog/detail/235

0개의 댓글