比特授权云为软件开发商提供了高安全、高可用的一站式软件保护及授权管理解决方案,可适用于各种运行环境,并最大化支持软件发行业务模式。

比特授权云架构如下:

  • 从比特授权云服务获取授权(适用于单机授权,云授权)
从比特授权云服务获取授权
  • 从集团授权服务获取授权(适用于集团授权)
从集团授权服务获取授权

本文档用于说明比特授权云架构中客户端SDK的开发和集成,目标读者是开发人员,整个文档的API集成示例均以C语言为例。

名词解释

  • 资源:需要保护或控制的功能都可以是一个资源。(例如:一个独立的软件,一个按钮,一段数据)
  • 授权:将资源的访问权限下放给设备(或用户)的过程。
  • 激活:将设备(或用户)与权限绑定的过程。
  • 授权升级:给设备(或用户)增加或减少资源的访问权限。
  • 授权检查:检查设备(或用户)是否拥有资源的访问权限。
  • 授权文件 / License文件:保存在设备本地的授权文件。
  • 特征项:用来与开发商程序的加密点对应,开发商通过控制license的特征项来控制软件的功能使用。
  • 特征项版本:特征项可以设置版本,对应到开发商软件功能的不同版本。
  • 单机授权(试用,浮动):单机授权的客户端激活后,将授权文件保存在本地,使用时不需要再连接外部授权服务器。
  • BIT-ID授权/比特ID授权:BIT-ID授权等同于比特ID授权。比特ID是比特授权云提供的一种USB硬件,比特ID授权在单机授权的基础上额外绑定了比特ID硬件,只有插着比特ID硬件,客户端上的软件才能正常使用。
  • 内存授权:将单机授权的license传入API进行校验,客户端只校验传入的license,没有激活过程。
  • 集团授权:比特授权云提供了通过单独架设授权服务器,对局域网或互联网上的用户进行并发访问控制的授权方式,这种授权形式叫集团授权。
  • 云授权 / 帐号授权:使用帐号或者授权码实时连接到比特云服务器获取授权。

SDK集成说明

平台支持

开发商需要在比特授权云平台下载SDK和头文件,其中SDK包括不同平台的静态库和动态库,目前支持的平台包括:Windows、Linux、Android、ARM Linux、MIPS Linux、MacOS、iOS、HarmonyOS、QNX。

如果所需平台不包含在里面,请与比特授权云联系。

基本流程

任何软件都可以抽象成由不同功能组合而成(以Word为例子,它是由复制,粘贴,插入图片…等不同功能组成),开发商可以在需要保护的功能里添加授权检查点并将每一个授权检查点对应到一个特征项上,这样,开发商就可以通过控制license里的特征项来控制软件的具体功能。

  • 当开发商只需要控制软件是否可用,不需要控制某个功能时,流程如下:
通过license控制软件
  • 当开发商需要控制某个功能时,流程如下:
通过license控制功能

快速集成

本小节以实现基本授权流程为例,介绍如何使用C语言SDK进行集成开发。

  1. 环境准备

在比特授权云平台下载C的头文件bitanswer.h和Linux64位静态库libxxx_xxx_x64.a。

准备一个Linux系统,例如Ubuntu16。

  1. 编码

创建main.c,内容如下:

#include <stdio.h>
#include "bitanswer.h"

int Activate()
{
    BIT_CHAR sn[32] = { 0 };
    BIT_STATUS status = BIT_SUCCESS;
    printf("输入授权码:\n");
    scanf("%s", sn);

    // 调用比特云库函数,连接云服务实现激活
    status = Bit_UpdateOnline(NULL, sn, application_data);
    if (status == BIT_SUCCESS)
    {
        printf("激活成功\n");
        return 1;
    }
    printf("激活失败\n");
    return 0;
}

void main()
{
    BIT_HANDLE handle = NULL;
    BIT_STATUS status = BIT_SUCCESS;

// 调用比特云库函数,检查是否有可用授权
    status = Bit_Login(NULL, NULL, application_data, &handle, BIT_MODE_AUTO);
    if (status != BIT_SUCCESS)
    {
        printf("未找到可用授权,%d\n", status);
        if (!Activate())
        {
            return;
        }
        status = Bit_Login(NULL, NULL, application_data, &handle, BIT_MODE_AUTO);
        if (status != BIT_SUCCESS)
        {
            printf("未找到可用授权,%d\n", status);
            return;
        }
    }
    printf("授权验证成功\n");
    // 执行业务逻辑

// 调用比特云库函数,释放资源
    Bit_Logout(handle);
}
  1. 编译

将libxxx_xxx_x64.a和main.c放到同一个目录下,执行下面的命令进行编译。

gcc main.c -lxxx_xxx_x64 -L./
  1. 运行

运行编译生成的a.out程序,根据提示进行操作,至此,一个基本授权流程就完成了。