본문 바로가기
개념정리/WEB Hacking 개념 정리

JWT 개념 정리

by 이우정 2022. 2. 11.
728x90

JWT

 

- Json Web Token의 약자

- 모바일 · 웹 사용자 인증을 위해 사용하는 암호화된 토큰

- Request에 JWT를 함께 전송

 

JWT 구조

 

- Request에 함께 보내지기 때문에 URL에서 파라미터로 사용 가능하도록 URL_Safe 한 Base64 인코딩을 함

 

[Header].[Payload].[Signature]

 

Header

- 토큰의 타입 / 해시 암호화 알고리즘 

{
 	"typ" : "JWT",
 	"alg" : "HS256"
 }

 

Payload

- 토큰에 담을 정보 

- 이 영역 정보의 단위 : Claim (클레임) - name/value 한 쌍

- 클레임의 종류 : 등록된(Registered) 클레임, 공개(Public) 클레임, 비공개(Private) 클레임

{
    "sub" : "12312341234", // 등록된 클레임
    "name" : "John", // 비공개 클레임
    "lat" : 12341234 // 등록된 클레임
}

1. iss (Issuer) : 토큰 발급자

2. sub (Subject) : 토큰 제목 - 토큰에서 사용자에 대한 식별 값

3. aud (Audience) : 토큰 대상자

4. exp (Expiration Time) : 토큰 만료 시간

5. nbf (Not Before) : 토큰 활성화 날짜 (이 전까지는 활성화 않음)

6. iat (Issued At) : 토큰 발급 시간

7. jti (JWT Id) : JWT 토큰 식별자 (issuer가 여러명일때 이를 구분)

 

Signature

-  (Header + base64) + (Payload + base64) + Secret Key)로 생성

- JWT 백엔드에서 발행

- 각 요청시 서명이 확인되어 Header나 Payload의 변조 여부를 확인, 변조시 Token 무효화

 

 

기존 인증 / 인가 방식과의 차이

 

https://tech.toktokhan.dev/2021/04/30/JWT/

- 서버가 클라이언트의 세션 정보를 담고 있어야만 인증이 가능하여 서버에게 부담이 갈 수 있다.

https://tech.toktokhan.dev/2021/04/30/JWT/

- stateless하여 유저의 정보를 서버나 세션에 담지 않음

+ 여러 플랫폼 및 도메인 어플리케이션 규모가 커지면 여러 디바이스를 호환 시키고 더 많은 종류의 서비스 제공 가능. 토큰만 유효하다면.. 으로 확장 가능

 

단점

 

- Claim의 데이터가 많아질 수록 토큰의 길이가 길어짐. API 호출할 때 마다 토큰을 주고 받기 때문에 대역폭 낭비 가능

- Payload 암호화 없음. 중요 데이터를 넣어선 안됨.

 

 

 

 

 


https://brunch.co.kr/@jinyoungchoi95/1

 

JWT(Json Web Token) 알아가기

jwt가 생겨난 이유부터 jwt의 실제 구조까지 | 사실 꾸준히 작성하고 싶었던 글이지만 JWT를 제대로 개념을 정리하고 구현을 진행해본 적이 없었는데 리얼월드 프로젝트를 진행하면서 JWT에 대한

brunch.co.kr

 

https://tech.toktokhan.dev/2021/04/30/JWT/

 

JWT란 무엇인가

JWT 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 김영환 입니다. JMT졸맛탱이 아니라 JWT😝 웹 개발을 진행하다보면 빠질수 없는 인증 / 인가 .. JWT에 대해서 소개해보도록 하겠습니다.

tech.toktokhan.dev

 

728x90

'개념정리 > WEB Hacking 개념 정리' 카테고리의 다른 글

역직렬화 취약점  (0) 2022.03.06
XSS 구분 & 공격 구문  (0) 2022.03.02
직렬화 & 역직렬화 취약점  (0) 2022.02.23
http Header  (0) 2022.02.23