ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WEB] JWT란?
    WEB 2020. 8. 25. 21:38
    728x90
    • JSON Web Token의 약어
    • JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim기반의 Web Token으로 RFC-7519 표준
    • 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 전달

    구조

    1. Header
      • typ와 alg 두 가지 정보로 구성됨
      • typ : 토큰의 타입 지정
      • alg : Signature를 만드는 해시 암호화 알고리즘 지정
    2. Payload
      • 토큰에 담을 Claim 정보를 포함(key-value 쌍으로 이루어짐)
      • Registered, Public, Private의 3가지 유형으로 나뉨
      • 만료일시, 발급일시, 발급자, 권한정보 등이 포함
    3. Signature
      • Payload가 위변조되지 않았다는 사실을 증명하는 문자열
      • Header, Payload, Secret Key를 포함하여 암호화되어 있음

    Client-Server 인증 과정

    1. Clinet에서 로그인
    2. Server에서 로그인 확인 후 Scret Key를 통해 Access Token을 발급하여 Client에 JWT 반환
    3. Client에서 JWT를 보관하다가 Server에 요청을 할 때 마다 JWT를 Request Header에 포함하여 전달
    4. Server는 Client가 전달한 JWT의 Signature를 확인하고 JWT에서 사용자 정보를 확인
    5. 사용자 정보가 올바르다면 Client의 Request에 대한 Response

    장점

    • 사용자 인증에 필요한 정보가 토큰 자체에 포함되어 있기 때문에 별도의 인증 저장소가 필요없음
    • 서버를 확장하거나 유지, 보수하는데 유리
    • 토큰 기반으로하는 다른 인증 시스템에 접근 가능

    단점

    • 한번 발급된 토큰은 값을 수정하거나 폐기가 불가능
      • 세션/쿠키 방식의 경우 SessionID가 변질되었다고 판단되면 세션을 지우면 되지만 JWT는 한 번 발급되면 유효기간이 종료될 때 까지 사용가능하므로 유효기간이 종료되기 전까지 정보들을 탈취할 수 있음
    • 세션/쿠키 방식에 비해 JWT의 길이가 길어 인증이 필요한 요청이 많아질수록 서버의 자원낭비가 커짐
    728x90

    'WEB' 카테고리의 다른 글

    [WEB] MSA(Microservices Architecture)란?  (0) 2020.09.01
    [WEB] Elasticsearch 란?  (0) 2020.08.26
    [Web] IaaS PaaS SaaS란?  (0) 2020.08.20
    함수형 프로그래밍이란?  (0) 2020.08.09
    [Web] Forwad와 Redirect의 차이  (0) 2020.08.02
Designed by Tistory.