[Spring Security] 스프링 시큐리티 소개

k·2024년 2월 10일
0

spring security

목록 보기
1/3

스프링을 공부하면서 인증은 어떻게 처리해야할까? 생각을 했고, 단순 코딩으로 구현할 수 있지만, 잘 구현된 프레임워크/라이브러리의 안정성을 따라기엔 무리가 있다고 생각했다.

그래서 Spring Security라는 인증 프레임워크를 공부하며, 해당 내용을 정리고자 한다.

Spring Security 가 뭔데?

Spring Security Docs에 따르면 아래와 같이 나와 있다.

Spring Security Docs

Spring Security는 인증, 인가 및 일반적인 공격에 대한 보호를 제공하는 프레임워크입니다. 명령형 및 반응형 애플리케이션 모두를 보안하는 데 대한 일류 지원을 제공하여 Spring 기반 애플리케이션을 안전하게 하는 데 사용되는 표준입니다.

그런데 저것만을 가지고는 스프링 시큐리티가 무엇인지 확실히 와닿지 않았다.

  • 인증과 인가라는 말이 있는데 그게 뭐고 그 둘의 차이가 뭘까?

  • 일반적인 공격에 대한 보호를 제공한다고 하는데 어떻게 제공할까?

라는 질문들이 가슴 속에 남았다.

인증과 인가

일단 Spring Seucrity를 이해하기에 앞서 인증과 인가에 대해서 확실히 알아야 된다고 생각했다.

Authentication(인증)

사용자가 누구인지 확인하고 검증하는 과정이다. 이 때, 사용자의 신원을 확인하여 시스템에 접근할 수 있는지 여부를 결정한다.

Authorization(인가)

인증(Authentication)된 사용자에 대한 권한을 관리하고, 특정 리소스 또는 기능에 대한 접근 권한을 부여하거나 거부하여 시스템 내에서의 사용 권한을 관리한다.

그렇게 말하니깐 더 어려운거 같은데..? 라고 생각하는 사람도 있을거다. 나도 적으면서 헷갈리니깐 말이다.

먼저, 놀이동산으로 예를 들어보겠다.

  • 인증(Authentication):
    놀이동산의 입구에서 티켓 창구에 들어가는 과정

    티켓을 통해 올바르고 유효한지 사용자에 신원을 확인 후, 티켓이 주어지게 된다.

  • 인가(Authorization):
    놀이동산 안에서 각 놀이기구에 들어가는 권한 획득

    티켓의 권한에 따라서 접근할 수 있는 범위가 정해진다. 즉, 항상 모든 것에 접근할 수 있는 것이 아니다.

스프링 시큐리티에서는 이런 인증과 인가에 대한 기본적인 기능을 제공한다.

일반적인 공격에 대한 보호

  • 인증(Authentication)
  • 인가(Authorization)
  • XSS 방어
  • CSRF 방어
  • 보안 헤더 설정
  • 비밀번호 암호화
  • 세션 관리
  • 로그인 시도 제한

이러한 보호 기능이 스프링 시큐리티가 필터를 통해서 제공하고 있다. 즉, 개발자가 많은 보안 부분을 스프링 시큐리티에 위임할 수 있다는 의미이다.

추가로 개발자가 직접적으로 이런 공격에 대한 대응 개발보다는 좀 더 서비스 중심적인 개발을 할 수 있게 도와준다.

profile
You must do the things you think you cannot do

0개의 댓글