JWT (JSON Web Token)

mangojang·2023년 5월 20일
0

JWT 인증 방식이란?

  • JSON 형식의토큰을 주고 받으면서 인증 하는 방식
  • 토큰을 헤더에 실어 서버가 클라이언트를 식별 할 수 있도록 함.
  • 기존의 세션 인증 방식을 보완한 방법

구성

  1. Header : 해시 알고리즘 등의 메타 정보 포함

  2. Payload : key:value 형식의 정보

  3. Signature: Header + Payload + Key 를 해싱한 값

    ▶️ 서버에서 대조 하는 값 (이 때 서버는 비밀 키(secret key)를 사용 )

참고 사이트

https://jwt.io/

Token 인증 방식

특징

  • 토큰에 사람 정보가 들어 있음.
  • DB를 조회하지 않고 토큰 검증 가능
  • 서버 에서 비밀키만 가지고 있으면 토큰 검증 가능
  • 서로 다른 웹 서버에 대해서 동작 가능 (= 쿠키와 다른 점)
  • 탈취당하면 정보 다 털림 → 사용기한 부여
  • 데이터를 변경하면 해시값이 변경 되므로 공격자가 payload 변경이 불가
  • 장점 : 위조 방지, 서버 메모리 이점 (DB 조회X)
  • 단점: payload 보안이 안되므로, 민감한 정보는 넣으면 안됨.

과정

출처 - https://joosjuliet.github.io/jwt-session/

  1. Client → Server : 로그인 페이지 요청
  2. Server → Client : 로그인 페이지 응답
  3. Client → Server : 로그인 요청 (ID, Passowrd)
  4. Server : 토큰 생성
  5. Server → Client : 토큰 응답
  6. Client : 토큰 저장
  7. Client → Server : 토큰과 함께 정보 요청
  8. Server → Client : 토큰 검정 및 응답
  9. Client → Server : Refresh Token으로 Access Token 재요청
  10. Server → Client : Access Token 재발급

참고 문헌

profile
한 걸음 한 걸음 계속 걷는 자가 일류다

0개의 댓글