Device License SDKPlatform 13.3.7 · SDK 3.1.0

使用者授權

User-based Licensing

用可信任後端提供的 User UUID,驗證『哪一位被授權的人』正在使用軟體。

這個範例解決什麼問題

Machine-based licensing 回答『哪一台裝置』,User-based licensing 回答『哪一位被授權的人』。只有當你的公司已有可信登入系統與 User provisioning 流程時,才應使用最大 User。

適合使用的場景

  • 同一位工程師可能在多台允許的設備上工作,但授權按人計算。
  • 公司已有 SSO、會員系統或企業帳號後端,能把登入身分映射到受控的 User UUID。
  • 你需要限制可關聯到 License 的實際人員數,而不是 Windows 本機帳號數。

為什麼採用這種設計

  • Windows username、Email 或使用者自行輸入的字串都不具可信性,不能直接當成 user_id。
  • User UUID 必須由可信後端建立、關聯 License,並在使用者完成登入後交給 Client。
  • User 與 Machine 可以同時存在:一個限制人數,一個限制裝置數,解決不同的授權問題。

程式實際怎麼執行

同步驗證可信後端提供的 Keygen User UUID。SDK 不登入使用者、不建立 User,也不讀 Windows username。

SDK 自動完成

  • 把 user_id 納入 ValidationScope。
  • Server 檢查 User 關聯與上限。

你的程式必須負責

  • 先完成 SSO/登入並保護 UUID。
  • 切換或登出時更新驗證上下文。

呼叫時機/頻率

  • 登入後與高價值操作前。

成功時應看到

  • 已關聯 User 通過;未關聯或超限被拒絕。

失敗處理

  • 不要退回使用 Email/username。

建議整合步驟

  1. 步驟 1

    先完成企業登入或應用程式登入,從可信後端取得已驗證的 User UUID。

  2. 步驟 2

    把 UUID 放入 ValidationScope(user_id=...),不要自行生成。

  3. 步驟 3

    驗證結果失敗時,要求重新登入或聯絡授權管理員。

  4. 步驟 4

    測試使用者未關聯、超過最大 User、License 撤銷與換人流程。

完整程式碼

公開範例使用 Placeholder,重點是理解資料流與 API 行為。正式 Gateway URL、Product UUID、Namespace 與 Public Key 請向授權管理員取得;可直接運行的完整範例由管理員在 Admin SDK 整合中心下載。

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

上線前至少測試

  • 合法、未關聯、超限、登出與 UUID 竄改。

常見錯誤

  • 不要使用 os.getlogin()、getpass.getuser() 或 Windows SID 直接代替 User UUID。
  • 不要讓使用者從文字框自行輸入 UUID。
  • 沒有後端 User provisioning 時,請不要設定最大 User。