Spring-Security (1)

Jeong Gyejin·2023년 3월 4일
0

스프링 프레임워크

목록 보기
4/17

스프링 시큐리티를 활용하기 위해서는 먼저 보안과 관련된 용어를 알아주는 것이 중요합니다.

인증

사용자가 누구인지 확인하는 단계를 의미합니다. 인증의 대표적인 예로는 로그인이 있습니다. 로그인은 DB에 등록된 아이디와 패스워드를 사용자가 입력한 아이디와 비밀번호와 비교해서 일치 여부를 확인하는 과정입니다.
로그인에 성공하면 애플리케이션 서버는 응답으로 사용자에게 토큰을 전달합니다.

인가

인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때 사용자가 해당 리소스에 접근할 권리가 있는지를 확인하는 과정을 의미합니다.
예를들어, 로그인한 사용자가 특정 게시판에 접근해서 글을 보려고 하는 경우 게시판 접근해서 글을 보려고 하는 경우 게시판 접근 등급을 확인해 접근을 허가하거나 거부하는 것이 인가의 사례입니다.
일반적으로 사용자가 인증 단계에서 발급받은 토큰은 인가 내용을 포함하고 있으며, 사용자가 리소스에 접근하면서 토큰을 함께 전달하면 애플리케이션 서버는 토큰을 통해 권한 유무 등을 확인해 인가를 수행합니다.

스프링 시큐리티는 애플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위 프로젝트 중 하나입니다. 보안과 관련된 많은 기능을 제공합니다.

스프링 시큐리티의 동작 구조

서블릿 필터를 기반으로 동작하며 DispatcherServlet앞에 필터가 배치되어 있습니다.

  • 필터 체인은 서블릿 컨테이너에서 관리하는 ApplicationFilterChain을 의미합니다. 클라이언트에서 애플리케이션으로 요청을 보내면 서블릿 컨테이너는 URI를 확인하여 필터와 서블릿을 매핑합니다. 스프링 시큐리티는 사용하고자하는 필터체인을 서블릿 컨테이너의 필터 사이에서 동작시키기 위해 DelegatingFilterProxy를 사용합니다.
    DelegatingFilterProxy는 서블릿 컨테이너의 생명주기와 스프링 애플리케이션 컨텍스트 사이에서 다리 역할을 수행하는 필터 구현체입니다. 표준 서블릿 필터를 구현하고 있으며, 역할을 위임할 필터체인 프록시를 내부에 가지고 있습니다.
    필터체인 프록시는 스프링 시큐리티에서 제공하는 필터로 보안 필터체인을 통해 많은 보안 필터를 사용할 수 있습니다.
profile
항상 더 나은 개발자가 되기 위해서 끊임없이 공부하고 학습하면서 성장하는 사람이 되겠습니다.

0개의 댓글