Files
license-manager-sdk-python/examples/客户案例1/产品激活码说明.md
T
2026-02-27 14:29:48 +08:00

3.9 KiB

产品激活码解析与使用说明

本文档面向客户端开发人员,旨在说明 SaaS 平台发放给最终用户的“产品激活码”的数据结构及其在 SDK 中的鉴权原理。

什么是产品激活码?

用户在 SaaS 管理端购买或获取的凭证通常被称为**“产品激活码” (Product Activation Code)**。

为了满足工业场景中纯离线/脱机的鉴权需求,平台生成的产品激活码不仅仅是一个简单的随机字符串,它实际上是一个复合字符串,包含了在线激活所需的凭证以及离线放行所需的鉴权信息。

数据结构原理

产品激活码使用 & 符号作为分隔符,分为两部分:

[授权码 (Authorization Code)] & [离线鉴权信息 (License Envelope Base64)]

示例解析

假设用户输入了以下产品激活码: LIC-207E-tEOWEY54X3tL-zSAA&eyJhbGdv... (后略)

  1. & 之前的部分:授权码 (Authorization Code)

    • 内容: LIC-207E-tEOWEY54X3tL-zSAA
    • 作用: 这是用于在线激活的凭证。当终端设备处于联网状态时,客户端 SDK 的 Activate 接口会使用此字符串向服务端发起请求。服务端会进行校验,扣减装机配额,并与该机器的硬件指纹进行绑定,最终全自动下发专属于这台机器的许可证文件。
  2. & 之后的部分:鉴权信息 (Authentication Information)

    • 内容: eyJhbGdv... (这是一个经过 Base64 编码的 JSON 字符串,即 License Envelope)
    • 作用: 这是用于离线验证的凭证包。当终端设备处于完全无网/隔离部署的状态,无法连接到远程 SaaS 平台完成激活时,这就是客户端的“越权通行证”。这个 Base64 结构内部包含了被服务端 RSA 私钥数字签名过的数据(如过期时间、最高并发台数等配额信息)。

客户端接入与解析伪代码

客户端开发者在获取到用户框输入的“产品激活码”时,只需要做一个简单的字符串分割处理,将其分离为在线激活部分和离线兜底部分,再交给 SDK。

import base64
import os
from license_manager.client import Client, ClientOptions
from license_manager.config import Config

# 这是用户填入的产品激活码
product_activation_code = "LIC-xxxx&eyJhbGdo..." 

# 默认将其视作 Auth_Code
auth_code = product_activation_code
offline_auth_data = None

# 【第一步:解析分离】判断是否存在离线鉴权信息
if "&" in product_activation_code:
    parts = product_activation_code.split("&", 1)
    auth_code = parts[0]           # 真正的在线授权码
    offline_auth_data = parts[1]   # 离线鉴权数据 (Envelope)

cfg = Config(
    server="https://xxx.com",
    product="you_product",
    version="1.0.0",
    authorization_code=auth_code, # 将分离出的 Auth_Code 交给 SDK
)

# 【第二步:离线侧载】如果存在离线数据,且本地尚无合法的证书,直接将其落地
if offline_auth_data:
    # 直接将 SaaS 发放的公版离线鉴权包保存到目标证书路径
    # SDK 初始化时会自动读取、验签、生效,从而实现"物理断网"状态下的秒级试用体验
    with open(cfg.license_file_path, "wb") as f:
        f.write(base64.b64decode(offline_auth_data))

# 【第三步:启动 SDK】
# SDK 会自动优先寻找本地证书(即我们刚刚侧载进去的离线鉴权信息)
# 若本地校验合法将直接启动;若机器具备网络环境,自带的 Heartbeat 还会自动联网嗅探对齐状态!
client_facade = Client(cfg, opts=ClientOptions(...))

运行机制总结

这种 授权码 & 鉴权信息 的二合一产品激活码设计,极大降低了对用户的解释成本。用户只需复制这一个字符串,无论他们身处有网络的办公室还是物理隔离的车间产线,开发者开发的软件结合 License SDK 都可以做到“离线直接跑、在线强管控”。