딱콩이의 봄

Spring Security 본문

개발/Spring

Spring Security

코린이딱콩 2023. 2. 2. 14:58

🧐Spring Security 정의

  • 스프링 기반의 애플리케이션 보안(인증권한, 인가 등)을 담당하는 스프링 하위 프레임 워크
    • 스프링 시큐리티는 인증인가에 대한 부분을 Filter흐름에 따라 처리하고 있다.
    • Filter Dispatcher Servlet으로 가기 전에 적용되기 때문에 가장 먼저 URL 요청을 받는다.(웹 컨테이너에서 관리)
    • Interceptor는 Dispatcher와 Controller 사이에 위치한다는 점에서 적용 시키의 차이가 있다.(스프링 컨테이너에서 관리)

💡Client(request) 👉🏻 Filter 👉🏻 DistpatcherServlet 👉🏻 Interceptor 👉🏻 Controller

    👏🏻실제로 IntercpetorController로 요청을 위임하는 것은 아니고, Interceptor를 거쳐서 가는 것!

 

  • Principla(접근 주체) : 보호된 리소스에 접근하는 대상
  • Authentication(인증) : 접속된 유저가 누구인지 확인
  • Authorize(인가) : 인증된 유저가 권한이 있는지 확인
  • 권한 : 유저가 어떤일을 할 수 있도록 역할을 주는 것

 

👯Spring Secuirty 흐름

  1. 사용자가 로그인 정보와 함께 인증 요청 (HTTP Request)
  2. AuthenticationFilter 가 요청을 가로채고, 가로챈 정보를 통해 UsernamePasswordAuthenticationToken 의 인증용 객체를 생성
  3. AuthenticationManager의 구현체인 ProviderManager 에게 생성한 UsernamePasswordToken 객체를 전달
  4. AuthenticationManager 는 등록된 AuthenticationProvider조회하여 인증을 요구
  5. 실제 DB에서 사용자 인증정보를 가져오는 UserDetailsService에 사용자 정보를 넘겨줌
  6. 넘겨받은 사용자 정보를 통해 DB에서 찾은 사용자 정보인 UserDetails 객체를 만듦
  7. AuthenticationProviderUserDetails를 넘겨 받고 사용자 정보를 비교
  8. 인증이 완료되면 권한 등의 사용자 정보를 담은 Authentication 객체를 반환
  9. 다시 최초의 AuthenticationFilterAuthentication 객체가 반환됨
  10. Authentication 객체를 SecurityContext에 저장

👏🏻최종적으로 SecurityContextHolder는 세션 영역에 있는 SecurityContextAuthentication 객체를 저장

 

🤦🏻‍♀️Spring Security 특징

  1. 애플리케이션의 모든 URL 에 대한 인증을 요구
    1. 인증, 인가 되지 않은 사용자는 Security Filter에서 걸러냄
  2. 시큐리티 내의 소스를 커스터마이징 할 수 있음
  3. CSRF 공격, 세션 고정 방지
    1. CSRF, 세션 고정 등 세션을 활용한 공격들을 방지
  4. HTTP 보안 헤더
    1. HTTP 헤더를 강화하여 XSS, X-Frame-Options 등에 대응
      • HSTS(HTTP Strict Transport Security)
        • WEB에 접근할 때, 강제적으로 HTTPS로 접근하도록 함
      • XSS(Cross-Site Scripting) 보안
        • 스크립트가 포함된 URL을 필터링

 

'개발 > Spring' 카테고리의 다른 글

DI, IoC  (0) 2022.08.18
라이브러리와 프레임워크의 차이  (0) 2022.08.17
MVC패턴이란?  (0) 2022.08.17
Comments