Sloth Avatar
认证机制与 License 管理
技术解析与落地实践
从 SSO Cookie 到 Bearer Token · 从有状态到无状态 · 从服务器到零运维
目录

今天聊什么

01 两种核心机制

PAT Bearer 无状态凭证 vs SSO Session 有状态会话,本质区别与适用边界

02 混合架构实践

现代 SaaS 如何分层设计:设备绑定 + 用户授权 + 用量管控

03 License 校验维度

时间、数量、环境、机器四个维度的管控策略与技术实现

04 无服务器方案

零运维成本的授权路径:本地签名、硬件狗、邮件激活、DNS 验证

核心问题

认证与 License 是同一件事

不管是员工登录还是软件授权,系统都在回答两个根本问题:

身份合法性

认证场景:你是员工吗?
License 场景:你是合法客户吗?
底层技术:签名验证、凭证比对

权限边界

认证场景:你能访问哪些模块?
License 场景:你能用多少席位、多久?
底层技术:Claims / Scope / 配额计数

"认证机制中学到的全部安全实践,在 License 管理中都能复用"

方案一

PAT Bearer:无状态凭证

服务端不保存会话,只校验 token 签名。每个请求自带完整的授权声明。

{ "sub": "客户ID_大族激光", "plan": "enterprise", "seats": 50, "modules": ["finance", "scm", "production"], "exp": 1751443200 }

优势

水平扩展能力极强;每个服务节点独立判断授权;适合微服务架构下的 API 配额控制

弱点

吊销困难——token 过期前无法让它失效。解决方法是短有效期 + refresh token,或引入 introspection 端点

方案二

SSO Session:有状态管控

服务端持有会话状态,客户端只持有 session ID。真实的授权信息存在 Redis 或服务端内存中。

session:lic_abc123 = { "customer": "大族激光", "machine_hash": "sha256:xxxxx", "max_users": 50, "current_users": 43, "expires_at": "2026-12-31", "last_heartbeat": "2026-05-06T10:30:00Z" }

优势

实时管控能力极强;管理员后台调整套餐,下次心跳立即生效;适合并发席位计费

代价

中心化依赖——License 服务器必须高可用;一旦宕机,所有客户端可能降级

现代实践

混合架构:分层设计

成熟的 License 系统不会二选一,而是把两者结合,在性能和控制力之间找平衡。

第一层:设备绑定

硬件指纹 + TPM 芯片 / 本地加密狗
解决"这台机器有没有资格运行"

第二层:用户授权

SSO Cookie 或短期 JWT
解决"当前登录的人能用什么功能"

第三层:用量管控

异步计数 + 实时熔断
解决"这个月用了多少 API 额度"

管控维度

License 校验的四个维度

维度认证场景License 场景
时间 会话是否过期 试用期、订阅周期、维护期、宽限期
数量 允许 / 拒绝 并发数、席位数、调用次数、存储容量
环境 角色权限 开发 / 测试 / 生产 / 多区域部署
机器 设备信任管理 硬件绑定、迁移策略、防克隆

认证通常是二元判断,License 需要处理连续的量化边界。订阅到期后不应直接拒绝,而应进入只读降级模式——这是商业设计上的考量。

安全加固

从认证中学到的防御手段

防重放攻击

License 请求必须携带时间戳和随机数(nonce),服务端拒绝过期或重复请求。和 SSO 防止 Cookie 重放是同一套逻辑。

防篡改

本地 License 文件至少用 HMAC-SHA256 签名,结合代码混淆和反调试,防止客户直接修改 expires_at 字段。

防克隆

引入网络级唯一标识(内网 IP + 主机名),或强制定期心跳。克隆体只有一台能维持连接。

吊销与降级

离线软件预埋黑名单,每次更新同步最新吊销列表。在线软件在心跳中返回状态变更指令,和 SSO 强制登出完全一致。

零运维方案

不需要服务器的授权路径

本地签名文件

公钥编译进客户端,License 是签名的 JWT。零服务器、零网络,适合买断制桌面软件。

硬件加密狗

授权写在 USB 安全芯片里。防破解能力最强,但硬件成本和用户体验是代价。

邮件 / 离线激活码

机器码发邮件,人工回传激活码。基础设施只需一个邮箱和一个本地脚本。

DNS TXT 记录

把授权签名写在域名 TXT 记录里。不需要服务器,只需要每年几十元的域名费用。

无服务器的隐含代价:你无法远程吊销、无法实时统计、无法一键断网。
所有安全都押在"客户端能不能被攻破"这一点上。

Sloth Avatar

关键问题

"我更需要离线的韧性,还是在线的实时管控?"

认证机制与 License 管理共享同一套底层逻辑:
签发凭证、验证身份、管控权限、处理吊销。
控制力越强,对服务器的依赖越深;
愿意放弃部分控制力,就能换取更低的运维成本。

扫码访问仓库 · wangguobao0215/sloth-skills-poster
1 / 10
← 键盘左右键或点击翻页 →