목표
<aside>
💡 Spring Security와 JWT를 이용한 사용자 인증 구현
</aside>
Spring Security란?
일반적인 공격에 대한 인증, 권한 부여 및 보호 기능을 제공하는 프레임워크 이다.
Spring Security is a framework that provides authentication, authorization, and protection against common attacks. -Spring Docs
JWT(Json Web Token)
서로 다른 두 당사자 간에 정보를 JSON객체로 안전하게 전송하기 위한 간결한 표준이다. 토큰은 전자서명을 통해 무결성을 보장하여 신뢰할 수 있다.
JWT는 다음과 같이 세 부분으로 구성되어 있다.
- 헤더(Header) - 토큰 유형과 서명 알고리즘(SHA256 or RSA)이 저장된다. (빨간부분)
- 페이로드(Payload) - 사용자 정보, 토큰 정보(생성 시간, 만료 시간)이 저장된다. (보라부분)
- 전자서명(Signiture) - 토큰이 변조되었는지 확인하기 위한 전자서명이 저장된다. (파란부분)

- WHY?
- 토큰 기반 인증 방식은 서버에서 Session을 통해 사용자 인증 정보를 유지할 필요가 없이 클라이언트 측에서 토큰(사용자 정보)을 관리함으로써 사용자 정보를 얻기 위한 요청을 줄일 수 있다.
- 마이크로 서비스의 경우 사용자 정보 유지를 위한 동기화 작업이 생략되어 마이크로 서비스 아키텍처에 적합하다.
설계