베어_
TechBear
베어_
전체 방문자
오늘
어제
  • 분류 전체보기 (336)
    • Spring (33)
      • 개념 (13)
      • Security (5)
      • 실습 (1)
      • 토비 스프링 (11)
    • JPA (6)
    • 프로젝트 기록 (24)
    • DB (13)
    • JAVA (18)
    • 알고리즘 (50)
      • 유형정리 (8)
      • Baekjoon (21)
      • LeetCode (18)
    • 디자인패턴 (0)
    • 개발서적 (79)
      • Effective Java (78)
      • 객체지향의 사실과 오해 (1)
    • 독후감 (4)
    • 보안 (2)
    • 운영체제(OS) (53)
      • 공룡책 (53)
    • 컴퓨터 네트워크 (28)
      • 컴퓨터 네트워크 하향식 접근 (23)
    • 자료구조 (1)
    • DevOps (2)
    • 앱 개발 (20)
      • 안드로이드 스튜디오 (20)

블로그 메뉴

    공지사항

    인기 글

    태그

    • java
    • 백준
    • BFS
    • 스프링
    • 운영체제
    • 코드업
    • 스레드
    • leetcode
    • jpa
    • dfs
    • 자바8
    • 스프링시큐리티
    • 토비스프링
    • 데이터베이스
    • 이펙티브자바
    • 함수형인터페이스
    • C++
    • 알고리즘
    • Spring
    • 자바

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    베어_

    TechBear

    [Spring] JWT토큰 개념
    Spring/개념

    [Spring] JWT토큰 개념

    2022. 10. 29. 18:29

    JWT 토큰이란?

       사용자 인증을 위해 사용하는 암호화된 토큰으로, 인증받은 사용자에게 토큰을 발급해주고 사용자는 헤더에 이 토큰 정보를 담아 특정 작업을 요청한다. 이러한 토큰은 서버에 따로 저장되지 않고 사용되기 때문에 stateless하다고 할 수 있다.

    JWT 토큰은  헤더, 페이로드, 서명으로 구성되어 있다. 

    빨간색 (헤더), 보라색(페이로드), 파란색(서명)

    1. 헤더

     -> 토큰 타입과, 암호화 알고리즘에 대한 정보가 담긴다.

    {
      "alg": "HS256",
      "typ": "JWT"
    }

     

    2. 페이로드

       토큰에 담을 정보가 들어가며, 정보의 한 조각을 클레임이라고 부른다. 클레임은 key, value 형태로 한 쌍을 이루고 있다.

    2-1. 기본적으로 제공되는 클레임 : 발행시간, 만료 시간 등

    2-2. 공개 클레임 :충돌을 방지하기 위해 URI 형식으로 이름을 갖는다. 

    2-3. 비공개 클레임 : 클라이언트와 서버 간에 사용되는 커스텀된 클레임이다. 

    {
      "sub": "1234567890",
      "name": "John Doe",
      "iat": 1516239022
    }

     

    3. 서명

       토큰을 인코딩하거나 유효성 검증을 할 때 사용되며, 헤더와 페이로드를 암호화한 정보가 담겨 있다.

     

    JWT토큰을 왜 사용할까요?

    이전에는 사용자의 정보를 저장하고 관리(인가)하기 위해 쿠키와 세션을 사용했다. 하지만 이 둘은 다음과 같은 문제가 있다.

    1. 쿠키

     - 요청 시 쿠키의 값을 그대로 보내기 때문에 유출 및 조작 당할 위험이 존재한다.

     - 용량 제한이 있어 많은 정보를 담을 수 없다.

     - 웹 브라우저마다 쿠키의 지원 형태가 다르기 때문에 브라우저간의 공유가 불가능하다

     

    2. 세션

     - 사용자의 정보를 세션 저장소에 저장하고 쓰기 때문에 성능 이슈가 있을 수 있다.

     - 세션 ID가 탈취되면 악용될 수 있는 단점이 있다. 

     

    토큰의 장점과 단점

    1. 장점

       토큰은 세션과 달리 세션 정보를 서버가 아닌 클라이언트 측에 저장하기 때문에 서버의 부담이 확 줄어 든다. 

    2. 단점

       발급된 토큰이 유출이 되는 경우 session과 같이 악의적으로 사용될 가능성이 존재하다. 따라서 엑세스 토큰은 유효시간을 짧게 하고, 리프레시 토큰을 이용해 엑세스 토큰을 갱신하는 방향을 이용한다. 

    저작자표시 비영리 변경금지 (새창열림)
      'Spring/개념' 카테고리의 다른 글
      • OSIV와 필터
      • [Spring] BindingResult를 이용한 검증
      • [Spring] 요청 파라미터
      • [Spring] 쿼리 파라미터 매핑
      베어_
      베어_
      Today I learned | 문제를 해결하는 개발자

      티스토리툴바