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의 작동 방식
- JWT는 클라이언트가 서버에 인증 요청을 보내면, 서버에서 토큰을 발급한다.
- 이 발급된 토큰은 클라이언트에 저장되어 있고, 이후 요청을 보낼 때 이 토큰을 포함한다.
- 서버는 토큰을 검증해 클라이언트가 올바른 사용자임을 확인한다.
- 이를 통해 세션을 유지하지 않고도 사용자 인증을 할 수 있다!
4. JWT의 장단점
장점 | 단점 |
-확장성: 서버에 세션을 저장할 필요가 없어 서버 확장에 유리함 | -보안 위험: JWT가 한번 발급되면 만료 전까지 유효함 |
-독립적 인증: 각 요청에 대해 JWT를 포함하므로 서버에 저장할 필요가 없음 | -Payload 노철: JWT는 Base64로 인코딩되므로, 암호화된 것이 아니라 누구든 디코딩할 수 잇음 |
-자기 포함: JWT 자체에 필요한 정보를 포함하고 있으므로, 서버에서 사용자 정보를 따로 찾을 필요가 없음 |
728x90
반응형