通過 Launch 與 Licentivo 接入應用
本指南適用于 Licentivo 提供方。不使用 Licentivo、而對接商戶自有授權系統時,應使用自定義授權 API 與接入流程,為產品和環境選擇 custom_http,并保留該系統的運行時 SDK。
這些尚未發布的本地改動使用帳號身份交換。遷移及服務端會話撤銷參見職責與購買同步契約。本次改動沒有發布或升級包版本號。
Launch 負責商戶帳號、訂單、價格、續費和升級報價、退款及絕對購買日期。Licentivo 負責許可證、策略、設備額度、授權會話、簽名許可和運行時決定。Launch 登錄成功或購買同步成功,絕不表示可以執行受保護業務。
使用后臺接入頁取得直接連接調用和固定受信的產品公鑰。九種語言包裝層均包含官方 SDK。商戶管理密鑰和支付密鑰留在服務端。公開產品設置不包含客戶憑據、設備 ID、快取路徑或身份斷言。
帳號交換
sequenceDiagram
participant App as Application
participant Launch as Launch server
participant SDK as Official Licentivo SDK
participant Lic as Licentivo server
App->>Launch: Account login
Launch-->>App: Account session
App->>Launch: POST /software/products/{id}/identity
Launch-->>App: Short-lived signed identity assertion
App->>SDK: In-memory identity + connection + environment
SDK->>Lic: POST /launch/exchange
Lic-->>SDK: Restricted device credential + signed permission + logout ticket
App->>SDK: RunFeature around every protected action
包裝層使用 {"environment":"sandbox"} 或 live 請求 POST /api/v1/software/products/{id}/identity。返回的身份斷言最多存活 120 秒,綁定已注冊簽發者、受眾、真實登錄會話、產品、環境和購買引用。它不包含功能許可、設備額度或離線策略。
官方 SDK 在內存中接收以下值:
{
"product_id": "LICENTIVO_PRODUCT_UUID",
"trusted_keys": {"SIGNING_KEY_ID": "PINNED_PUBLIC_KEY"},
"launch_connection_id": "LICENTIVO_LAUNCH_CONNECTION_UUID",
"environment": "sandbox",
"identity_token": "SHORT_LIVED_ASSERTION_FROM_LAUNCH",
"license_key": ""
}
不得將此運行時配置寫入公開文件,或將身份斷言持久化到帳號記錄。Launch v2 記住登錄記錄只保存帳號會話和公開路由上下文。舊客戶 /credential 接口返回 HTTP 410。
生命周期與存儲
Login:認證帳號、申請新身份斷言、啟動官方 SDK。Restore:聯網確認已記住的帳號、申請新身份斷言、啟動官方 SDK。Launch 故障不決定離線許可。RunFeature:每次受保護執行都交給官方 SDK。被拒絕的回調絕不能執行。Close/Dispose/Drop:停止后臺工作,保留明確記住的登錄和節點綁定。Logout:調用官方 SDK 統一退出,再清除 Launch 帳號記錄并終止其帳號會話。ReleaseDevice:明確退出的兼容別名。必須如實報告待完成的遠端撤銷。
只有官方 SDK 可刪除其設備憑據和租約文件。絕不能刪除快取目錄或 .logout.json;該日志保存網路請求失敗后仍需使用的受限釋放票據。再次初始化匹配快取時,SDK 會恢復待處理票據。Launch 自有帳號存儲與 SDK 存儲分別由各自管理。
需要離線啟動的應用使用官方 SDK 文件規定的恢復流程。只有 SDK 驗證簽名許可、產品與環境上下文、到期、時鐘行為和設備狀態。Launch 包裝層不從購買日期、本地訂單或文件存在與否推斷許可。
帳號會話預設只保存在內存。持久帳號存儲必須加密并認證記錄,使用操作系統憑據設施保護密鑰。按商戶、帳號、產品和環境使用獨立可寫快取。瀏覽器渲染進程只接收業務結果,不接收桌面帳號令牌、身份斷言或設備憑據。
購買與設備
Launch 根據已驗證付款和不可變訂單覆蓋計算絕對購買日期,再向 /api/v1/launch/connections/{id}/events 發送帶版本快照。輪詢事件直至 applied;接收回執本身不是交付。續費和退款重試不能再次增加時長。退款只移除對應訂單覆蓋;全額退款后重新購買會使用新引用。
無法訪問某臺設備的用戶可打開 Launch 設備管理頁。列表、剩余解綁次數、允許動作和操作結果均來自 Licentivo。釋放請求攜帶界面顯示的綁定代次及不變的操作 ID。Launch 不另建競爭性的解綁計數器或任務執行器。
驗證與限制
測試帳號交換、身份斷言臨時存儲、SDK 控制的功能執行、普通關閉、新進程明確退出、待處理釋放日志和產品與環境隔離。官方 SDK 的真實簽名租約、離線檢查和篡改拒絕應與 Launch 帳號傳輸分別測試。編譯和夾具不能證明生產驗收通過。
Launch 還使用 Licentivo V39 的 session-revocations POST 和回執 GET 接口,處理桌面退出、強制會話退出、密碼修改和帳號禁用。原接收方與請求持久固定,響應丟失后可恢復,各環境獨立確認。帳號范圍通知待完成時暫停新的桌面認證;確認后,真正新登錄的 auth_time 必須嚴格晚于最新 revoked_before 截止秒。網站恢復仍可用。這些通知絕不改變購買日期。參見職責與恢復契約。