Giao thức CLV1 đã công khaiĐọc đặc tả
Mục lục thư viện

Thư viện tài liệuBảo mật

Nhật ký hoạt động

Mỗi lần phần mềm của bạn kích hoạt key, đăng nhập, bắt đầu dùng thử hay tải bản cập nhật, ClavisAUH ghi lại một dòng: sự kiện gì, được chấp nhận hay bị từ chối, và vì sao. Khi khách báo "không vào được", đây là nơi đầu tiên bạn nên mở.

12 phút đọc

Mở nhật ký

  1. Vào Không gian làm việc › Ứng dụng và mở ứng dụng cần xem.
  2. Chọn Bảo mật ứng dụng › Nhật ký hoạt động. Khi đang ở trong một ứng dụng, bạn cũng có thể bấm g rồi y.

Mọi thành viên của workspace đều xem được trang này. Dòng mới nhất nằm trên cùng, danh sách tự làm mới mỗi 20 giây và tải 50 dòng mỗi lần; bấm Tải cũ hơn ở cuối danh sách để xem tiếp.

Muốn xem riêng một key, mở Phát hành & bản quyền › License và bấm vào dòng key (hoặc Xem chi tiết trong menu của dòng). Mục Lượt gọi SDK gần đây trong ngăn chi tiết liệt kê 10 dòng nhật ký mới nhất của license đó, kèm lý do nếu bị từ chối.

Mỗi dòng ghi lại gì

TrườngNội dung
Sự kiệnLoại yêu cầu, ví dụ license.activate (xem bảng bên dưới)
Kết quảok, denied hoặc error
Lý doMã lý do khi bị từ chối hoặc lỗi, trùng với err.code mà SDK nhận được
LicenseLicense liên quan, khi máy chủ đã xác định được
Người dùngTài khoản người dùng cuối, với các lần đăng ký, đăng nhập và đổi key thành công
Thiết bịMáy liên quan, với các lần thành công
IPĐịa chỉ IP của yêu cầu
Quốc giaMã quốc gia của yêu cầu từ phần mềm, chỉ có khi máy chủ API chạy sau Cloudflare
Thời gianThời điểm ghi

Bảng trên trang hiện chấm màu kết quả, Sự kiện, Lý do, IP (ẩn trên màn hình hẹp) và Thời gian dạng tương đối; rê chuột lên thời gian để xem ngày giờ chính xác. License, người dùng, thiết bị và quốc gia được lưu cùng dòng nhưng chưa có cột riêng; để xem theo key, dùng mục Lượt gọi SDK gần đây nói trên.

Ba kết quả:

  • Chấp nhận (chấm xanh): yêu cầu thành công.
  • Từ chối (chấm đỏ): yêu cầu đúng giao thức nhưng bị trạng thái license hoặc luật của bạn chặn. Dòng này có thể gắn license liên quan, nhưng không gắn người dùng và thiết bị.
  • Lỗi (chấm vàng): lỗi bất ngờ phía máy chủ. Lý do luôn là internal_error (Lỗi máy chủ) và không gắn license.

Các sự kiện được ghi

Sự kiệnNhãn trên dashboardKhi nào
license.activateKích hoạt keyclavis.activate(key)
trial.startDùng thửclavis.trial()
user.registerNgười dùng đăng kýclavis.register(...)
user.loginNgười dùng đăng nhậpclavis.login(...)
user.redeemĐổi key nâng cấpclavis.redeem(key)
device.releaseTự trả suất máyclavis.transfer()
session.logoutĐăng xuấtclavis.logout() thành công
release.checkKiểm tra cập nhậtclavis.checkUpdates() khi kênh có bản phát hành
release.downloadTải bản cập nhậtPhần mềm tải file qua link trong manifest cập nhật
client.reportSDK báo can thiệpSDK gửi báo cáo can thiệp hoặc báo câu trả lời không xác minh được
portal.device_release(hiện nguyên mã)Khách gỡ máy trong cổng khách hàng

Sáu sự kiện đầu được ghi ở cả ba kết quả. Năm sự kiện còn lại chỉ ghi lần thành công. Link tải bạn lấy từ dashboard không tạo dòng release.download. Với client.report, Chấp nhận nghĩa là máy chủ đã nhận báo cáo, không có nghĩa máy đó an toàn; mỗi phiên được ghi tối đa 5 báo cáo mỗi giờ.

Những gì không có trong nhật ký

  • init(), heartbeat() và variables() không tạo dòng nào, kể cả khi lỗi, ví dụ session_expired lúc gọi heartbeat. Lỗi phiên khi gọi checkUpdates() cũng không được ghi.
  • Yêu cầu bị chặn ngay ở lớp giao thức, trước bước xử lý: thiếu header, chữ ký sai, request bị phát lại, đồng hồ lệch (clock_skew), body sai định dạng, ứng dụng đang tạm dừng, IP đang bị Protect chặn, hoặc luật ở tab Quy tắc truy cập (access_blocked). Phần mềm vẫn nhận đúng mã lỗi, và phần lớn các trường hợp này được Protect 24/7 ghi thành tín hiệu như Chữ ký giả mạo, Yêu cầu phát lại, Lệch đồng hồ hay Bị chặn bởi luật truy cập. Riêng clock_skew, SDK JavaScript tự chỉnh đồng hồ theo máy chủ và thử lại một lần.
  • Các mã unsigned_response, unknown_key, invalid_response_signature và stale_response do SDK tự sinh khi không xác minh được câu trả lời, nên không bao giờ là lý do trong nhật ký. Ở lần nhận được câu trả lời hợp lệ kế tiếp, SDK JavaScript báo lại cho máy chủ và bạn thấy một dòng SDK báo can thiệp.

Lọc nhật ký

Thanh lọc ở đầu trang có bốn lựa chọn: Tất cả, Chấp nhận, Từ chối, Lỗi. Lựa chọn được giữ trên URL (ví dụ ?outcome=denied), nên bạn có thể đánh dấu trang hoặc gửi link cho đồng đội để mở thẳng danh sách bị từ chối. Hiện trang chỉ lọc theo kết quả.

Khi khách báo lỗi, cách tìm nhanh nhất:

  1. Mở Bảo mật ứng dụng › Nhật ký hoạt động và chọn Từ chối.
  2. Tìm dòng theo thời điểm khách thử và IP của khách.
  3. Đọc cột Lý do rồi tra bảng bên dưới.
  4. Nếu biết key, mở license đó để xem Lượt gọi SDK gần đây và danh sách thiết bị.

Mã lý do từ chối

Cột Nhãn là chữ hiện ở cột Lý do. Mã chưa có nhãn được hiện nguyên văn. Danh sách mã lỗi đầy đủ của giao thức có trong tham chiếu giao thức.

Key, license và đăng nhập

MãNhãnÝ nghĩa
invalid_credentialsThông tin đăng nhập không hợp lệSai tên đăng nhập hoặc mật khẩu. Với SDK JavaScript (giao thức CLV1.1), key không tồn tại, bị tạm khoá, bị thu hồi hay đã hết hạn cũng trả về mã này, trừ khi chính máy đó đang giữ suất của key, để kẻ dò key không phân biệt được key nào có thật
invalid_keyKey không tồn tạiKey không thuộc ứng dụng này; chỉ client dùng giao thức CLV1 cũ nhận mã này
license_expiredLicense hết hạnĐã qua ngày hết hạn và cả số ngày ân hạn của gói
license_suspendedLicense bị tạm khoáKey đang bị Tạm khoá
license_revokedLicense bị thu hồiKey đã bị Thu hồi hoặc đã bị xoá
too_many_attemptsThử quá nhiều lầnCùng một IP đã nhập sai key hoặc mật khẩu 20 lần vào ứng dụng; IP đó phải đợi tối đa 15 phút, IP khác không bị ảnh hưởng
mode_not_allowedsai cửa đăng nhậpPhần mềm gọi hàm mà chế độ đăng nhập của ứng dụng không nhận, xem Chế độ đăng nhập và dùng thử

Thiết bị và phiên

MãNhãnÝ nghĩa
device_limitVượt số thiết bịKey đã đủ số máy, xem Thiết bị, HWID và chuyển máy
device_blockedthiết bị bị chặnMáy đã bị chặn trong ứng dụng này
session_limitvượt số phiên cùng lúcKey đã chạm số phiên đồng thời cho phép
session_device_mismatchphiên của máy khácMã phiên được gửi từ một máy có khoá thiết bị khác, thường là phiên bị sao chép
transfer_limitedchuyển máy đang bị giới hạnHết lượt chuyển máy hoặc đang trong thời gian chờ
transfer_not_allowedkhông được tự chuyển máyGói không cho khách tự chuyển máy

device_limit và session_device_mismatch được Protect 24/7 tính là tín hiệu Chia sẻ key, session_limit là Vượt phiên đồng thời.

Tài khoản người dùng

MãNhãnÝ nghĩa
user_bannedNgười dùng bị cấmTài khoản đã bị Cấm
no_licenseTài khoản chưa có licenseTài khoản không gắn license nào
username_takenTên đăng nhập đã cóTên đăng nhập đã được dùng trong ứng dụng
license_already_registeredLicense đã được đăng kýKey đã gắn với một tài khoản khác
user_limitđủ số tài khoản của góiỨng dụng đã đủ số người dùng gói workspace cho phép; gói có hạn mức mềm (Premium mặc định) không chặn ở bước này
account_requiredcần đăng nhập tài khoảnGọi redeem() khi chưa đăng nhập bằng tài khoản
already_redeemedkey đã thuộc tài khoản nàyĐổi lại đúng key tài khoản đang dùng

Dùng thử

MãNhãnÝ nghĩa
trial_unavailableapp chưa mở dùng thửKhông gói nào của ứng dụng có Số ngày thử lớn hơn 0
trial_usedmáy đã dùng thửMáy này đã dùng lượt thử và sau đó đã kích hoạt key mua
trial_expiredhết thời gian thửLượt thử đã hết và ô Hết thử thì về của gói là Dừng hẳn
trial_deniedmáy rủi ro không được thửIP của máy đang có điểm rủi ro cao trong Protect 24/7

Phiên bản và bảo trì

MãNhãnÝ nghĩa
update_requiredcần cập nhậtPhiên bản thấp hơn Phiên bản tối thiểu trong Phát hành & bản quyền › Bản phát hành
build_blockedbản bị chặnPhiên bản hoặc file đang chạy thuộc một bản phát hành đã bị Chặn bản này
unknown_buildbản build lạKiểm tra toàn vẹn build ở chế độ Chặn, ứng dụng đã có bản phát hành, và hash file đang chạy không khớp file nào trong đó
maintenanceđang bảo trìChế độ bảo trì đang bật

Đọc lý do từ chối trong phần mềm

Mã ở cột Lý do chính là err.code mà SDK ném ra. Hãy dùng nó để hiện thông báo dễ hiểu cho khách, và để đối chiếu với nhật ký khi hỗ trợ.

import { ClavisError, ClavisVerificationError } from "@clavisauh/sdk";

const MESSAGES: Record<string, string> = {
  invalid_credentials: "Key hoặc tài khoản không hợp lệ.",
  device_limit: "Key đã dùng đủ số máy. Hãy gỡ một máy cũ rồi thử lại.",
  license_expired: "License đã hết hạn.",
  too_many_attempts: "Bạn đã thử sai quá nhiều lần, vui lòng đợi ít phút.",
  update_required: "Vui lòng cập nhật lên phiên bản mới.",
};

try {
  await clavis.activate(licenseKey);
} catch (err) {
  if (err instanceof ClavisVerificationError) {
    // Không xác minh được câu trả lời: coi như mất kết nối, không đổi trạng thái license
  } else if (err instanceof ClavisError) {
    // Kèm mã lỗi để khách gửi lại, bạn tra đúng dòng trong Nhật ký hoạt động
    showMessage(`${MESSAGES[err.code] ?? err.message} (${err.code})`);
  }
}

Biểu đồ ở trang Tổng quan

Trang Không gian làm việc › Tổng quan tổng hợp nhật ký của mọi ứng dụng trong workspace:

  • Ô Lượt đăng nhập · 30 ngày cộng các lượt đăng nhập được chấp nhận trong 30 ngày qua (cùng số liệu với biểu đồ bên dưới), kèm một đường xu hướng nhỏ.
  • Biểu đồ Lượt đăng nhập vẽ theo ngày (UTC) trong 30 ngày: Chấp nhận là vùng tô màu, Từ chối là nét đứt. Chỉ ba sự kiện được tính: kích hoạt key, người dùng đăng nhập và người dùng đăng ký. Dùng thử, đổi key, đăng xuất hay cập nhật không nằm trong biểu đồ.
  • Thẻ Lý do bị từ chối liệt kê tối đa 6 lý do gặp nhiều nhất trong 7 ngày qua, tính trên mọi sự kiện. Lần từ chối không có mã được gộp vào Khác.

Trang Tổng quan của từng ứng dụng có cùng biểu đồ Lượt đăng nhập, chỉ tính ứng dụng đó. Các ô License đang dùng, Key chưa dùng và Phiên đang hoạt động lấy từ license và phiên, không từ nhật ký.

Nhật ký cũng là nguồn dữ liệu cho Protect 24/7: biểu đồ theo giờ đếm lượt chấp nhận và từ chối, và tín hiệu Từ chối tăng đột biến bật khi một giờ có từ 20 lần từ chối trở lên, cao hơn hẳn mức thường thấy của ứng dụng trong 14 ngày trước.

Thời gian lưu nhật ký

Nhật ký được giữ theo hạn mức Lưu log (ngày) của gói workspace, xem tại Tài khoản & tổ chức › Gói & sử dụng. Theo cấu hình mặc định, Basic giữ 7 ngày và Premium giữ 90 ngày. So sánh các gói ở bảng giá.

Việc dọn dẹp chạy mỗi đêm lúc 03:30 giờ Việt Nam và không bao giờ xoá âm thầm:

  1. Khi dòng cũ nhất của workspace còn chưa tới 3 ngày nữa là quá hạn lưu, mọi Chủ sở hữu của workspace nhận email báo rằng log cũ hơn hạn lưu sẽ bị xoá sau 3 ngày. Đêm đó chưa có gì bị xoá.
  2. Khi email đã gửi được ít nhất 3 ngày, mỗi đêm hệ thống xoá phần cũ hơn hạn lưu.
  3. Trong lúc việc dọn dẹp còn tiếp diễn, email nhắc được gửi lại tối đa 30 ngày một lần, và sau mỗi lần nhắc, việc xoá lại chờ đủ 3 ngày.

Cùng hạn lưu này áp dụng cho nhật ký request của Seller API, tín hiệu Protect 24/7 và các lần gửi webhook đã hoàn tất. Nhật ký kiểm toán không bị đụng tới.

Liên quan

Bạn cần giúp gì?

Câu hỏi thường gặp

ClavisAUH là gì?

Dịch vụ bản quyền và xác thực cho phần mềm desktop: license key, khoá thiết bị, đăng nhập người dùng và phản hồi có chữ ký. Tất cả quản lý trên một dashboard

Vì sao kẻ crack không làm giả được server?

SDK chỉ tin câu trả lời ký bằng khoá bí mật của ứng dụng. Khoá đó không bao giờ rời server của chúng tôi, nên server giả không ký được và bị từ chối

Trong file chạy của tôi có gì?

Mã ứng dụng và khoá công khai. Không có bí mật nào, vì mỗi thiết bị tự tạo cặp khoá riêng ở lần chạy đầu

Có chạy được khi offline không?

Có. Mọi gói đều có token offline có chữ ký dùng được 7 ngày, ứng dụng tự kiểm tra tại máy. Premium cho bạn chọn bao lâu. License đã thu hồi vẫn có thể chạy offline trong khoảng đó, trừ khi Chế độ chỉ online đang bật

Hỗ trợ những ngôn ngữ nào?

Hiện có JavaScript và TypeScript. Tiếp theo là C++, C# và Python, cùng một giao thức công khai

Gói Basic có miễn phí thật không?

Có. Không giới hạn thời gian, không cần thẻ. Cần nhiều hơn thì lên Premium

Liên hệ