JWT (Json Web Token)

Kyungjong Oh·2021년 6월 16일
0

web

목록 보기
1/1

JWT?

JWT란 속성 정보를 JSON 데이터 구조로 표현한 토큰으로 서버와 클라이언트 간 정보를 주고 받을 때 HTTP request Header(요청 헤더)에 JSON 토큰을 넣어서 요청하면, 서버는 별도의 인증 과정없이 헤더에 포함되어 있는 토큰을 통해 인증할 수 있다.

JWT 구조

  • Header
    - alg: Signature 를 해싱하기 위한 알고리즘 정보를 갖고 있음
    - typ: 토큰의 타입을 나타내는데 없어도 됨. 보통 JWT 를 사용

  • Payload

    서버와 클라이언트가 주고받는 claim 정보(사용자 정보의 한 조각을 클레임이라함)를 포함하고 있음 JWT 가 기본적으로 갖고 있는 키워드가 존재하며 원하는 정보를 추가도 가능

    • iss: 토큰 발급자
    • sub: 토큰 제목
    • aud: 토큰 대상
    • exp: 토큰의 만료시간
    • nbf: Not Before
    • iat: 토큰이 발급된 시간
    • jti: JWT의 고유 식별자
  • Signature

    서버가 가지고있는 비밀키로 Token의 유효성 검증을 위한 암호화된 문자열
    Header + Payload + Secret Key 로 값을 생성하므로 데이터 변조 여부를 판단할 수 있다.

발급/검증 동작 원리


출처

장단점

  • 장점
    - 중앙의 인증 서버와 데이터 스토어에 대한 의존성이 없기 때문에 수평 확장이 용이하다
    - Stateless 한 서버 구현 가능
  • 단점
    - Payload 의 정보가 많아지면 네트워크 사용량 증가
    - 탈취당했을때의 대처가 어려움 -> RefreshToken 으로 대처

0개의 댓글