[6주차 05] JWT

개발냥이·2025년 2월 28일

데브코스

목록 보기
23/75
post-thumbnail

인증과 인가

  • 인증

    • 사용자의 신원을 확인하는 갓
    • ex 마이 페이지를 볼 때 , 로그인
  • 인가

    • 인증 후에 사용자의 권한을 결정하는 것
    • ex 데이터 접근 , 파일 접근

쿠키와 세션

세션쿠키
저장 위치서버클라이언트
크기(용량)서버 메모리(무제한)각 쿠키당 4KB
보안쿠키에 비해 안전세션에 비해 불안전
유효 기간설정에 따라 달라짐만료 날짜에 따라 달라짐

쿠키

웹에서 서버와 클라이언트가 주고받는 데이터 중 하나로

로그인 시
1. 클라이언트에서 로그인
2. 서버가 쿠키를 만들어주면 클라이언트에서 저장
3. 1 , 2 번 반복

이과정을 반복한다.
서버에 따로 저장하지 않고 쿠키(클라이언트)에 저장하기 때문에
서버 부담이 감소 하고 클라이언트에 저장되어 있기 때문에 빠른 접근이 가능 하다.

하지만 반대로 서버에 저장되어 있지 않기 때문에 보안에 취약 하며 용량이 제한적 이라는 단점도 존재한다.
따라서 민감한 정보를 저장하는 것은 피해야 한다.

세션

웹에서 서버와 클라이언트간 상호작용을 위한 것으로
사용자가 웹 애플리케이션에 접속하는 동안의 상태 정보 를 저장한다.

어떤 사이트에 로그인을 한 후 다른 탭에 들어갔다 와도 로그인 상태가 유지되는 것이
세션의 예시라고 볼 수 있다.

로그인 시
1. 서버가 금고를 만들고 금고 번호 제공
2. 서버와 클라이언트가 번화를 가지고 상호작용

쿠키와는 다르게 서버에 저장하기 때문에 보안이 쿠키에 비해서 좋다
하지만 반대로 서버에 저장하기 때문에 서버에 부담을 준다는 단점 도 존재한다.


JWT

Json Web Token의 줄임말로 JSON 형태로 데이터를 담아 웹에서 사용하는 토큰이다.

예시로 로그인 시 토큰으로 사용자가 본인임을 증명하고 로그인 할 수 있다.

  • 장점

    • 암호화 되어 토큰으로 저장되기 때문에 보안에 강하다
    • eyJzdWIiOiAiM... 이런식으로 헤더 + 페이로드 형태로 저장됨
    • 서버가 상태를 저장하지 않아 HTTP 특징을 잘 따르고 있다.
    • 서버의 부담을 줄여준다
  • 구조

    • 헤더 : 토큰의 유형 + 사용할 알고리즘 정의

      {
      	"alg": "HS256",
      	"typ": "JWT"
       }
      	```
    • 페이로드 : 실제 데이터가 담김

      {
      "sub": "1234567890",
      "name": "John Doe",
      "iat": 1516239022
       }
      	```
       
       
    • 서명 : 헤더 + 페이로드 조합

      
      HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      your-256-bit-secret
      )

profile
웹 개발자가 되고픈

0개의 댓글