랄라

JWT(Json Web Token) 본문

내일배움캠프/공부정리

JWT(Json Web Token)

devdaeun 2025. 2. 4. 15:25

웹 애플리케이션에서 사용자의 인증 정보를 안전하게 저장하고 전달하는 데 사용되는 Web Token

JSON 포맷을 이용하여 사용자에 대한 속성을 저장하고, 클라이언트(브라우저)에서 인증정보를 관리

*ex) 회원이 로그인을 진행한경우 서버에서 JWT 생성 -> 클라이언트에 JWT 전달


JWT의 구조

헤더.페이로드.서명 형식 (*Base64로 인코딩되어있으며, 서명의 경우 비밀키로 생성되어있음.)

 

Header(헤더) : 토큰의 타입과 알고리즘 정보를 담고있음 (ex. HS256)

 

Payload(페이로드) : 실제 데이터를 담고있는 부분 이메일이나 사용자의 id를 담는다.

(*보안이 필요한 데이터는 담기지않음)

 

Signature(서명) : 헤더와 페이로드를 비밀키로 서명해둔값, 토큰을 조작했는지에 대한 여부를 확인가능.


JWT의 장단점

 

장점

- 서버에서 상태를 저장하지않기때문에 세션 메모리 사용이 줄어 서버부하가 적다.

- 동일한 Secret Key를 사용하기때문에 서버가 여러개로 구성되어있어도 인증/인가 처리를 간편하게 진행할 수 있다.

 

단점

- JWT에 담기는 내용이(Payload) 증가할수록 네트워크 비용또한 증가

-> 모바일 환경이나 낮은 대역폭을 가진경우 더욱 문제

 

- Secret key 유출 시 JWT 조작가능

-> 주기적인 키 교체가 필요.

 

- 서버에서 토큰을 관리하지않기때문에 만료된 토큰을 강제로 처리하거나 삭제할 수 없다.

-> 토큰만료시간 설정이나, 토큰 갱신 등의 방법이 있지만, 클라이언트 측에서 만료된 토큰을 삭제하거나

새로운 토큰을 받아오는 과정이 필요함.

'내일배움캠프 > 공부정리' 카테고리의 다른 글

Validation  (0) 2025.02.05
Spring Security와 주요기능  (0) 2025.02.05
Cookie와 Session  (0) 2025.02.04
SpringBoot JPA, Spring Data JPA  (0) 2025.02.04
Entity 와 Persistence Context (영속성 컨텍스트)  (1) 2025.02.04