본문 바로가기

내일배움캠프

TIL30일차

import jwt

encoded_jwt = jwt.encode({"some": "payload"}, "secret", algorithm="HS256")

🤖 Hows Going?

...

너무 쉬고 싶다.

하지만 걸렸으니깐 해야겠지..

 

 

JWT

1. JWT란?

- JWT (JSON Web Token)는 JSON 객체를 사용하여 정보를 안전하게 전달하기 위한 컴팩트하고 자가 포함된 방식의 토큰입니다. 주로 인증 및 권한 부여 메커니즘으로 사용

 

2. JWT 구조

 - JWT의 구조는 기본적으로 3 가지로 구성 된다

 

1) Header(헤더) : 토큰의 유형과 해싱 알고리즘을 지정

- 헤더는 두분으로 구성

  • typ: 토큰의 유형 (JWT)
  • alg: 서명 알고리즘 (예: HMAC SHA256 또는 RSA)
{
  "alg": "HS256",
  "typ": "JWT"
}

 

2) Payload(페이로드) : 토큰의 실제 데이터(클레임)을 포함합니다. 예: 사용자 정보, 토큰의 만료 시간 등

  • sub: 토큰의 주체(보통 사용자 ID)
  • name: 사용자 이름
  • iat: 토큰 발급 시간 (issued at)
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

 

3) Signature(서명) : 서명은 헤더와 페이로드를 인코딩한 후, 비밀 키와 함께 지정된 알고리즘을 사용하여 생성

 

 

 

이렇게 만든 JWT는 다음고 같은 형식을 가짐
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

 

 

 

2. JWT의 사용사례

1. 인증 (Authentication)

사용자가 로그인하면 서버는 사용자의 정보를 포함한 JWT를 발급합니다. 클라이언트는 이후 요청 시 이 JWT를 HTTP 헤더에 포함시켜 서버에 전송합니다. 서버는 JWT를 검증하여 사용자를 식별합니다.

2. 권한 부여 (Authorization)

사용자가 접근하려는 리소스에 대한 권한을 확인하는 데 사용됩니다. JWT의 클레임에 사용자의 권한 정보를 포함시켜 서버에서 이를 확인할 수 있습니다.

 

 

 

3. JWT 장점 단점

장점

  • 자가 포함: 필요한 모든 정보를 자체적으로 포함하여 별도의 데이터베이스 조회가 필요 없습니다.
  • 확장성: 분산 시스템에서 잘 동작합니다.
  • 보안: 서명을 통해 데이터의 무결성을 보장합니다.

단점

  • 토큰 크기: 토큰이 비교적 커서 네트워크 트래픽이 늘어날 수 있습니다.
  • 취소 어려움: 한 번 발급된 토큰을 만료 전까지 취소하기 어렵습니다. 이를 해결하기 위해 블랙리스트를 사용해야 할 수 있습니다.

JWT는 다양한 플랫폼에서 사용되며, 특히 RESTful API 인증에 많이 사용됩니다. 보안을 위해 HTTPS를 통해 전달되어야 하며, 비밀 키는 안전하게 관리되어야 합니다.

 

 

 

 

 

'내일배움캠프' 카테고리의 다른 글

TIL34일차  (0) 2024.06.04
TIL31일차.  (0) 2024.06.03
28일차  (0) 2024.05.29
27일차  (0) 2024.05.28
TiL26일차  (0) 2024.05.22