개발 공부 기록/07. TIL

스프링 부트 핵심가이드 TIL - 11장 (Spring Security)

박세류 2023. 10. 14. 12:45

✍학습 키워드

서비스의 인증과 권한 부여

스프링에 보안을 적용할 때 사용하는 스프링 시큐리티에 대해 알아보자

스프링 시큐리티

  • 애플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위 프로젝트 중 하나이다. 보안과 관련된 많은 기능을 제공하기 때문에 보안 관련된 기능을 더욱 편리하게 설계 할 수 있다.
  • 서블릿 필터(Servlet Filter)를 기반으로 동작하며, DispatcherServlet 앞에 필터가 배치되어 있다.

  • 클라이언트에서 애플리케이션으로 요청을 보내면 서블릿 컨테이너는 URI를 확인해서 필터와 서블릿을 매핑한다.
  • 스프링 시큐리티는 사용하고자 하는 필터체인을 서블릿 컨테이너의 필터 사이에서 동작시키기 위해 DelegatingFilterProxy를 사용한다.

JWT(JSON Web Token)

  • JWT는 당사자 간에 정보를 JSON 형태로 안전하게 전송하기 위한 토큰이다.
  • URL로 이용할 수 있는 문자열로만 구성돼 있으며, 디지털 서명이 적용돼 있어 신뢰할 수 있다.
  • JWT는 주로 서버와의 통신에서 권한 인가를 위해 사용되며, 문자열로만 구성돼 있기 때문에 HTTP 구성요소 어디든 위치할 수 있다.
    • 헤더(Header), 내용(Payload), 서명(Signature)의 세 부분으로 구성된다.

JwtTokenProvider 구현

  • csrf
    • REST API 에서는 CSRF 보안이 필요 없다. CSRF는 Cross-Site Request Forgery의 줄임말로 ‘사이트 간 요청 위조’를 의미한다. 애플리케이션의 취약점 중 하나로서 사용자가 자신의 의지와 무관하게 웹 에플리케이션을 대상으로 공격자가 의도한 행동을 함으로써 특정 페이지의 보안을 취약하게 한다거나 수정, 삭제 등의 작업을 하는 공격 방법이다.

📝새로 배운 개념

인증(authentication)

인증은 사용자가 누구인지 확인하는 단계를 의미한다. ex) 로그인

  • 로그인에 성공하면 서버는 응답으로 사용자에게 토큰을 전달한다.
  • 토큰을 전달받지 못한 사용자는 원하는 리소스에 접근할 수 없게 된다.

인가(authorization)

인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때 해당 리소스에 접근할 권리가 있는지를 확인하는 과정을 의미한다.

  • 로그인한 사용자가 특정 게시판에 접근해서 글을 보려고 하는 경우 게시판 접근 등급을 확인해 접근을 허가하거나 거부하는 등
  • 사용자가 발급받은 토큰은 인가 내용을 포함하고 있으며, 사용자가 접근하는 리소스에 토큰을 함께 전달하면 서버는 인가를 수행한다.

접근 주체

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

✨느낀 점&자기 선언

스프링이랑 조금 친해진 기분이 들었다!

어떤 구성요소로 이뤄져 있는지 이해한 후 다양한 으용 방법에 대해 배우고, 어떤 어플리케이션을 개발하느냐에 따라 서비스의 특성에 맞게 스프링 시큐리티를 적용해야 한다.!

✍학습 키워드

서비스의 인증과 권한 부여

스프링에 보안을 적용할 때 사용하는 스프링 시큐리티에 대해 알아보자

스프링 시큐리티

  • 애플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위 프로젝트 중 하나이다. 보안과 관련된 많은 기능을 제공하기 때문에 보안 관련된 기능을 더욱 편리하게 설계 할 수 있다.
  • 서블릿 필터(Servlet Filter)를 기반으로 동작하며, DispatcherServlet 앞에 필터가 배치되어 있다.
  • 클라이언트에서 애플리케이션으로 요청을 보내면 서블릿 컨테이너는 URI를 확인해서 필터와 서블릿을 매핑한다.
  • 스프링 시큐리티는 사용하고자 하는 필터체인을 서블릿 컨테이너의 필터 사이에서 동작시키기 위해 DelegatingFilterProxy를 사용한다.

JWT(JSON Web Token)

  • JWT는 당사자 간에 정보를 JSON 형태로 안전하게 전송하기 위한 토큰이다.
  • URL로 이용할 수 있는 문자열로만 구성돼 있으며, 디지털 서명이 적용돼 있어 신뢰할 수 있다.
  • JWT는 주로 서버와의 통신에서 권한 인가를 위해 사용되며, 문자열로만 구성돼 있기 때문에 HTTP 구성요소 어디든 위치할 수 있다.
    • 헤더(Header), 내용(Payload), 서명(Signature)의 세 부분으로 구성된다.

JwtTokenProvider 구현

  • csrf
    • REST API 에서는 CSRF 보안이 필요 없다. CSRF는 Cross-Site Request Forgery의 줄임말로 ‘사이트 간 요청 위조’를 의미한다. 애플리케이션의 취약점 중 하나로서 사용자가 자신의 의지와 무관하게 웹 에플리케이션을 대상으로 공격자가 의도한 행동을 함으로써 특정 페이지의 보안을 취약하게 한다거나 수정, 삭제 등의 작업을 하는 공격 방법이다.

📝새로 배운 개념

인증(authentication)

인증은 사용자가 누구인지 확인하는 단계를 의미한다. ex) 로그인

  • 로그인에 성공하면 서버는 응답으로 사용자에게 토큰을 전달한다.
  • 토큰을 전달받지 못한 사용자는 원하는 리소스에 접근할 수 없게 된다.

인가(authorization)

인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때 해당 리소스에 접근할 권리가 있는지를 확인하는 과정을 의미한다.

  • 로그인한 사용자가 특정 게시판에 접근해서 글을 보려고 하는 경우 게시판 접근 등급을 확인해 접근을 허가하거나 거부하는 등
  • 사용자가 발급받은 토큰은 인가 내용을 포함하고 있으며, 사용자가 접근하는 리소스에 토큰을 함께 전달하면 서버는 인가를 수행한다.

접근 주체

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

✨느낀 점&자기 선언

스프링이랑 조금 친해진 기분이 들었다!

어떤 구성요소로 이뤄져 있는지 이해한 후 다양한 으용 방법에 대해 배우고, 어떤 어플리케이션을 개발하느냐에 따라 서비스의 특성에 맞게 스프링 시큐리티를 적용해야 한다.!



728x90