[Spring]그림으로 배우는 스프링 6 - 14장 Spring Security 필터에 대해 공부

Gaeng·2024년 11월 25일

[Spring] 공부

목록 보기
15/21
post-thumbnail

책의 내용을 기반으로 내용을 다시 정리하고 추가해서 공부하고 있음.

스프링 시큐리티

스프링 시큐리티는 인증과 인가를 중심으로 하는 보안 기능

인증과 인가

인증 (authenication)

  • 인증은 애플리케리션을 사용하는 상대를 식별하는 행위

인가 (authorizaiton)

  • 인가는 권한 부여로 인증한 상대가 접근하는 리소스에 대해 허용할지 여부를 제어하는 행위

결론적으로 쉽게 말하면 인증은 로그인으로 검증 인가는 로그인 후 권한 부여


스프링 시큐리티 인증의 개요

스프링 시큐리티 공식사이트
스프링 시큐리티는 다양한 인증 수단을 지원

  • Form 인증
  • HTTP 표준인 Basic 인증
  • 싱글 사이온이 가능한 Oauth 2.0등

스프링 시큐리티의 인가의 개요

인가는 애플리케이션의 보안을 강화하기 위해 요청 수준에서부터 데이터 노출에 이르기까지, 인가는 여러 단계에서 이루어집니다.

주요 단계:

  • 요청에 대한 접근 통제

    • 클라이언트가 보낸 요청(예: /admin/update)에 대한 접근 권한을 검증합니다.
    • 허가되지 않은 사용자는 요청 자체가 차단됩니다.
  • 비즈니스 로직에 대한 접근 제한

    • 서비스 계층에서 특정 메서드 호출(update()와 같은 로직)이 권한 있는 사용자만 실행되도록 제한합니다.
    • 잘못된 권한으로는 내부 로직에 접근할 수 없습니다.
  • 클라이언트에게 표시되는 데이터 제어

    • 요청 결과로 반환되는 데이터 중에서 사용자의 권한에 따라 보여줄 데이터를 선택합니다.
    • 예: 일반 사용자에게는 민감한 정보(비밀 데이터)를 숨깁니다.

스프링 시큐리티의 필터

스프링 시큐리티?

서블릿 필터의 기능을 이용해 다양한 처리를 끼워 넣는다. 스프링 MVC 내부에서는 DispatcherServlet이라는 서블릿이 작동하고 있는데, 그 곳에 오기 전에 시큐리티의 필터에서 처리된다.

그림 1. Filter Chain그림2. SecurityFilterChain
출처 :https://docs.spring.io/spring-security/reference/servlet/architecture.html

브라우저요청에서 컨트롤단까지 시퀀스 흐름도

Spring Security 필터 체인의 기본 순서

  1. 인증(Authentication):

    • 클라이언트의 요청이 들어오면 가장 먼저 인증 필터(Authentication Filter)가 작동하여 사용자의 인증 여부를 확인합니다.
    • 예: UsernamePasswordAuthenticationFilter와 같은 필터가 로그인 정보(예: ID/비밀번호)를 검증합니다.
    • 인증 실패 시, 예외(Exception)를 발생시킵니다. 이후 예외 처리 필터로 넘어갑니다.
  2. 예외 처리(Exception Handling):

    • 인증이 실패하거나, 인가 과정에서 권한 부족 등의 예외가 발생하면 ExceptionTranslationFilter가 이를 처리합니다.
    • 예외 처리의 주요 역할:
      • 인증 예외 발생 시: 로그인 페이지로 리다이렉션하거나 401 Unauthorized 응답.
      • 인가 예외 발생 시: 403 Forbidden 응답 또는 사용자 정의 메시지.
  3. 인가(Authorization):

    • 사용자가 인증에 성공하면, 요청된 리소스나 메서드에 접근할 권한이 있는지 확인하는 단계입니다.
    • 권한이 없으면 예외(Exception)를 발생시켜 다시 ExceptionTranslationFilter로 처리됩니다.
    • 예: FilterSecurityInterceptor가 인가 작업을 수행합니다.

Spring Security의 필터 체인 흐름은 인증 → 인가 → 예외 처리 순서로 동작합니다. 이 순서는 보안의 기본 원칙을 따르며, 인증 없이 권한을 확인하거나 예외를 처리하는 것은 불가능


다음 글은 시큐리티 필터 체인 설정부터 공부 할 예정입니다.

profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글