Python SDK for cedar-v License Manager
Project description
License Manager SDK (Python)
license-manager-sdk-python 是 License Manager 授权管控中枢的官方 Python 客户端。它与后端的 SaaS 管控网络无缝集成,专门为各类软件、算法模型落地以及私有化部署提供从在线激活到离线授权、从机器指纹绑定到后台心跳管控的全套授权治理能力。
核心能力架构
本 SDK 提供多层防御机制和灵活的商业策略触点:
- 强硬件指纹锁定:全平台自动提取
MAC,CPU,Hostname等特征生成唯一指纹,实现“一机一码”,有效防止未授权的设备滥用。 - 数据强防篡改 (RSA-PSS + AES):网络传输与本地落地的
license.lic均由不可逆的非对称 RSA 私钥重签名,本地持久化缓存以动态 Nonce + AES-GCM 加密,保障本地授权文件安全。 - 混合鉴权 (Online First & Offline Fallback):
- 在线模式:输入产品激活码,设备主动向管控端请求注册激活,后台验证后派发许可并建立心跳连接。
- 离线侧载:针对无外网环境,支持用户将授权码与离线授权封套组合为
AuthCode&Envelope格式输入 SDK,实现物理隔离环境下的离线激活验证。
- 云端管控心跳系统:底层常驻心跳守护线程。当在控制台执行“禁用”、“解绑”或当授权“过期”时,客户端的心跳请求会获取最新状态并触发回调,及时中止核心业务。
快速接入指南
1. 基础依赖
本 SDK 除标准库外,仅需依赖:
pip install requests cryptography
2. 初始化与使用
以下是如何在您的 Python 业务代码中集成授权验证的示例:
import time
import logging
from license_manager.client import Client, ClientOptions, Callbacks
from license_manager.config import Config
from license_manager.models import LicensePayload
def main():
# 1. 配置您的服务端网关与应用身份
cfg = Config(
server="http://127.0.0.1:18081",
product="vision-vm-studio", # 您在后台创建的产品标识
version="1.0.0", # 软件版本
authorization_code="YOUR_AUTH_CODE", # 客户输入的授权码
hardware_fields=["cpu", "hostname", "mac"],
license_file_path="license.lic", # 授权本地落地缓存
public_key_pem=b"-----BEGIN PUBLIC KEY-----\n..." # 从后台获取的公钥PEM串
)
# 2. 注入业务状态同步回调钩子
def on_license_updated(lic: LicensePayload):
logging.info(f"-> 收到新证书!将于 {lic.expires_at} 过期")
def on_heartbeat_error(err: Exception):
logging.warning(f"-> 心跳预警/暂无法连接服务器: {err}")
if "300006" in str(err):
logging.error("业务提示:授权已被吊销或清理!")
def on_activation_required(reason: str):
logging.error(f"-> 授权失效: {reason}")
# 在此处执行程序退出或中止核心业务
# 3. 初始化客户端
callbacks = Callbacks(
on_license_updated=on_license_updated,
on_heartbeat_error=on_heartbeat_error,
on_activation_required=on_activation_required,
on_heartbeat_ping=lambda: logging.info("Ping...")
)
try:
# SDK 启动时会自动尝试:载入本地有效证书 -> 发起在线激活请求 -> 解析离线授权包 -> 启动轮询
client = Client(cfg, ClientOptions(callbacks=callbacks))
except Exception as e:
logging.error(f"授权初始化失败: {e}")
return
# 4. 获取有效的授权凭证
lic = client.current_license()
logging.info(f"授权成功并生效,企业标识: {lic.license_key}")
# +++ 以下为核心商业逻辑 +++
# ...
# 在执行核心计算前均可调用安全验证:
client.validate()
# 优雅退出
client.close()
if __name__ == "__main__":
main()
API 模块详述
license_manager.config.Config: SDK 的配置模块,定义产品身份、硬件采样维度和公钥验签证书。license_manager.client.Client: 主控客户端实例。license_manager.hardware.DefaultHardwareProvider: 跨平台设备指纹提取器,支持mac,cpu,hostname,disk等硬件特征的提取与处理。license_manager.heartbeat.HeartbeatManager: 定时心跳管理器,按照配置间隔向服务端上报状态并同步最新授权配置。
示例应用 (Examples)
SDK 内置了两个参考案例:
examples/basic/main.py: 无界面的终端 SDK 接入演示。examples/客户案例1/client-demo/demo.py: 基于Tkinter的 GUI 客户端 Demo,展示了离线载入、阻断日志以及动态修改服务端地址的完整交互体验。可以作为参考或者使用 PyInstaller 构建独立可执行程序。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cedarv_license_manager_sdk-1.0.2.tar.gz.
File metadata
- Download URL: cedarv_license_manager_sdk-1.0.2.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98c1b391ab2a0a16157aa650027c2d77fc7012495b5aba6afc6a29f47c4356f9
|
|
| MD5 |
4cbf1c933514f60765cbccd84d6c4f02
|
|
| BLAKE2b-256 |
5b6ee7c71aa7a1fbb416ae519cfec4b32af1111d96ded70281e86453b2b26d1e
|
Provenance
The following attestation bundles were made for cedarv_license_manager_sdk-1.0.2.tar.gz:
Publisher:
publish.yml on cedar-v/license-manager-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cedarv_license_manager_sdk-1.0.2.tar.gz -
Subject digest:
98c1b391ab2a0a16157aa650027c2d77fc7012495b5aba6afc6a29f47c4356f9 - Sigstore transparency entry: 1003817105
- Sigstore integration time:
-
Permalink:
cedar-v/license-manager-sdk-python@a8f2bd0213999cbb200231751aacceff7646955a -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/cedar-v
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a8f2bd0213999cbb200231751aacceff7646955a -
Trigger Event:
release
-
Statement type:
File details
Details for the file cedarv_license_manager_sdk-1.0.2-py3-none-any.whl.
File metadata
- Download URL: cedarv_license_manager_sdk-1.0.2-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c9c0b4bffc2fe227bd89b3e5328144f080f150a89de92094dd86be542f0538c
|
|
| MD5 |
43613b29b7f9b4402207ec219a89acb2
|
|
| BLAKE2b-256 |
b1f60c8a77c85e7b1ae2cbfac8e1f536dae5aa1c3fe91308178265363682928d
|
Provenance
The following attestation bundles were made for cedarv_license_manager_sdk-1.0.2-py3-none-any.whl:
Publisher:
publish.yml on cedar-v/license-manager-sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cedarv_license_manager_sdk-1.0.2-py3-none-any.whl -
Subject digest:
6c9c0b4bffc2fe227bd89b3e5328144f080f150a89de92094dd86be542f0538c - Sigstore transparency entry: 1003817120
- Sigstore integration time:
-
Permalink:
cedar-v/license-manager-sdk-python@a8f2bd0213999cbb200231751aacceff7646955a -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/cedar-v
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a8f2bd0213999cbb200231751aacceff7646955a -
Trigger Event:
release
-
Statement type: