231024 개발일지 TIL - JWT(JSON Web Token)

The Web On Everything·2023년 10월 24일
0

개발일지

목록 보기
167/269

JWT(JSON Web Token) 안전하고 효율적인 데이터 전송

JWT(JSON Web Token)는 정보를 안전하게 전송하기 위한 컴팩트하고 독립적인 방법을 제공하는 표준 인증 방식이다. 이 정보는 디지털 서명되므로 검증 및 신뢰할 수 있다. JWT는 일반적으로 웹 애플리케이션에서 인증과 정보 교환의 중요한 도구로 활용된다.

JWT의 구조

  1. Header: 토큰의 타입과 해싱 알고리즘 등
  2. Payload: 클레임(정보 단위)들
  3. Signature: Header와 Payload를 합친 후, 비밀키로 해싱하여 생성
    각 부분은 (.)으로 구분되며, 각각 Base64Url로 인코딩

JWT 사용 이유

  • 상태 유지 필요 없음: JWT는 자체적으로 상태 정보를 가지고 있어서, 서버가 사용자에 대한 상태를 유지할 필요가 없다.
  • 분산 시스템 지원: 한 서비스가 생성한 JWT는 다른 서비스에서도 그대로 사용할 수 있다.
  • 보안: JWT는 디지털 서명되므로, 수신 측은 발신 측이 보낸 정보가 변경되지 않았음을 확인할 수 있다.
  • 사용 편의성: JSON 형식으로 데이터를 보관하기 때문에 처리하기 매우 용이하다.
  • 모바일 애플리케이션 호환성: 모바일 앱 환경에서 쿠키 관리가 어렵기 때문에 JWT와 같은 토큰 기반 인증 방법이 더욱 유용하다.

JWT vs 다른 인증 방법들

세션 기반 인증에서는 사용자가 로그인하면 서버 메모리에 사용자의 세션 ID와 상태정보를 저장한다. 반면에 JWT에서는 사용자 상태 정보가 서버 메모리에 저장되지 않는다. 이로 인해 서버의 부하가 줄어들고 확장성이 향상된다.

OAuth는 권한 부여 프로토콜로서, 한 애플리케이션이 다른 애플리케이션에서 리소스를 안전하게 액세스 할 수 있도록 한다. 반면 JWT는 간단한 자체 포함된 토큰으로, 사용자 인증 및 정보 교환에 사용된다.

결론적으로, JWT는 웹과 모바일 환경에서 안전하고 효율적인 데이터 전송을 위한 중요한 도구이다. 하지만 한 번 발급된 JWT의 내용을 수정하거나 폐기하는 것은 복잡할 수 있으며, 만료 시간 관리 등 추가적인 고려 사항들도 요구된다.

profile
오늘은 무슨 오류를 만날까?! 널 만나러 가는 길~ LOL

0개의 댓글