Device License SDKPlatform 13.3.7 · SDK 3.1.0

授權場景

User-based Licensing:授權給正確的人

了解 User UUID 的可信來源、與 Machine 的差異,以及何時不應啟用最大 User。

先判斷你是否真的需要 User-based licensing

Windows username 不是 User UUID。 只有當你的產品能可靠辨識『目前登入的是哪一位已授權使用者』時,最大 User 才有意義。這通常代表你已經有企業 SSO、會員後端或其他可信任的登入服務。

適合使用

  • 已有登入後端與 Session 驗證
  • 後端能建立並管理 User 與 License 關聯
  • Client 能從已驗證 Session 取得 User UUID
  • 授權商業模式明確按人計算

不適合使用

  • 只有 Windows 本機帳號
  • 只知道使用者 Email 字串
  • 沒有後端 User provisioning
  • 希望用最大 User 取代 Machine 限制

User UUID 應該從哪裡來

1使用者登入你的應用程式

帳號密碼或 SSO 驗證在可信後端完成。

2後端取得受控 User UUID

後端確認該 User 已存在且與 License 關聯。

3Client 取得已驗證結果

透過受保護 Session 取得 UUID,不接受手動輸入。

4放入 ValidationScope

SDK 將 user_id 納入本次驗證條件。

python
"""User ID must be a trusted Keygen User UUID supplied by your backend."""

from keygen_device_sdk import LicenseSDKError, ValidationScope





def validate_signed_in_user(client, keygen_user_uuid: str):

    try:

        scope = ValidationScope(user_id=keygen_user_uuid)

        return client.validate_or_raise(scope=scope)

    except LicenseSDKError as exc:

        raise RuntimeError(f"User-based validation failed: {exc}") from exc

User、Machine 與 Process 的差異

項目回答的問題生命週期
User哪一位被授權的人?通常跨裝置、與企業帳號相連。
Machine哪一台被啟用的設備?與 TPM 裝置身分綁定。
Process現在同時執行幾份程式?短期,需要 Heartbeat 與正常釋放。

上線前驗收

  • 未登入使用者不能取得 User UUID
  • 使用者不能自行修改或替換 UUID
  • 未關聯 User 被拒絕
  • 超過最大 User 時回傳可理解錯誤
  • 登出後舊 User Session 必須失效
  • License 撤銷時 User 驗證立即停止
下一步

把文件轉成可驗證的整合流程

先在測試 License 上完成首次註冊、後續驗證、撤銷與斷線測試,再將相同模式接入正式功能。

查看 Quickstart