✍학습 키워드
서비스의 인증과 권한 부여
스프링에 보안을 적용할 때 사용하는 스프링 시큐리티에 대해 알아보자
스프링 시큐리티
- 애플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위 프로젝트 중 하나이다. 보안과 관련된 많은 기능을 제공하기 때문에 보안 관련된 기능을 더욱 편리하게 설계 할 수 있다.
- 서블릿 필터(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
'개발 공부 기록 > 07. TIL' 카테고리의 다른 글
스프링 부트 3로 백엔드 입문하기 TIL - 1~2장 : 스프링 부트 3 시작하기 (0) | 2023.10.23 |
---|---|
코딩 자율학습 스프링 부트 3 자바 백엔드 개발 입문 TIL - 1장 스프링 부트 시작하기 ~ 2장 MVC 패턴 이해와 실습 (1) | 2023.10.23 |
스프링 부트 핵심가이드 TIL - 10장 (서버 간 통신) (0) | 2023.10.13 |
스프링 부트 핵심가이드 TIL - 9장 (액추에이터) (0) | 2023.10.12 |
스프링 부트 핵심가이드 TIL - 8장 (유효성 검사와 예외처리) (0) | 2023.10.11 |