본문 바로가기
  • 시 쓰는 개발자
Spring

spring security란

by poetDeveloper 2022. 11. 21.

SpringSecurity

 

spring security는 인증과 인가에 초점을 맞춘 프레임워크이다.

  • 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인하는 절차
  • 인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차

 

스프링 시큐리티의 특징

  1. 서블릿 api 통합
  2. spring web mvc와의 선택적 통합
  3. 인증과 권한 부여를 모두 포괄적이고 확장 가능한 지원
  4. 세션 고정, clickjacking, 사이트 간 요청 위조 등과 같은 공격으로부터 보호

웹 기반 인증과 인가를 편하게 구현하기 위함.

 

spring security Filter

필터가 굉장히 많아서 우리에게 필요한 필터만 골라 구현해 사용한다.

 

로그인 인증 구조

  1. 사용자가 아이디 비밀번호로 로그인을 요청, 로그인 시도하면 http request 들어온다.
  2. AuthenticationFilter에서 UsernamePasswordAuthenticationToken을 생성하여 AuthenticaionManager에게 전달.
  3. AuthenticaionManager는 등록된 AuthenticaionProvider(들)을 조회하여 인증을 요구함
  4. AuthenticaionProvider는 UserDetailsService를 통해 입력받은 아이디에 대한 사용자 정보를 DB에서 조회함.
  5. 입력받은 비밀번호를 암호화하여 DB의 비밀번호화 매칭되는 경우 인증이 성공된 UsernameAuthenticationToken을 생성하여 AuthenticaionManager로 반환함
  6. AuthenticaionManager는 UsernameAuthenticaionToken을 AuthenticaionFilter로 전달함
  7. AuthenticationFilter는 전달받은 UsernameAuthenticationToken을 LoginSuccessHandler로 전송하고, SecurityContextHolder에 저장함

 

security의 주요 필터

  • SecurityContextRersistenceFilter

SecurityContextLoad/Save

  • LogoutFilter

로그아웃 URL로의 요청을 감시하여 해당 사용자를 로그아웃 시킴.

  • UsernamePasswordAuthenticationFilter

ID/비밀번호 기반 Form 인증요청 URL을 감시하여 사용자를 인증.

  • ExceptionTransitionFilter

요청을 처리하는 중에 발생할 수 있는 예외를 위임하거나 전달.

  • FilterSecurityInterceptor

접근 권한 확인을 위해 요청을 AccessDecisionManager로 위임. 이 필터가 실행되는 시점에는 사용자가 인증됐다고 판단

 

 

* 느낀점

내용이 어렵다... 단순히 로그인에서 사용하는 보안 관련된 내용이라고만 생각했는데 그것보단 더 어려웠다.... 나중에 부실한 내용을 보완해야겠다.

'Spring' 카테고리의 다른 글

spring security - 인증 방식에 따른 차이 (세션과 토큰방식)  (0) 2023.01.03
WelcomePage란?  (0) 2022.12.11
서블릿이란? (퍼옴)  (0) 2022.12.08
API란 무엇인가 (+REST API)  (0) 2022.11.22
MVC패턴과 MVC패턴을 지키는 법  (0) 2022.10.20