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

Thư viện tài liệuBắt đầu

Bắt đầu nhanh

Hướng dẫn này đưa bạn đi từ một tài khoản mới tới license key đầu tiên được kích hoạt và xác minh chữ ký. Bạn chỉ cần dashboard, một trình duyệt và vài dòng JavaScript, không phải dựng máy chủ nào.

10 phút đọc

Lộ trình

Sáu bước: đăng ký, xác minh email, tạo ứng dụng, tạo license key, kết nối phần mềm và thử kích hoạt. Sau khi đăng nhập, trang Không gian làm việc › Tổng quan hiện thẻ Phát hành bản build được bảo vệ đầu tiên, dẫn thẳng tới từng bước và tự đánh dấu mục nào bạn đã xong. Thẻ ẩn đi khi cả bốn mục của nó hoàn tất.

1. Đăng ký tài khoản

  1. Mở trang đăng nhập của ClavisAUH và chọn thẻ Đăng ký.
  2. Điền Tên hiển thị, Email và Mật khẩu.
  3. Bấm Mở tài khoản.

Mật khẩu cần từ 10 đến 128 ký tự. Thanh Độ mạnh mật khẩu gợi ý dùng cả chữ hoa, chữ thường và số hoặc ký hiệu; mật khẩu từng lộ trong một vụ rò rỉ dữ liệu có thể bị từ chối. Đăng ký không nhận địa chỉ mail dùng một lần. Nếu email đã có tài khoản, hãy đăng nhập, hoặc dùng Quên mật khẩu? ở thẻ Đăng nhập.

Mỗi tài khoản mới có sẵn một workspace cá nhân trên gói Basic miễn phí, với bạn là chủ sở hữu, không cần thẻ thanh toán. So sánh các gói ở bảng giá.

2. Xác minh email

Bạn được chuyển tới màn hình Thư xác minh đã lên đường. Một mã 6 số được gửi tới email của bạn, có hiệu lực trong 10 phút.

  1. Lấy mã trong hộp thư (nhớ xem cả mục spam).
  2. Nhập vào ô Mã xác minh. Đủ 6 số là form tự gửi, hoặc bấm Xác minh.
  3. Bạn được đăng nhập và vào thẳng dashboard.

Chưa nhận được thư thì đợi bộ đếm Gửi lại sau …s chạy hết 30 giây rồi bấm Gửi lại mã. Gõ nhầm email thì bấm Đổi email. Nhập sai quá nhiều lần thì mã bị vô hiệu, hãy yêu cầu mã mới. Lỡ rời trang trước khi xác minh cũng không sao: tài khoản chưa xác minh không vào được dashboard, nên lần đăng nhập sau hệ thống gửi mã mới và đưa bạn về đây.

3. Tạo ứng dụng đầu tiên

Mỗi sản phẩm bạn phát hành là một ứng dụng (app), có license key, người dùng và khoá ký riêng.

  1. Vào Không gian làm việc › Ứng dụng.
  2. Bấm Ứng dụng mới.
  3. Trong hộp thoại Tạo ứng dụng, nhập Tên (2 đến 64 ký tự, đổi được sau).
  4. Bấm Tạo.

Dashboard báo "Đã tạo ứng dụng" và mở trang Tích hợp › Kết nối phần mềm của ứng dụng. Ứng dụng mới có sẵn:

  • App ID dạng app_…, gửi kèm mọi yêu cầu từ phần mềm.
  • Một cặp khoá ký Ed25519 riêng. Khoá công khai để bạn nhúng vào phần mềm; khoá bí mật được niêm phong trên máy chủ.
  • Một chính sách mặc định tên Standard: thời hạn 30 ngày, 1 thiết bị mỗi key.
  • Chế độ đăng nhập License key, nên phần mềm chỉ cần gọi activate(key).

App ID và khoá công khai luôn nằm ở trang Tổng quan của ứng dụng, trong thẻ Khoá công khai.

4. Tạo license key

  1. Trong ứng dụng, vào Phát hành & bản quyền › License.
  2. Bấm Tạo key.
  3. Trong bảng Tạo license key, chỉnh các trường nếu cần. Lần thử đầu cứ để mặc định.
  4. Bấm Tạo 1 key.
  5. Lưu key bằng Sao chép tất cả hoặc Tải file .txt, rồi bấm Tôi đã lưu lại.
TrườngÝ nghĩa
Số lượngSố key mỗi lô. Hạn mức mỗi lô theo gói ghi ngay dưới ô.
GóiHiện khi ứng dụng có hơn một chính sách. Key lấy thời hạn và số thiết bị từ chính sách này.
Thời hạn1, 7, 30 hoặc 90 ngày, 1 năm, hoặc Vĩnh viễn. Tính từ lần kích hoạt đầu tiên, không phải lúc tạo.
Số thiết bị mỗi keySố máy tối đa được gắn với một key. Để trống thì lấy theo chính sách.
Tiền tốKhông bắt buộc, chữ in hoa và số, tối đa 12 ký tự, ví dụ PRO.
Ghi chúKhông bắt buộc: tên khách, mã đơn hàng.

Key có dạng XXXXX-XXXXX-XXXXX-XXXXX-XXXXX (hoặc PRO-XXXXX-… khi có tiền tố), dùng bảng ký tự đã loại các cặp dễ nhầm như 0/O và 1/I. Key mới ở trạng thái Chưa dùng. Số key tạo mỗi ngày cũng có hạn mức theo gói, đặt lại lúc 00:00 UTC.

5. Kết nối phần mềm

Trang Tích hợp › Kết nối phần mềm của ứng dụng đưa bạn từ ngôn ngữ của phần mềm tới lần kết nối đầu tiên trong bốn bước:

  1. Phần mềm của bạn viết bằng gì. Chọn ngôn ngữ, trang ghi rõ lối vào phù hợp: SDK chính thức (Node.js và Electron, Python, C#/.NET, C++, Go, Rust, Java), thư viện C cho mọi ngôn ngữ gọi được hàm C (Delphi, VB6, AutoIt, Lua…), công cụ dòng lệnh cho script và bộ cài, hoặc đặc tả giao thức để tự viết client.
  2. Bạn muốn khách dùng thế nào. Chọn một hay nhiều kịch bản: chỉ license key (K1), tài khoản (K2), dùng thử theo máy (K3), hạn dùng và biến (K4), cập nhật phần mềm (K5).
  3. Mã của bạn. Địa chỉ API, App ID và khoá công khai đã điền sẵn, có nút sao chép. Mã hiện ra là file mẫu thật của từng kịch bản, chạy trong CI ở mọi ngôn ngữ. Nút Tải dự án mẫu (.zip) cho một thư mục có sẵn SDK và script chạy.
  4. Chờ kết nối đầu tiên. Trang lắng nghe trực tiếp; khi phần mềm gọi tới, nó chuyển sang Đã kết nối kèm SDK, hệ điều hành và độ lệch giờ, còn lượt gọi bị từ chối thì hiện mã lỗi và cách sửa.

Lựa chọn ở bước 1 và 2 nằm trên địa chỉ trang, nên gửi link cho đồng đội là họ thấy đúng thứ bạn thấy.

Chạy dự án mẫu

  1. Ở bước 3, bấm Tạo key thử nghiệm. Key TEST hết hạn sau 24 giờ, không tính hạn mức ngày, và được điền luôn vào lệnh chạy.
  2. Bấm Tải dự án mẫu (.zip) rồi giải nén.
  3. Chạy ./run.sh <key> (Linux, macOS) hoặc run.cmd <key> (Windows; trong PowerShell gõ .\run.cmd <key>). Script đã chứa cài đặt của ứng dụng; dòng cuối in ra OK k1 active.
  4. Quay lại trang: bước 4 chuyển sang Đã kết nối.

Dự án mẫu cần công cụ của ngôn ngữ đó, ví dụ Node.js 20 trở lên; README trong zip ghi rõ.

Đoạn mã chính

Đây là K1 bằng JavaScript, trích đúng từ dự án mẫu. Tạo client một lần, với khoá thiết bị lưu lại trên máy:

const client = new ClavisClient({
  baseUrl: env.CLAVIS_BASE_URL,
  appId: env.CLAVIS_APP_ID,
  appPublicKey: env.CLAVIS_APP_KEY,
  device: defaultDevice(),
  // The same key every run: sessions and offline tokens stay with this machine.
  deviceKey: loadOrCreateDeviceKey(join(STATE, "device.key")),
  appVersion: "1.0.0",
});

Kích hoạt, và khi không có mạng thì dùng token offline đã lưu lần trước:

let grant = null;
try {
  await client.init();
  grant = await client.activate(env.CLAVIS_LICENSE);
} catch (err) {
  if (!(err instanceof ClavisError)) throw err;
  // No answer (network_error, timeout...): a token saved last time keeps the software working.
  const offline = err.retryable && existsSync(SAVED) ? client.verifyOffline(readFileSync(SAVED, "utf8")) : null;
  if (!offline) {
    console.log(err.userMessage(LANG));
    console.log("FAIL", err.code);
    process.exit(1);
  }
  console.log("Offline: using the license saved on this machine");
}
  • SDK từ chối mọi phản hồi không được ký bằng khoá công khai của ứng dụng. Không nhúng khoá bí mật nào vào phần mềm.
  • Khoá thiết bị ký từng yêu cầu. Giữ nó trên máy: phiên và token offline gắn với khoá này. Còn suất trên license đi theo các định danh đã băm của máy (fingerprint và linh kiện).
  • Định danh phần cứng được băm ngay trên máy trước khi gửi đi.

Muốn để AI làm phần tích hợp? Nút Sao chép prompt cho AI agent ở đầu trang sao chép sẵn các bước theo ngôn ngữ và kịch bản bạn chọn, kèm App ID, khoá công khai và địa chỉ API, để bạn dán vào coding agent.

6. Thử trong trình duyệt

Chưa có máy để chạy? Mở Chưa có máy để chạy? Thử ngay trong trình duyệt dưới bước 4. Nó kích hoạt một key thật từ trình duyệt, qua đúng giao thức ký số mà phần mềm của bạn dùng:

  1. Dán key vào ô Dán một license key.
  2. Bấm Kích hoạt.

Bốn dòng tiến trình lần lượt được đánh dấu: yêu cầu được ký trên thiết bị (Ed25519), gửi kèm nonce dùng một lần, chữ ký phản hồi được kiểm tra bằng khoá công khai của bạn, phiên được cấp. Thành công thì hiện Chữ ký hợp lệ · license đang hoạt động cùng mã phiên, ngày hết hạn (hoặc Vĩnh viễn), số thiết bị tối đa và số biến; bước 4 cũng chuyển sang Đã kết nối.

Đây là kích hoạt thật. Trình duyệt đóng vai một thiết bị tên "Browser demo", cặp khoá và fingerprint lưu trong bộ nhớ trình duyệt. Key chuyển từ Chưa dùng sang Đang dùng và thời hạn bắt đầu tính. Phiên xuất hiện ở Người dùng cuối › Thiết bị & phiên, sự kiện Kích hoạt key được ghi ở Bảo mật ứng dụng › Nhật ký hoạt động.

Khi kích hoạt bị từ chối

Phần mềm nhận mã lỗi qua e.code (hoặc Code, code() tuỳ ngôn ngữ), bảng đầy đủ ở Mã lỗi. Trên một máy chưa giữ suất trên key, mọi key không dùng được (không tồn tại, hết hạn, bị khoá, bị thu hồi) trả cùng một mã invalid_credentials, để không ai dò được key nào có thật; máy đã giữ suất thì thấy lý do cụ thể.

MãNghĩa làCách xử lý
invalid_credentialsKey không dùng được trên máy nàyKiểm tra key thuộc đúng ứng dụng, còn hạn và chưa bị khoá.
device_limitVượt số thiết bịĐặt lại thiết bị, hoặc tạo key cho phép nhiều thiết bị hơn.
license_expiredLicense hết hạnGia hạn trong trang License.
license_suspended, license_revokedLicense bị tạm khoá hoặc thu hồiMở khoá trong trang License; key thu hồi không khôi phục được.
mode_not_allowedSai cửa đăng nhậpỨng dụng không ở chế độ License key; xem Phát hành & bản quyền › Đăng nhập & gói license.
too_many_attemptsThử quá nhiều lầnQuá nhiều key sai từ cùng một IP; đợi một lúc rồi thử lại.
unsigned_response, invalid_response_signatureCâu trả lời không có hoặc sai chữ kýThường do địa chỉ API sai trong phần mềm.
unknown_keyCâu trả lời ký bằng khoá bản này không tinKhoá công khai là của ứng dụng khác; sao chép lại.

Bước tiếp theo

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ệ