软件授权验证
不止于卡密校验
完整的验证生命周期管理——从注册接入到运行时心跳,从首次验证到设备管理,从状态码响应到到期处理。9 层中间件链 + 8 维度加密算法,每一层都有对应的安全机制。
全链路 HTTPS 加密 + HSTS Preload,防中间人攻击与降级
app_key + API Key 双重校验 + X25519 密钥协商建立加密通道
RSA-4096-OAEP 非对称签名 + HMAC-SHA384 消息认证,防篡改
AEAD 认证加密 + 完整性校验,密钥动态派生(HKDF-SHA256)
时间戳 + 随机串双校验,5 分钟窗口外请求拒绝
none/machine_code/ip_ua/hardware_fingerprint/multi_factor 按应用配置
多租户数据行级隔离,应用间互不可见,fail-closed 默认
SHA-384 哈希链审计日志 + 高频操作检测,操作可追溯
完整的授权验证体系
从卡密管理到设备绑定,从在线验证到状态码响应,覆盖授权验证全场景。
卡密管理
批量生成/导入/导出、自定义字符集、有效期管控、作废与退款全流程
设备绑定策略
按应用配置设备数量、解绑规则、黑名单和临时封禁,授权状态可追溯。
云更新与配置
版本检测、强制更新、公告配置和云端参数下发,方便客户端持续迭代。
代理分销体系
开发者可配置代理、套餐和余额体系,支持主代理与子代理协同售卡。
工单与账户服务
用户支持、充值、订单、签到和市场资源形成完整的开发者服务区。
验证生命周期
从注册接入到运行时心跳,从首次验证到设备管理,覆盖 statecode 0-5 六种状态的完整链路。
开发者通过开发者注册页注册账号,邮箱验证后即可登录开发者控制台。
在开发者控制台创建应用,系统自动生成 app_key(ak_)、app_secret(sk_) 与 API Key(dk_),配置加密参数后即可对接。
客户端启动后调用 /api/app/init 获取应用配置、公告、加密套件(x25519/aes-256-gcm/hkdf-sha256/ed25519)与心跳参数。
用户输入卡密,客户端采集设备指纹并签名,调用 /api/auth/card/verify 完成卡密激活与设备绑定。CardEngine 内部 8 步:应用获取→维护检查→卡密猜测检测→状态机→设备签名→设备绑定(事务)→成功处理→Webhook 通知。
客户端按心跳间隔调用 /api/auth/card/heartbeat,服务端续期授权检查并更新在线设备状态。返回 statecode=0 表示正常。
心跳或验证返回非 0 statecode 时,客户端按状态码处理:3=被踢下线(其他设备登录)、4=需更新(调用云更新)、5=服务器维护(稍后重试)。
用户可在客户端调用 /api/auth/device/unbind 解绑当前设备,或由开发者后台管理卡密的设备绑定记录。重新绑定受 rebind_cooldown(默认 24h)限制。
卡密到期或被冻结时,验证/心跳返回 statecode=1(到期) 或 statecode=2(冻结)。客户端提示用户续费或联系开发者。状态机:待激活→已激活→已过期/已冻结/已作废。
针对真实攻击场景
不是抽象的安全概念,而是针对每种具体攻击方式的防御机制。
截获合法请求后重复发送,试图绕过验证或重复扣减次数。
Timestamp + Nonce 双重校验,5 分钟窗口外拒绝,Nonce 一次性使用。
拦截通信,窃取卡密、设备指纹等敏感信息。
TLS 1.3 全链路加密 + RSA-4096-OAEP 签名验证,攻击者无法伪造或解密。
修改设备指纹信息,试图在多台设备上使用同一卡密。
5 种设备绑定方案 + HMAC-SHA384 设备签名校验,事务内行锁防并发竞态。
卡密泄露后,他人在异地设备上使用。
设备绑定限制 + 卡密维度暴力破解防护,5 次失败锁 30 分钟,渐进式延迟 1s→2s→4s→8s。
使用自动化工具尝试大量卡密组合。
IP 维度:10 分钟内 5 次失败锁 30 分钟;卡密维度:5 次失败锁定,渐进式延迟。
在输入参数中注入 SQL 语句,试图绕过验证或获取数据。
PDO 参数预编译 + RLS 行级隔离,即使注入成功也无法跨应用访问数据。
通过漏洞获取数据库访问权限,窃取敏感数据。
AES-256-GCM 字段级加密存储 + RLS 隔离,数据库被攻破也无法解密。
合法用户尝试访问其他应用或用户的数据。
RLS 行级隔离 + ABAC 属性访问控制 + JWT 客户端指纹绑定,跨设备/跨应用重放被拒绝。
几行代码,轻松接入
支持多种编程语言,提供完整的 SDK 和示例代码。
<?php // 1. 初始化客户端(app_key=ak_ 前缀,api_key=dk_ 前缀) $api = new AegisAuthnb([ 'app_key' => 'ak_xxxxxxxxxxxxxxxx', 'api_key' => 'dk_xxxxxxxxxxxxxxxx' ]); // 2. 应用初始化(POST /api/app/init) $init = $api->init($device_id); // 3. 卡密验证(POST /api/auth/card/verify) $result = $api->verify([ 'card_key' => 'AGS-XXXX-XXXX-XXXX-XXXX', 'device_id' => $device_id ]); if ($result['statecode'] == 0) { echo "验证成功"; } else { echo "状态码:" . $result['statecode']; }
from aegisauthnb import Auth # 1. 初始化客户端(app_key=ak_ 前缀,api_key=dk_ 前缀) auth = Auth( app_key="ak_xxxxxxxxxxxxxxxx", api_key="dk_xxxxxxxxxxxxxxxx" ) # 2. 应用初始化(POST /api/app/init) init = auth.init(device_id) # 3. 卡密验证(POST /api/auth/card/verify) result = auth.verify( card_key="AGS-XXXX-XXXX-XXXX-XXXX", device_id=device_id ) if result['statecode'] == 0: print("验证成功") else: print("状态码:", result['statecode'])
const { AegisAuthnb } = require('aegisauthnb'); // 1. 初始化客户端(app_key=ak_ 前缀,api_key=dk_ 前缀) const auth = new AegisAuthnb({ appKey: 'ak_xxxxxxxxxxxxxxxx', apiKey: 'dk_xxxxxxxxxxxxxxxx' }); // 2. 应用初始化(POST /api/app/init) const init = await auth.init(deviceId); // 3. 卡密验证(POST /api/auth/card/verify) const result = await auth.verify({ cardKey: 'AGS-XXXX-XXXX-XXXX-XXXX', deviceId: deviceId }); if (result.statecode === 0) { console.log('验证成功'); } else { console.log(`状态码:${result.statecode}`); }
import com.aegisauthnb.AegisAuthnb; // 1. 初始化客户端(app_key=ak_ 前缀,api_key=dk_ 前缀) AegisAuthnb auth = new AegisAuthnb( "ak_xxxxxxxxxxxxxxxx", "dk_xxxxxxxxxxxxxxxx" ); // 2. 应用初始化(POST /api/app/init) InitResult init = auth.init(deviceId); // 3. 卡密验证(POST /api/auth/card/verify) AuthResult result = auth.verify( "AGS-XXXX-XXXX-XXXX-XXXX", deviceId ); if (result.getStatecode() == 0) { System.out.println("验证成功"); } else { System.out.println("状态码: " + result.getStatecode()); }
#include "aegisauthnb.h" // 1. 初始化客户端(app_key=ak_ 前缀,api_key=dk_ 前缀) AegisAuthnb auth("ak_xxxxxxxxxxxxxxxx", "dk_xxxxxxxxxxxxxxxx"); // 2. 应用初始化(POST /api/app/init) InitResult init = auth.init(device_id); // 3. 卡密验证(POST /api/auth/card/verify) AuthResult result = auth.verify( "AGS-XXXX-XXXX-XXXX-XXXX", device_id ); if (result.statecode == 0) { std::cout << "验证成功" << std::endl; } else { std::cout << "状态码: " << result.statecode << std::endl; }
从注册到接入,路径更短
注册开发者账号 → 创建应用获取 app_key(ak_) 与 app_secret(sk_) → 创建 API Key(dk_) → 配置加密参数 → 调用 /api/app/init 初始化 → 调用 /api/auth/card/verify 验证。
- 5 分钟完成对接
- 完整的 SDK 支持
- 详细的开发文档
- 8 维度 42 种加密算法
- 5 种设备绑定方案
灵活的定价方案,满足从个人到企业的不同需求
从免费入门到企业定制,按业务规模选择适合的方案,无隐藏费用
联系我们
如有任何问题或合作意向,请通过以下方式与我们联系
工作日 2 小时内响应,紧急问题优先处理
暂无联系方式配置