본문 바로가기
Spring

JWT

by wjdtmdgjs 2024. 8. 21.

  • JWT(Json Web Token)란 JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token 입니다. 즉, 토큰의 한 종류라고 생각하시면 됩니다. 일반적으로 쿠키 저장소를 사용하여 JWT를 저장합니다.
  • JWT 사용 이유
    1. 서버가 1대인 경우
       Session1 이 모든 Client의 로그인 정보를 소유하고 있습니다. 
    2. 서버가 2대 이상인 경우
      1. 서버의 대용량 트래픽 처리를 위해 서버 2대 이상 운영이 필요할 수 있습니다.
        • Session 마다 다른 Client 로그인 정보를 가지고 있을 수 있습니다.
          • Session1: Client1, Client2, Client3
          • Session2: Client4
          • Session3: Client5, Client6
        • 만약 Client 1의 로그인 정보를 가지고 있지 않은 Sever2 나 Server3 에 API 요청을 하게되면 문제가 발생하지 않을까?
          • 해결방법
            1. Sticky Session: Client 마다 요청 Server 고정합니다.
            2. 세션 저장소 생성하여 모든 세션을 저장합니다.
      2. 세션 저장소 생성
        • Session storage 가 모든 Client 의 로그인 정보 소유하고 있기 때문에 모든 서버에서 모든 Client의 API 요청을 처리할 수 있습니다.
      3. JWT 사용
        • 로그인 정보를 Server 에 저장하지 않고, Client 에 로그인 정보를 JWT 로 암호화하여 저장
          → JWT 통해 인증/인가
          • 모든 서버에서 동일한 Secret Key 소유합니다.
          • Secret Key 통한 암호화 / 위조 검증 (복호화 시)
          • JWT 장/단점
            1. 장점
              • 동시 접속자가 많을 때 서버 측 부하 낮춤
              • Client, Sever 가 다른 도메인을 사용할 때
                • 예) 카카오 OAuth2 로그인 시 JWT Token 사용
            2. 단점
              • 구현의 복잡도 증가
              • JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
              • 기 생성된 JWT 를 일부만 만료시킬 방법이 없음
              • Secret key 유출 시 JWT 조작 가능

 

'Spring' 카테고리의 다른 글

TestCode  (0) 2024.09.12
웹개발 필수지식 정리  (1) 2024.08.28
Annotation  (0) 2024.08.20
Spring MVC & 3 Layer (by김동현튜터님)  (0) 2024.08.19
Spring 메모리에서 비교하기  (0) 2024.08.15