桌面优先 · 客户端不带 API Key

为桌面软件而生的
授权管理平台

激活、试用、订阅、买断、支付、自动更新与客户门户,一套接完。客户端只带授权码;离线也能验签;客户自己管理设备与账单。

无需信用卡 Ed25519 离线验签 支持自托管
activate.js
// 客户端只保存授权码与公钥
const res = await fetch('https://keygate.unionuser.com/api/v1/license/activate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    license_key: userKey,        // WB-XXXX-XXXX
    identifier: deviceId,        // sha256(machine-id)
    identifier_type: 'device'
  })
});

const { token } = await res.json();
await store.save(token);       // verify offline with Ed25519
LicenseActive
WB-8F2K-••••-M4Q9
PlanPro · Yearly
Devices
Offline until+7 days
Ed25519 签名授权 原子激活名额 Stripe 订阅与买断 Sparkle · Velopack · Tauri 可私有化部署
为什么是 UnionUser

把授权做成产品,而不是一段拼凑的代码

大多数桌面软件最终都会自己写一套「授权码 + 服务器 + 支付 + 更新」的胶水。UnionUser 把它变成开箱可用的平台。

客户端只带授权码

SDK 端点直接用用户自己的授权码,不需要把 API Key 打进安装包。拿到安装包也拿不到你的后台权限。

离线验签原理

客户自己管理自己

换机、加席位、开发票、续维护期,全在客户门户完成。你的支持邮箱不再被「帮我解绑一下」淹没。

客户门户能力

数据在自己的手里

托管 SaaS 开箱即用;需要合规或私有化时,可购买商业授权自托管。Go + PostgreSQL,无 Redis 也能跑。

自托管说明
一个后台

授权、设备、支付与更新,在同一张表里

从第一份试用授权到第 10,000 台激活设备,后台都能回答:谁在用、什么时候到期、哪台设备、付了多少钱、该收到哪个版本。

  • 按产品、套餐、状态过滤授权,批量发码与吊销
  • 设备激活记录与释放,原子名额不超卖
  • Stripe 支付、退款、账单门户与到期提醒
  • Sparkle / Velopack / Tauri 发布源与签名
UnionUser · Dashboard 实时
UnionUser 授权后台仪表盘截图
能力清单

桌面软件授权需要的一切

每一项都对应真实 API 与后台界面,不虚构能力。

授权与激活

订阅、买断、试用、浮动授权;激活、校验、停用、暂停、吊销全生命周期。

了解详情

Ed25519 离线验签

公钥内置客户端,私钥不出服务器;联网间隔与授权到期分离。

了解详情

试用与自助领证

邮箱验证码注册即领试用;每地址一份、每日限额、到期自动回落。

了解详情

支付与订阅

Stripe Checkout、webhook、成功页与定时对账三层保障。

了解详情

席位与权益

所有者与成员独立密钥,席位暂停即释放;布尔、数值与配额权益。

了解详情

自动更新分发

Sparkle、Velopack、Tauri 共用发布源;原子发布、yank 回滚。

了解详情

用量与配额

原子扣减,小时/日/月/年周期,阈值触发 webhook。

了解详情

后台与客户门户

产品、套餐、客户、API Key、审计、团队与品牌定制;客户自助换机续费。

了解详情
五步上线

从注册到第一台设备激活

不必先读完整套文档。按顺序走完五步,就有一条可用的授权链路。

1

注册工作区

邮箱验证码登录,30 秒完成。

2

创建产品与套餐

设置设备数、宽限期与权益。

3

生成授权

后台手动发码,或接入 Stripe 自动发放。

4

客户端激活

调用 activate,保存签名 token。

5

上线并观察

离线验签;后台看设备、支付与更新。

接入示例

五种语言,今天就能跑通

每个示例都覆盖「激活 → 本地保存 → 启动校验 → 停用」完整闭环。客户端只保存授权码与公开公钥,绝不下发 API Key。

JavaJavaScriptPythonRustPHP
verify.jsEd25519
import { verify } from 'node:crypto';

const [body, sig] = token.split('.');
const ok = verify(
  null,
  Buffer.from(body, 'ascii'),
  publicKey,              // pinned SPKI
  Buffer.from(sig, 'base64url')
);
if (!ok) throw new Error('bad signature');
定价

按真实使用量付费

Developer 永久免费;Pro 提供 31 天全功能试用,无需信用卡。

Developer

个人项目与原型

$0
1 个产品 · 100 份活跃授权

Business

多产品与团队协作

$99/月
10 个产品 · 10,000 份活跃授权

Enterprise

大客户、自托管与白标

$399/月
Unlimited 个产品 · Unlimited 份活跃授权

按活跃授权计费 · 年付约 8.3 折 · 自托管商业授权单列。 查看完整定价 →

常见问题

工程师最常问的几件事

客户端需要把 API Key 打进安装包吗?

不需要。公开的授权端点直接用用户自己的 license_key 作为凭证;客户端只需要内置验证签名用的公钥。

断网时还能授权吗?

可以。授权 token 是 Ed25519 签名的,客户端可在离线状态验证签名、设备绑定与有效期;到期后再联网续验。

一份授权能装几台设备?

由套餐配置,默认建议 3 台。激活名额在数据库层原子扣减,重试不会重复计数;客户可在门户自助解绑。

支持哪些支付方式?

内建 Stripe:订阅、买断、试用、退款、账单门户与到期提醒。也可以手动发码,先收款再录入。

能私有化部署吗?

可以。购买自托管商业授权后,用 Docker Compose 部署 Go 服务与 PostgreSQL;源码不公开。

自动更新一定要用你们的发布源吗?

不必。可以继续用现有 OSS/CDN。若使用 UnionUser 发布源,则可以复用许可证门控下载、yank 与每产品签名。

今天就把授权接上

免费试用 31 天。客户端离线可验,后台随时吊销。