Xác thực bằng JSON Web Token (JWT) trong Python

Hướng dẫn về cách sử dụng JSON Web Token (JWT) để xác thực trong ứng dụng Python. Bài viết sẽ giới thiệu cách tạo và xác thực token trong một ứng dụng web để bảo vệ API.

JSON Web Token (JWT) là một chuẩn mở để truyền tải thông tin an toàn giữa các bên dưới dạng JSON. Trong bài viết này, bạn sẽ học cách tạo, mã hóa và giải mã JWT bằng Python và cách sử dụng nó để xác thực các API trong ứng dụng web.

Mã Python:

import jwt  # Thư viện PyJWT
import datetime

# Khóa bí mật để mã hóa và giải mã JWT
SECRET_KEY = 'your_secret_key'

# Tạo JWT
def create_jwt(user_id):
    # Tạo payload chứa thông tin người dùng và thời gian hết hạn
    payload = {
        'user_id': user_id,
        'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
    }
    
    # Mã hóa token
    token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
    return token

# Giải mã JWT
def decode_jwt(token):
    try:
        # Giải mã token và trả về payload
        payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
        return payload
    except jwt.ExpiredSignatureError:
        return 'Token has expired'
    except jwt.InvalidTokenError:
        return 'Invalid token'

# Ví dụ sử dụng
if __name__ == "__main__":
    token = create_jwt(123)
    print(f'Token: {token}')
    
    decoded_payload = decode_jwt(token)
    print(f'Payload: {decoded_payload}')

Giải thích chi tiết từng dòng code:

  1. import jwt: Import thư viện PyJWT để làm việc với JSON Web Token.
  2. SECRET_KEY = 'your_secret_key': Định nghĩa khóa bí mật để mã hóa và giải mã JWT.
  3. def create_jwt(user_id): Hàm tạo JWT với user_id và thời gian hết hạn 30 phút.
  4. payload = {...}: Định nghĩa payload chứa thông tin người dùng và thời gian hết hạn.
  5. jwt.encode(...): Mã hóa payload thành JWT sử dụng thuật toán HS256.
  6. def decode_jwt(token): Hàm để giải mã JWT và kiểm tra tính hợp lệ của token.
  7. jwt.decode(...): Giải mã token và trả về payload.
  8. if __name__ == "__main__":: Ví dụ sử dụng các hàm tạo và giải mã JWT.

Yêu cầu hệ thống:

  • Python 3.x
  • Thư viện PyJWT (có thể cài đặt bằng pip install pyjwt)

Cách cài đặt các thư viện để chạy được đoạn mã Python trên:

pip install pyjwt

Lời khuyên:

  • Không nên sử dụng khóa bí mật mặc định hoặc yếu, cần tạo khóa bảo mật mạnh.
  • Xác thực token thường được sử dụng trong API bảo mật, cần lưu ý vấn đề bảo mật như thời gian hết hạn và mức độ bảo mật của khóa bí mật.


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Xóa nền cho hình ảnh bằng thư viện Rembg trong Python

Hướng dẫn chi tiết cách xóa nền cho hình ảnh bằng Python và thư viện Rembg. Bài viết bao gồm mã nguồn và giải thích từng dòng mã.
Tạo ứng dụng chat đơn giản sử dụng Socket.IO trong Python

Hướng dẫn chi tiết cách tạo ứng dụng chat đơn giản bằng Python sử dụng Socket.IO và Flask, cho phép người dùng gửi và nhận tin nhắn theo thời gian thực.
Tạo video từ hình ảnh bằng MoviePy

Hướng dẫn chi tiết cách tạo video từ các hình ảnh bằng Python và thư viện MoviePy. Bài viết bao gồm mã nguồn và giải thích từng dòng mã.
Cách SELECT dữ liệu từ database MySQL bằng Python

Hướng dẫn cách kết nối và truy vấn dữ liệu từ database MySQL bằng Python sử dụng thư viện mysql-connector-python.
Cách UPDATE dữ liệu database MySQL bằng Python

Hướng dẫn cách cập nhật dữ liệu trong database MySQL bằng Python sử dụng thư viện mysql-connector-python.
Cách loại bỏ MultiIndex columns trong Pandas

Bài viết này hướng dẫn cách loại bỏ các cột MultiIndex trong DataFrame của Pandas, một tính năng hữu ích khi làm việc với dữ liệu phức tạp có nhiều chỉ mục. Bạn sẽ học cách làm phẳng MultiIndex hoặc loại bỏ chúng hoàn toàn.
Tổng hợp tất cả các cách sử dụng hàm print trong Python

Hướng dẫn chi tiết về tất cả các cách sử dụng hàm print() trong Python, bao gồm các tùy chọn định dạng, tham số và cách sử dụng nâng cao.
Các chức năng thường dùng khi sử dụng Selenium Chrome trong Python

Bài viết giới thiệu các chức năng thường dùng khi sử dụng Selenium với Chrome trong Python, giúp tự động hóa các tác vụ như tìm kiếm, tương tác với các phần tử trên trang web, và điều hướng trình duyệt.
Hướng dẫn làm form đăng nhập tài khoản trong Python bằng PyQT6

Hướng dẫn chi tiết cách tạo form đăng nhập tài khoản trong Python sử dụng PyQT6, bao gồm cách thiết kế giao diện và xử lý sự kiện khi người dùng nhấn nút đăng nhập.
Xử lý đa luồng trong Python

Hướng dẫn chi tiết cách xử lý đa luồng trong Python bằng cách sử dụng thư viện `threading` và `concurrent.futures`. Bài viết này giúp bạn hiểu cách sử dụng đa luồng để tăng hiệu suất xử lý đồng thời trong các tác vụ.

Đã thêm vào giỏ hàng