Chuyển tới nội dung chính

JWT Policy

Tổng Quan

Chính sách JWT (JSON Web Token) được sử dụng để xác thực token được bao gồm trong các yêu cầu API. Nó đảm bảo rằng chỉ những người dùng có token hợp lệ, được tạo ra bằng cách sử dụng JWT KEY và SECRET đúng của dự án, mới có thể truy cập API.

Chính sách này hỗ trợ xác thực token dựa trên các đường dẫn đã chọn bằng cách sử dụng chế độ RequiredPath hoặc NotRequiredPath. Ngoài ra, nó có thể được kết hợp với chức năng tokenBlacklistLogoutPath để vô hiệu hóa token khi đăng xuất.

Các Thuật Toán Hỗ Trợ:

  • HS256 (HMAC SHA-256)
  • RS256 (RSA SHA-256)

Quy Tắc Token JWT

Để xác thực thành công một token JWT trong APIM:

  • Token JWT phải được bao gồm trong tiêu đề Authorization:
Authorization: bearer JWT_TOKEN
  • Payload của token phải chứa:
    • "apim_key_claim_name" với JWT KEY của dự án.
    • "exp" trường để chỉ định thời gian hết hạn của token.

Ví dụ Payload:

"apim_key_claim_name": "64c44d593be841bcec7fe768184e4c7e",
"exp": 1900000000

Ví dụ Tiêu Đề:

"alg": "HS256",
"typ": "JWT"

Token JWT Mẫu:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcGltX2tleV9jbGFpbV9uYW1lIjoiNjRjNDRkNTkzYmU4NDFiY2VjN2ZlNzY4MTg0ZTRjN2UiLCJleHAiOjE5MDAwMDAwMDB9.1kB5k-vM2Cef7ZYTyJUQ-LsDUmG4K7sJUfrJ3FqgYxQ

Chi Tiết Cấu Hình

Khớp Đường Dẫn JWT

Xác minh JWT có thể được áp dụng cho các đường dẫn đã chọn bằng cách sử dụng hai chế độ:

Option Description
RequiredPathÁp dụng xác thực JWT chỉ cho các cặp phương thức/đường dẫn được liệt kê. Tất cả các đường dẫn khác sẽ không yêu cầu JWT.
NotRequiredPathÁp dụng xác thực JWT cho tất cả các đường dẫn ngoại trừ những đường dẫn được liệt kê.
ghi chú

Chỉ một chế độ (RequiredPath hoặc NotRequiredPath) có thể được sử dụng tại một thời điểm. Chuyển đổi chế độ sẽ đặt lại các cài đặt trước đó.

Định Dạng Đầu Vào:

Method_Path

Ví dụ:

GET_/v1/test
Áp dụng cho các yêu cầu GET tại /v1/test
POST_/v1/example
Áp dụng cho POST tại /v1/example
ANY_/v1/apis
Áp dụng cho tất cả các phương thức HTTP tại /v1/apis
GET_/v1/apis*
Áp dụng cho tất cả các đường dẫn con dưới /v1/apis (ví dụ: /v1/apis/a)

tokenBlacklistLogoutPath

Tính năng này cho phép APIM đưa một token JWT vào danh sách đen khi có yêu cầu đăng xuất và trả về thành công HTTP 200 từ API Gateway.

Toggle Field:

FieldDescription
useJWTBlacklistRevokingKhi được kích hoạt, các token JWT sẽ được thêm vào bộ nhớ danh sách đen khi có phản hồi đăng xuất. Điều này ngăn chặn việc sử dụng token đó nữa.
ghi chú

Không thể thay đổi: Chuyển đổi để ngăn chính sách này bị xóa.

Không thể thay đổi giá trị cài đặt: Chuyển đổi để ngăn thay đổi các giá trị cấu hình sau khi thiết lập.

Redis Configuration (used to store blacklisted tokens)

Tùy chọn 1: APIMRedis - Redis hệ thống mặc định; không cần cấu hình thủ công.

Tùy chọn 2: CustomRedis

Configuration FieldDescription
Redis HostĐịa chỉ của máy chủ Redis (ví dụ: 127.0.0.1).
Redis PortSố cổng của máy chủ Redis (ví dụ: 6379).
Redis PasswordMật khẩu để xác thực.
Redis DatabaseChỉ định chỉ số cơ sở dữ liệu nào để sử dụng (ví dụ: 1).
Redis Pool SizeSố lượng kết nối tối đa trong pool kết nối Redis (mặc định: 1000).
Redis Pool BacklogSố lượng yêu cầu tối đa đang chờ một kết nối khả dụng (mặc định: 30).

Tùy chọn 3: RedisCluster

Configuration FieldDescription
Redis Cluster NodesĐịa chỉ nút cụm (ví dụ: redis-cluster.apim:6379).
Redis Cluster PasswordMật khẩu để xác thực.
Redis Cluster NameChỉ định tên cụm (ví dụ: kong_redis_cluster).
Redis Connect TimeoutThời gian chờ để thiết lập kết nối Redis (mặc định: 1000ms).
Redis Read TimeoutThời gian chờ để đọc dữ liệu từ Redis (mặc định: 1000ms).
Redis Send TimeoutThời gian chờ để gửi dữ liệu đến Redis (mặc định: 1000ms).
Redis Pool SizeSố lượng kết nối tối đa trong pool kết nối Redis (mặc định: 1000).
Redis Pool BacklogSố lượng kết nối đang chờ tối đa (mặc định: 30).
Redis Keepalive TimeoutThời gian nhàn rỗi tối đa trước khi kết nối Redis bị đóng (mặc định: 55000ms).