ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JWT란?
    ETC. 2022. 4. 10. 01:07

    JWT(Json Web Token)는(은) 클라이언트와 서버 통신 시 Authorization을 위해 필요한 정보들을 암호화 하여 사용하는 토큰입니다.

     

    구조

    HEADER.PAYLOAD.VERIFIED SIGNATURE
    • HEADER: 알고리즘(암호화 방식), 토큰타입 명시
    {
    	"alg": "HS256",
    	"typ": "JWT"
    }
    • PAYLOAD: 데이터가 들어있다 (보호해야할 데이터!)
    {
    	"user_id": "123456",
    	"name": "Jeongmin Lee",
    	"expire_date": "유효기간"
        ...
    }

     

    • VERIFIED SIGNATURE: SECRET_KEY (Base64 인코딩)
    HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
    	SECRET_KEY
    )
    secret base64 encoded

    JWT 인증 방식

    장점

    • 간편하다. 세션/쿠키는 별도 저장소의 관리가 필요하지만 JWT는 발급 후에 검증만 하면 되기 때문에 저장소가 필요 없다. 서버를 확장, 유지, 보수하는데 유리하다.
    • 확장성이 뛰어나다. 토큰 기반으로 하는 다른 인증 시스템에 접근이 가능하다. 예) Facebook 로그인, Google 로그인 등

    단점

    • 세션/쿠키의 경우, 악의적인 이용이 있다면 해당 세션 삭제가 가능하다. 이미 발급된 JWT는 유효기간 만료 전까진 삭제가 불가능하다. 정보 해킹의 위험이 높다! (해결책으로 기존 토큰의 시간을 짧게 하고 새로운 토큰은 발급!!)
    • PAYLOAD 정보가 제한적이다. 따로 암호화가 되지 않아서 디코딩으로 누구든 정보 확인이 가능. 유저의 중요 정보는 PAYLOAD에 담을 수 없다. (세션/쿠키 방식에서는 유저의 정보가 전부 서버의 저장소에 안전하게 보관)
    • JWT의 길이가 길다. (자원낭비!)
    반응형

    'ETC.' 카테고리의 다른 글

    RESTful API란..?  (0) 2022.04.21
    API란?  (0) 2022.04.11
© 2021 J.LOG