授權場景
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 納入本次驗證條件。
"""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 驗證立即停止