JWT(Json Web Token)은 웹 표준으로 서버와 클라이언트 간에 정보를 안전하게 전송하는 데 사용된다.
이름에서도 알수있듯이 JSON형식으로 데이터가 전달된다.
JWT는 세 가지 부분으로 이루어져 있다.
Header: JWT의 유형과 해시 알고리즘을 지정한다. 이 부분은 Base64Url로 인코딩되어 있다.
Payload: 실제로 전달하려는 정보가 JSON형식으로 담겨 있다. 사용자 ID, 이 부분 또한 Base64Url로 인코딩되어 있다.
Signature: 헤더와 페이로드를 Base64Url로 인코딩한 값에 서버에서 가지고 있는 비밀 키를 이용하여 서명되며 이를 통해 JWT의 무결성이 보장된다.
JWT는 사용자 인증을 비롯한 다양한 분야에서 사용되는데 어플리케이션에서 로그인 후에 서버가 클라이언트에게 JWT 토큰을 발급하고, 이를 이용해 사용자의 권한을 확인할 수 있다.. 또한, 다른 서비스 간에 정보를 안전하게 전달할 때도 자주 쓰인다.
JWT와 쿠키의 차이점
저장 장소: JWT는 클라이언트측에 저장되는 반면 쿠키는 클라이언트와 서버 모두에서 관리된다.
보안성: 보안성 측면에서는 JWT는 서명을 통한 무결성 검증으로 안정성을 보장하는데 반해 쿠키는 안전하지 않은 환경에서는 쿠키를 탈취당할 우려가 존재한다.
용도: JWT는 정보 전달 및 인증에 주로 사용되고 쿠키는 세션 관리, 사용자 로그인 정보 유지 등에 사용된다.
통신과정
1. 사용자가 로그인을 시도함
2. 서버는 사용자의 인증 정보를 검증하고, 유효한 경우 해당 사용자에 대한 정보를 기반으로 JWT를 생성하여 사용자에게 전달한다.
3. 사용자가 서버에 요청을 보낼 때마다, 서버는 받은 JWT토큰의 서명을 검증하여 토큰의 유효성을 확인한다.
4. 서버에서 유효성을 확인한 후 응답과 데이터를 사용자에게 전송한다.
'IT관련 정보' 카테고리의 다른 글
네트워크 보안 프로토콜: IPSec, SSL/TLS, S-HTTP (0) | 2023.09.27 |
---|---|
객체지향 프로그래밍이란? (0) | 2023.09.20 |
간단하게 알아보는 디자인 패턴 (0) | 2023.09.16 |
lombok을 이용해 코드의 반복을 줄이고 생산성 높이기 (0) | 2023.09.14 |
안드로이드 네트워킹 라이브러리 Retrofit 알아보기 (0) | 2023.09.09 |