离线授权文件生成
海枫授权系统 HeyAuth
支持离线授权。在客户端不便于连接到服务端时推荐使用这种方法。对于这种授权模式,HeyAuth支持两种生成方式。
方法一:RSA通用模式
这种方法通过非对称加密算法,由HeyAuth通过加密密钥生成一个授权文件,然后通过客户端使用解密密钥获得数据。由于加密密钥与解密密钥不相同,并且他人几乎无法逆推出加密密钥和原始数据,因此您可以完全放心地把解密密钥公开。您可以通过其他程序生成一对RSA密钥,并且只告诉HeyAuth加密密钥。HeyAuth也自带一个密钥对生成器,你也可以通过它来生成,并获得公钥和私钥。HeyAuth将生成一个二进制的授权文件:
而您的产品中需要解密并校验客户端是否符合授权信息:
Python解密函数示例:
from Crypto import Random
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
def decode(info: str, key: str) -> str:
"""
解密授权信息文件。
:param info: 二进制Key.bin文件
:type info: str
:param key: RSA密钥
:type key: str
:return: 授权信息原文
:rtype: str
"""
pri_key = RSA.importKey(key)
cipher = PKCS1_v1_5.new(pri_key)
back_text = cipher.decrypt(
base64.b64decode(info), 0))
return (back_text.decode(‘utf-8’))
打个比方:用户程序目录下有一个主程序和key文件,这个主程序启动时会读取key中的内容,程序需要先使用预先设置好的解密密钥来解密授权文件,然后判定文件中机器码亦或者其他内容是否与机器匹配。如果匹配则继续启动,不匹配就终止运行。后续我们也会上线相关SDK,具体请关注后续的版本。
与此同时,HeyAuth也会保存客户端的授权信息,您可以向API传递授权码来查询客户端信息是否匹配:
响应:
{"code": 200, "data": {"product_id": 1, etc...}, msg: ""}
方法二:调用参数生成
HeyAuth支持调用系统命令生成授权信息。比如,您通过Go语言写了一个授权生成器,HeyAuth将会调用相关命令让程序生成授权文件。
参数可在 HeyAuth 仪表盘-产品管理 中自行配置。
生成后需要程序返回授权文件的路径。
补充说明
- HeyAuth会将授权文件保存或移动到临时目录下,并为用户提供一次性下载能力。这意味着用户无法使用多线程下载授权文件,也让文件在被访问后无法再次被调用(会返回404)。
- HeyAuth会记录大多数操作日志,你可以在HeyAuth仪表盘-站点一览-操作日志中查看相关信息,包括授权信息,授权文件的生成时间以及下载时间。
最后修改时间: 21 天前