JPA

[JPA] JWT란?

Song hyun 2024. 10. 25. 09:28
728x90
반응형

[JPA] JWT란?

 

1. JWT란 무엇일까?

  • JWT는 JSON Web Token의 약자로, 두 시스템 간에 정보를 안전하게 전송하기 위해 사용되는 토큰 기반 인증 방식이다.
  • 클라이언트-서버 간에 인증 정보나 사용자 상태를 유지하고 싶을 때 JWT를 사용한다.

 

2. JWT의 구조 : JWT는 크게 세 부분으로 구성되어 있다.

  • 헤더(Header): 토큰의 타입과 해싱 알고리즘 정보를 담고 이싿.
  • 페이로드(Payload): 주로 사용자 정보나 데이터를 포함하는 부분이다. 사용자 ID, 사용자 이름, 토큰 만료 시간 등의 정보가 담겨 있다.
  • 서명(Signature): 헤더와 페이로드의 내용을 해싱한 뒤, 비밀키로 서명한 부분이다. 이 서명을 통해 데이터가 위변조되지 않았음을 확인할 수 있다.

 

3. JWT의 작동 방식

  1. JWT는 클라이언트가 서버에 인증 요청을 보내면, 서버에서 토큰을 발급한다.
  2. 이 발급된 토큰은 클라이언트에 저장되어 있고, 이후 요청을 보낼 때 이 토큰을 포함한다.
  3. 서버는 토큰을 검증해 클라이언트가 올바른 사용자임을 확인한다.
  4. 이를 통해 세션을 유지하지 않고도 사용자 인증을 할 수 있다!

 

4.  JWT의 장단점

장점 단점
-확장성: 서버에 세션을 저장할 필요가 없어 서버 확장에 유리함 -보안 위험: JWT가 한번 발급되면 만료 전까지 유효함
-독립적 인증: 각 요청에 대해 JWT를 포함하므로 서버에 저장할 필요가 없음 -Payload 노철: JWT는 Base64로 인코딩되므로, 암호화된 것이 아니라 누구든 디코딩할 수 잇음
-자기 포함: JWT 자체에 필요한 정보를 포함하고 있으므로, 서버에서 사용자 정보를 따로 찾을 필요가 없음  
728x90
반응형