[Spring] Spring Security 개념

지원·2023년 10월 11일

Spring

목록 보기
1/1
post-thumbnail

스프링 공부나 프로젝트를 하면서 거의 기본적으로 들어갔던 기능인 Spring Security에 대해서 한번 싹 정리를 해보려한다.

인증(Authentication) vs 인가(Authorization)

  • 인증 (Authentication) : 내가 '나'임을 증명하는 것.
  • 인가 (Authorization) : '인증된' 내가 특정 권한을 얻는 것.

Spring Security 핵심 용어 정리

  • Principal (주체) : 애플리케이션 내에서 작업을 수행할 수 있는 사용자나 시스템.
  • Credential (신원 증명 정보) : 사용자를 식별하기 위한 정보.
    ex) Password, Token 등
  • Authentication (인증) : 본인임을 증명할 때 Credential을 필요로 함.
  • Authorization (인가) : 반드시 인증 후에 진행되어야 함.
  • Access Control (접근 제어) : 사용자가 애플리케이션 리소스에 접근하는 행위를 제어하는 것.

Servlet Filter vs Spring Security Filter

Spring Security는 기본적으로 인증이나 인가의 과정에서 Filter라는 것을 통해서 작업을 진행한다.
따라서, 그전에 서블릿 필터에 대한 개념을 먼저 알고 가자.

Servlet Filter

javax.servler.Filter 인터페이스를 구현한 JAVA API.
서블릿 필터는 하나 이상의 필터들이 모여 Filter Chain을 형성한다.
Filter Chain 이후에HTTPServlet -> DispatcherServlet 순서로 요청이 전달된다.
더 자세한 개념설명은 서블릿 필터란?을 통해서 익히자.

Spring Security Filter

DelegatingFilterProxy

스프링에서 제공하는 서블릿 컨테이너와 스프링의 ApplicationContext 사이에서 브릿지 역할을 하는 필터.
(❗️하지만 스프링에서 정의한 Bean이 아님❗️)

FilterChainProxy

스프링 시큐리티에서 제공하는 특별한 필터.
FilterChainProxy를 통해 Spring Security에서 제공하는 보안 필터 작업을 수행할 수 있다.
(FilterChainProxy는 DelegatingFilterProxy로 감싸지는 Bean이다.)

위에 설명한 것 외에 더 정확하게 알고 싶다면 스프링 공식문서 - Spring Security Architecture 을 참고하자.

profile
느려도 천천히라도 기록하는 백엔드 개발자👩🏻‍💻

0개의 댓글