JWT (Json Web Token)
서버와 클라이언트 사이에서 정보의 안전한 전송을 도와주는 웹 토큰이다.
JSON 형태의 데이터를 안전하게 전송하고 검증할 수 있는 기능을 가지고 있다.
다양한 암호화 알고리즘이 사용가능해 신뢰성도 있다.
구성
- 헤더(Header)
토큰의 타입과 어떤 암호화를 사용하여 생성된 데이터인지 정의가 되어있다.
- 페이로드(Payload)
실제 전달 데이터를 가지고있다
- 서명(Signature)
헤더와 페이로드 그리고 비밀 키를 이용해 생성한다.
토큰이 변조되지 않았는지 확인할 수 있게 도와준다.
JWT 장점
- 디버깅 및 관리가 편리하다.
- 트래픽에 대한 부담이 낮다.
- 자체적으로 필요한 정보를 포함하고 있다. (독립적)
- 토큰에 만료 시간을 설정할 수 있는 기능이 내장되어 있다.
- 웹서비스 아키텍처 스타일 중 하나인 REST 서비스로 제공이 가능하다. ( 비상태일땐 RESTful 서비스로 구현 가능)
- 여러 서버 인스턴스가 같은 요청을 처리할 수 있어서 수평 스케일링에 좋다.
JWT 단점
- 토큰이 클라이언트에 저장되어서 데이터베이스에서 사용자 정보를 변경해도 토큰에 변화가 없다.
- 더 많은 정보가 추가되면 토큰의 크기가 증가할 수 있다.
JWT의 사용사례
회원 인증
- 사용자가 로그인을 하면 서버는 사용자의 정보를 기반으로 토큰을 발급한다.
- 사용자가 서버에 요청을 할 때 마다 JWT를 포함하여 전달한다.
- 서버는 클라이언트에서 요청을 받을때 마다 해당 토큰이 유효하고 인증됐는지 검증을 하고, 사용자가 요청한 작업에 권한이 있는지 확인하여 작업을 처리합니다.
서버에서는 사용자에 대한 세션을 유지 할 필요가 없다.
사용자가 요청을 했을때 토큰만 확인하면 돼서 세션 관리가 필요 없어서 서버 자원과 비용을 절감할 수 있다.
정보 교류
JWT는 두 개체 사이에서 안정성있게 정보를 교환하기에 좋은 방법이다.
정보가 서명이 되어있기 때문에 정보를 보낸사람이 바뀌진 않았는지 또 정보가 도중에 변경되지 않았는지 검증할 수 있다.
출처
http://www.opennaru.com/opennaru-blog/jwt-json-web-token/
JWT (JSON Web Token) 이해하기와 활용 방안 - Opennaru, Inc.
JWT 는 JSON Web Token의 약자로 전자 서명 된 URL-safe (URL로 이용할 수있는 문자 만 구성된)의 JSON입니다.JWT는 속성 정보 (Claim)를 JSON 데이터 구조로 표현한 토큰으로 RFC7519 표준 입니다.
www.opennaru.com
'TIL' 카테고리의 다른 글
TIL 20241007 (제일 작은 수 제거하기 - 알고리즘) (0) | 2024.10.07 |
---|---|
TIL 241002 ( 약수의 갯수와 덧셈[알고리즘] ) (0) | 2024.10.02 |
TIL 240925 (웹소켓) (0) | 2024.09.25 |
TIL 240920 (회원가입, 로그인) (0) | 2024.09.20 |
TIL 240919 (GitHub) 여러명이 작업할때 (0) | 2024.09.20 |