JWT(Json Web Token)

2022. 6. 27. 20:12·CS/네트워크

지난 시간에 이어 JWT 에 대해서 이야기 해보겠습니다. 

 

Json 포맷을 사용하여, 토큰 자체를 정보로 사용하는 방식으로 주로 회원 인증이나, 정보 전달에 사용된다.

 

 

 

  • JWT 구조
    • Header, Payload, Signature 의 3 부분으로 이루어지며, JSON 형태인 Base64Url 로 인코딩 되어 표현된다.
    • 각각의 부분을 이어 주기 위해서 . 구분자를 사용하여 구분한다.
     
    1. Header
      • 토큰의 헤더는 typ, alg 두 가지 정보로 구성된다.
      • alg 는 헤더를 암호화 하는 것이 아니라, signature 를 해싱하기 위한 알고리즘을 지정하는 것이다.
        • typ : 토큰의 타입을 지정 ex)JWT
        • alg : 알고리즘 방식을 지정하며, signature 및 토큰 검증에 사용
    2. payload
      • 토큰의 페이로드에는 토큰에서 사용할 정보의 조각들인 클래임(Claim)이 담겨있다.
    3. signature
      • signature 는 토큰을 인코딩 하거나, 유효성 검증을 할 때 사용하는 고유한 암호화 코드이다.
      • signature 은 헤더와 페이로드의 값을 각각 Base64Url 로 인코딩하고, 인코딩 한 값을 비밀 키를 이용해 헤더에서 정의한 알고리즘으로 해싱하고, 다시 Base64Url 로 인코딩 하여 생성한다
  • JWT 단점 및 고려사항
    • 토큰 자체의 정보를 담고 있기에 양날의 검이 될 수 있다.
      ⇒ 토큰의 목적은 정보 전달이 아니다!! 인증의 목적이 있다!!
    • Payload 인코딩 : 페이로드 자체는 암호화 된 것이 아니라, Base64Url 로 인코딩 된 것이다. 중간의 payload 를 탈취하여 디코딩 하면 바로 볼 수가 있기에, 중요 데이터를 포함하지 않아야 한다.
    • JWT 는 상태를 저장하지 않기 때문에, 한번 만들어지면 제어가 불가능하다. 즉 토큰을 임의로 삭제하는 것이 불가능하기 때문에, 토큰 만료 시작을 꼭 넣어주어야 한다.
    • 토큰을 클라이언트에서 관리해야 하기 때문에, 토큰을 저장해야 한다.

'CS > 네트워크' 카테고리의 다른 글

[IT 엔지니어를 위한 네트워크 입문] Chapter2. 네트워크 연결과 구성요소  (0) 2023.01.10
[IT 엔지니어를 위한 네트워크 입문] Chapter1 네트워크 시작하기  (1) 2023.01.10
세션과 토큰  (0) 2022.06.27
리다이렉션?  (0) 2022.06.01
컴퓨터는 인터넷에서 어떻게 통신할까?  (0) 2022.05.30
'CS/네트워크' 카테고리의 다른 글
  • [IT 엔지니어를 위한 네트워크 입문] Chapter2. 네트워크 연결과 구성요소
  • [IT 엔지니어를 위한 네트워크 입문] Chapter1 네트워크 시작하기
  • 세션과 토큰
  • 리다이렉션?
gugbab2
gugbab2
국밥과 커피를 사랑하는 개발자 gugbab2 입니다.
  • gugbab2
    개발하는 프로 국밥러
    gugbab2
  • 전체
    오늘
    어제
    • 분류 전체보기 (48)
      • 프로젝트 (5)
      • 생각정리 (0)
      • Backend (0)
        • 소소한 백엔드 개발 이야기 (0)
        • Spring (0)
        • JPA (0)
      • 언어 (12)
        • Java (12)
      • CS (17)
        • 네트워크 (17)
      • 아키텍처 (14)
        • OOP (14)
        • TDD (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발
    공부하자
    하드웨어
    의존성
    github
    설계
    객체지향
    happends-before
    동시성
    Executor
    스위치
    언어
    객체
    프로젝트
    비전공
    제네릭
    개발블로그
    LACP
    리뷰
    자바
    개발자
    타입
    비동기
    네트워크
    방화벽
    책
    오브젝트
    MC-LAG
    새해
    토큰
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gugbab2
JWT(Json Web Token)
상단으로

티스토리툴바