ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] Spring Security 기본 개념 익히기
    TIL(Today I Learned) 2023. 1. 9. 20:56

    *20230109의 회고

     

     

    오늘은 스프링 시큐리티의 기본적인 개념에 대해 학습하였다. 오늘 알게 된 몇가지 내용을 기록하려 한다.

     

    • Spring Security : 스프링 서버에 필요한 인증 및 인가를 구현하기 쉽게 해주는 프레임 워크

     

    • CSRF(Cross Site Request Forgery) : 사이트 간 요청 위조
      • 공격자가 인증된 브라우저에 저장된 쿠키의 세션 정보를 활용하여 웹 서버에 사용자가 의도하지 않은 요청을 전달하는 것 -> 요청 위조!
      • 쿠키 기반의 취약점을 이용한 공격

     

    • SecurityFilterChain
      • Spring Security는 요청이 들어오면 Servlet FilterChain을 자동으로 구성한 후 거치게 하는데, 이때 여러 Filter를 Chain 형태로 묶어놓은 것이 SecurityFilterChain 이다.
      • Spring의 보안 Filter를 결정하는데 사용되는 Filter
      • session, jwt 등의 인정방식들을 사용하는데에 필요한 설정을 완전히 분리할 수 있는 환경을 제공한다.

     

    • AbstractAuthenticationProcessingFilter
      • 사용자의 credential을 인증하기 위한 베이스 Filter

     

    • UsernamePasswordAuthenticationFilter
      • AbstractAuthenticationProcessingFilter를 상속한 Filter
      • Form Login 기반을 사용할 때 username 과 password 를 확인하여 인증한다.
      • Form Login : 인증이 필요한 URL 요청이 들어왔을 때 인증이 되지 않았다면 로그인 페이지를 반환하는형태

     

    • SecurityContextHolder
      • 스프링 시큐리티로 인증을 한 사용자의 상세 정보를 가지고 있는 컨테이너
      • SecurityContext : SecurityContextHolder 로 접근할 수 있으며, Authentication 객체를 가지고 있다.
      • Authentication 
        • 인증 객체를 의미함
        • 현재 인증된 사용자를 나타내며 SecurityContext 에서 가져올 수 있다.
        • principal, credential, authorities 를 사용하여 객체 생성
          • principal : 사용자를 식별함. username / password 방식으로 인증할 때 보통 UserDetails 인스턴스다.
          • credential : 주로 비밀번호. 대부분 사용자 인증에 사용하고 난 다음 비운다(null).
          • authorities : 사용자에게 부여한 권한을 GrantedAuthority 로 추상화 하여 사용한다. 

     

    • UserDetailsService : username / password 인증방식을 사용할 때 사용자를 조회하고 검증한 후 UserDetails 를 반환한다. Custome 하여 Bean으로 등록 후 사용 가능하다.

     

    • UserDetails : 검증된 UserDetails는 UsernamePasswordAuthenticationToken 타입의 Authentication을 만들 때 사용되며 해당 인증객체는 SecurityContextHolder에 세팅된다. Custom 하여 사용 가능.
Designed by Tistory.