Bỏ qua, đến nội dung

Hướng dẫn cài đặt và sử dụng — API Keys

Yêu cầu hệ thống

  • Server Digiforce đang chạy
  • Quyền Admin để truy cập trang cấu hình API Keys

Bước 1: Kích hoạt plugin

Vào Settings → Plugin Manager, tìm plugin-api-keys và bật. Khởi động lại server.

Bước 2: Tạo API Key

Vào Settings → API Keys, nhấn Create:

TrườngMô tảBắt buộc
NameTên mô tả cho key (ví dụ: "CI/CD Pipeline", "Webhook Integration")
RoleRole gán cho key — quyết định quyền truy cập API
Expires InThời hạn token: 30d, 90d, 1y, never

Quy trình tạo key

Quan trọng

API key chỉ hiển thị một lần duy nhất ngay sau khi tạo. Copy và lưu trữ an toàn ngay lập tức. Sau khi đóng dialog, không thể xem lại key.

Bước 3: Sử dụng API Key

Hệ thống bên ngoài gửi API request kèm key trong header:

bash
# Sử dụng Authorization header (khuyến nghị)
curl -H "Authorization: Bearer eyJhbGciOi..." \
  https://your-domain/api/posts:list

Luồng xác thực

API key kế thừa toàn bộ quyền của role được gán. Ví dụ:

Role gán cho keyQuyền truy cập
api-readonlyChỉ đọc dữ liệu (list, get)
editorĐọc và ghi (create, update)
adminToàn quyền (bao gồm cả cấu hình)

Bước 4: Quản lý API Keys

Thao tácMô tảGhi chú
Xem danh sáchTất cả keys của bạn (key value bị ẩn)Chỉ thấy keys do mình tạo
Xoá keyXoá vĩnh viễn — token ngay lập tức mất hiệu lựcKhông thể hoàn tác

Middleware bảo mật

Plugin tự động thêm middleware đảm bảo mỗi user chỉ thấy và xoá được API keys do chính mình tạo. Admin cũng không thể xem keys của user khác.

Các trường hợp sử dụng phổ biến

Tích hợp CI/CD

bash
# GitHub Actions: gọi API để trigger deployment
curl -X POST \
  -H "Authorization: Bearer $DIGIFORCE_API_KEY" \
  -H "Content-Type: application/json" \
  https://your-domain/api/deployments:create

Webhook từ hệ thống khác

bash
# Zapier/n8n gọi API để tạo bản ghi
curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"values": {"title": "New Lead", "status": "open"}}' \
  https://your-domain/api/leads:create

Script tự động hoá

python
import requests

headers = {"Authorization": "Bearer dk_xxxxx..."}
response = requests.get(
    "https://your-domain/api/orders:list",
    headers=headers,
    params={"pageSize": 50}
)
data = response.json()

Thực hành bảo mật tốt nhất

Thực hànhLý do
Tạo role riêng với quyền tối thiểu cho API keyGiới hạn thiệt hại nếu key bị lộ
Không chia sẻ key qua email hoặc chatDùng secret manager (Vault, AWS Secrets)
Đặt thời hạn hợp lýIntegration lâu dài: 6–12 tháng; testing: 7–30 ngày
Xoay key định kỳTạo key mới → cập nhật ứng dụng → xoá key cũ
Theo dõi sử dụngKết hợp audit logs để phát hiện bất thường
Key bị lộ → xoá ngayXoá key tức thì vô hiệu hoá token JWT

Lưu ý

  • API key có quyền theo role được gán — nên tạo role riêng với quyền tối thiểu
  • Key hết hạn tự động bị từ chối — request trả về 401 Unauthorized
  • Rate limit áp dụng như user bình thường
  • Plugin sử dụng JWT do @digiforce-nc/auth ký — cùng cơ chế xác thực với session token