be_better

[Springboot] 서비스의 인증과 권한 부여 - SpringSecurity 소개 본문

Springboot/이론

[Springboot] 서비스의 인증과 권한 부여 - SpringSecurity 소개

NiceTry 2023. 12. 6. 17:13

목차

    보안 용어

    인증 - authentication

    사용자가 누구인지 확인하는 단계, 대표적인 예로 '로그인' 이 있다.

     

    로그인 성공 -> 사용자에게 토큰(token) 전달

    토큰이 없는 사용자는 리소스에 접근 x

     

    인가 - authorization

    토큰을 가진 인증된 사용자가 내부 리소스에 접근할 권리가 있는지 확인하는 과정.

     

    사이트 등급에 따라 접근할 수 있는 기능이 다른 것이 대표적인 예시이다.

     

    접근 주체 - principal

    애플리케이션의 기능을 사용하는 주체 -> 사용자, 디바이스, 시스템 등이 될 수 있다.

     

    인증 과정(신뢰하는 접근 주체인지 확인) -> 인가 과정(접근 주체에게 부여된 권한 확인)

     

    스프링 시큐리티

    스프링에 인증, 인가 등의 보안 기능을 적용할 때 사용함

     

    스프링 시큐리티 동작 구조

    서블릿 필터(Servlet Filter)를 기반으로 동작, DispatcherServlet 앞에 필터가 배치

     

     

    필터체인(FilterChain)은 서블릿 컨테이너에서 관리하는 ApplicationFilterChain을 의미

     

    클라이언트 요청

    -> 서블릿 컨테이너에서 URI 확인, 필터와 서블릿 매핑

    -> 스프링 시큐리티는 사용하려는 필터체인을 서블릿 컨테이너의 필터 사이에서 동작 - DelegantingFilterProxy 사용

     

     

    DelegatingFilterProxy

    - 서블릿 컨테이너의 생명주기와 스프링 애플리케이션 컨텍스트(Application Context) 다리 역할하는 필터 구현체

    - 표준 서블릿 필터 구현, 역할 위임할 필터체인 프록시(FilterChainProxy)를 내부에 갖고 있음

     

    필터체인 프록시

    - 스프링 시큐리티에서 제공하는 필터

    - 보안 필터체인(SecurityFilterChain)을 통해 많은 보안 필터(Security Filter) 사용

    - 사용 가능한 보안 필터 체인은 List 형식으로 담을 수 있게 설정

    - URI 패턴에 따라 특정 보안필터 체인 선택해서 사용

     

    보안 필터체인 종류 및 동작순서

     

    [Springboot] Spring Security 필터 동작

    보안 필터체인 종류 및 순서 보안필터 체인에서 사용하는 필터에는 여러 종류가 있다. 공식 문서에서 소개하는 필터의 실행 순서 ChannelProcessingFilter WebAsyncManagerIntergrationFilter SecurityContextPersistence

    jnjeaaaat.tistory.com