티스토리 뷰

https://ekeprl.tistory.com/30

 

Spring Security (1)

Spring boot : 3.1Spring Security6Kotlin Spring security의 방식에 대해선 다루지않고, 어떻게 작성했는지를 다루도록 하려한다. 1. Build.gradle.ktsdependencies { //spring-secutiry (보안) implementation("org.springframework.boot:

ekeprl.tistory.com

과거 프로젝트에서 세션 기반 Spring Security를 적용했었다.

이번 Stockly 프로젝트에서는 JWT 방식으로 전환했고, 그 이유를 정리하려 한다.

 

 

먼저 간단하게 두 가지 인증방법을 말하자면,

 

세션 기반 인증

로그인 시 서버가 세션을 생성하고 클라이언트에 세션 ID를 반환하고 이후 요청마다 세션 ID를 서버의 세션 저장소에서 확인하여 인증을 처리하는 방법

  • 서버가 세션 상태를 직접 관리한다. (Stateful)
  • 서버 메모리를 사용하며, 서버가 여러 대일 경우 세션 공유 문제가 발생한다.

 

JWT 기반 인증

로그인 시 서버가 JWT 토큰을 생성하여 클라이언트에 반환하고 이후 요청마다 클라이언트가 토큰을 헤더에 담아 전송하고, 서버는 서명을 검증하여 인증을 처리한다.

  • 서버가 상태를 저장하지 않는다. (Stateless)
  • 토큰 자체에 사용자 정보를 담고 있어 별도의 저장소가 필요 없다.

JWT방식이란?

Header 알고리즘 타입 (HS256 등)
Payload 사용자 정보 (userId, email, role 등) / 중요 정보는 담지 않는다
Signature Header + Payload를 secret key로 서명한 값 / 위변조 검증에 사용

 

 

새로운 프로젝트의 중요한 기능은 실시간 알림(SMS, 텔레그램 등)을 사용자에게 전송하는 것으로 잡고 있다. 

다만 지난번 채택했던 세션기반 인증방식은 사용자 상태를 직접 서버에 저장하기 때문에 사용자가 늘어날수록 서버 메모리 부담이 증가한다.

그러나 JWT방식을 채택하므로써 해당 문제에 자유로울 수 있다고 판단해 적용시키려 한다.

 

이번 포스팅은 왜 JWT인증방식을 사용했는지에 대해 포스팅해 보았다.

다음은 이어서 securityconfig를 작성해 보겠다.

 

감사합니다.

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함