产品 (Product)

比特授权云上的“产品”是对一个授权对象的定义。具体来说,产品可以对应开发商的一套软件或一组软件组合。

“产品”也是应用的授权功能模块的集合。

设计产品时,开发商可以定义以下内容:

  • 产品名称:产品名称必须是唯一的,用于区分不同的授权设计。开发商可以为产品建立描述说明。
  • 特征项:每一个产品可以设置多个特征项,用于对应软件的授权功能模块。对于产品特征项的更详细的描述可以参考:特征项 (Feature)
  • 配置项:每一个产品可以设置多个配置项,以安全存储软件的应用配置。对于产品配置项的更详细的描述可以参考:配置项 (Data)

产品是授权设计的基础。

模版 (Template)

“模版”是授权产品内特征项的一个子集,它限制了授权中可用的产品模块及其版本。因此,模版往往对应开发商软件的一个发行版本。

业务 (Business)

业务定义了开发商希望建立什么样的软件销售商业模式。

比特授权云提供了包括云授权、集团授权和单机授权在内的多种授权类型支持。点击了解详情

对不同的授权类型,开发商可以配置相应的授权项组合。它们包括:

  • 连接类型:对于单机授权,可以选择离线或可自动进行后台验证的智能连接方式。
  • 强制认证:客户端最大离线时间。客户端每次经过设置时间后,必须与服务器再次连接验证才能继续使用。
  • 安装限制:客户端允许激活的次数。安装限制次数被单机授权的所有客户端共享。
  • 有 效 期:软件从激活开始算起所能使用的最长时间。
  • 用 户 数:用于集团授权,表示集团授权服务器可支持的最大并发访问用户数。
  • 起始日期:授权开始生效的绝对时间。
  • 结束日期:授权失效的绝对时间。
  • 使用次数:客户端能够成功执行Login操作的次数。
  • 终端限制:设置单机授权允许在多少台客户端上被激活。

灵活地设置上述授权属性,可以准确控制授权码的使用,对更好地适应开发商软件的销售模式。例如建立一个演示类型的业务以产生演示授权,再建立一个永久有效期的单机类型业务以产生正式版本授权。

授权 (Entitlement)

授权包含了开发商为软件用户实际发放的授权内容,包括可用功能模块和授权详细信息等。授权从模版中继承授权模块设置;从业务中继承授权类型,但可以改写业务所允许的授权属性。

下图给出了一个授权的基本属性页面,注意对应不同业务模式的授权属性并不相同。

授权基本信息

授权由全球唯一的授权码(SN)所标识。授权码由数字和字母组成,长度为16个字符。

在授权内容更新后,客户端可以使用授权对应的授权码升级授权内容。对于云授权,授权内容的更新将会立刻反映到客户端——客户端应用无需重新启动;对集团授权和单机授权,这些更新会在客户端下次连接服务器的时候进行同步。拥有智能连接属性的单机授权会在客户端连网时自动进行同步;拥有强制认证期限的本地授权需要定期与服务器进行连接;其它情况下,客户端只在授权失效的时候才会尝试连接服务器。

开发商也可以选择用手动的方式更新客户端本地授权内容。

特征项 (Feature)

特征项是产品授权设置的核心内容,一般用于应用程序功能模块的授权或为应用程序添加加密调用点。特征项由特征ID及特征名称来标识,其中特征ID用于在API调用过程中标识特征项,特征名称用于在界面上标识特征项。特征ID和特征名称在产品内唯一。

特征项包含类型和值等基本属性,以及有效期、用户数等授权属性。这些属性决定了特征项在API调用中的表现。

授权产品的特征项编辑界面如下图所示。

特征项列表

特征项属性

特征项的数量、名称、类型、可覆盖属性,以及所有对特征组的设置都只能在产品特征项设置界面完成。在模版和授权码的特征项设置界面中只能对特征项进行选择,设置特征项的授权属性,或修改具有“可覆盖”属性的特征项值。

下面是对产品特征项界面的基本特征项属性的说明:

  • ID:由系统分配的特征项标识,整数类型。特征ID主要用于客户端API调用时指定特征项。
  • 名称:可编辑的特征项名称字符串,用于标识特征项的用途。特征项名称在集团授权管理界面以及其它与特征项显示有关的工具界面上对最终用户可见。
  • 类型:不同的特征项类型决定了其可进行的操作。
  • 可覆盖:表示是否可以在模版或授权码中重新设定该特征项的值。当不同的用户或模版可能使用不同的特征值时,应设置。
  • 值:用于影响特征项的API操作结果。

在授权码中可以设置和修改特征项的授权属性,注意这些属性同时受其所在授权码的授权属性约束。特征项的授权属性包括:

  • 有效期:该特征项自所在授权码激活时算起所能使用的期限,以“天”为单位。
  • 结束日期:特征项的授权结束日期,特征项可用到结束日期当天的24点。
  • 用户数:只对集团授权类型的SN可设,用于设置该特征项的可用用户数。

特征项类型

特征项可以是下面的类型之一:

  • 只读:表示特征值存储只读数据。客户端API无法对它进行写操作。可用操作:ReadFeature。
  • 读写:表示特征值既可读也可以修改。可用操作:ReadFeature,WriteFeature。
  • 算法:表示特征值是一个算法因子。算法特征不能进行读、写,只提供对输入数据的单向转换操作:ConvertFeature。
  • 密钥:表示特征值是AES密钥因子。密钥特征可以进行加、解密操作:EncryptFeature,DecryptFeature。

所有的特征项类型都支持 QueryFeature 和 ReleaseFeature 操作,以检查特征项是否存在及是否有效。对于集团授权来说,QueryFeature还会占用模块用户数,ReleaseFeature用来释放模块用户数。对这两个函数的调用在代码中应该成对出现。

特征组

可以对特征项分组,以方便管理和选择。默认时,产品特征项只有一个“所有”组,包含了所有特征项。通过点击在产品特征项编辑界面左侧的“+”号,可以创建新的特征组。

将鼠标移动到某个特征组名称上,名称的右侧会出现“x”号,点击将会删除特征组。

点击特征组名称,将会进入该特征组的编辑界面,在编辑界面里可以选择该特征组所包含的特征项。新产生的特征项默认不会出现在除“所有”之外的特征组里,必须手工进行添加。

典型用法

特征项主要用于对应用程序的多模块操作,以及添加必要的加密验证点。

一般来说,在应用程序的特征项设置中可以为每一个需要单独授权的模块分配一个主特征项,用于授权验证,并根据需要添加几个用于加密的辅助特征项。在每一个模块代码的开始部分调用 QueryFeature 对主特征项进行验证,判断该模块是否授权及授权是否有效,在模块退出前则应相应调用 ReleaseFeature 释放对模块的占用,这对于集团授权是非常重要的。在代码的其它部分可以随机操作辅助特征项,以加强安全验证。

根据用户的订单,开发商内部的操作人员在授权码中选择需要授权的模块,并为这些模块设置有效期和用户数,确保用户获得相应的授权。

不需要在程序中过于频繁地调用特征项操作函数,以避免软件的运行速度受到影响。

DRM产品的特征项类型不能设置,并且不能选择可覆盖属性,这是因为DRM产品的特征项用于提供数字内容的加密密钥。

对于“密钥”和“算法”类型的特征项,当操作人员只有读权限时,其特征值不可见,并显示为“********”。

配置项 (Data)

比特授权云上的授权产品使用特征项来定义代码中的功能点和加密点,使用配置项来定义应用程序和用户数据。

产品特征项只能保存整数类型数据,不适合记录字符串等其它类型的应用数据。比特授权云使用配置项功能来满足开发商应用程序对小数据存储的需求。

一个产品可以定义数百个配置项。如同它的名字,配置项一般用来在存储应用程序的配置信息,也可以存储少量的运行时数据。

每一个配置项由 Name / Value 对组成,Name用来标识该配置项,Value保存配置项的实际内容。 Name和Value的定义都是字符串类型。如果开发商希望存储其它的数据类型,需要手工进行转换。由于比特授权系统采用UTF-8编码存储字符串,客户端代码可能需要对汉字字符串进行特别的处理,以进行正确的判断和操作。

配置项的操作

编辑配置项

通过在产品属性页中选择“配置项”来进入配置项设置页面。上图是配置项的编辑界面。

与特征项不同,配置项主要用于存放应用程序数据或用户配置,因此可以在模版和授权码中创建产品配置项中不存在的配置项名称。如果在模版或授权码中创建或修改了同名的产品配置项,则应用程序代码会取得覆盖后的配置值。

使用客户端API,可以通过配置项名称来获取配置项的值 (GetData),或添加(当同名配置项不存在)、修改(当同名配置项存在)配置项内容;也可以删除授权码中的配置项,但试图删除产品或模版中定义的配置项将会返回错误。

可以通过获取配置项数量 (GetDataNum) 和获取配置项名称 (GetDataName) 接口来实现对配置项的枚举。

提示

配置项主要用来存储配置信息,开发人员不应使用它来代替特征项完成安全操作。

授权客户端库可能采用缓存的机制在客户端保留配置项的全部或部分内容,以加快配置项的处理速度,因此在系统突然掉电或因其它突发因素发生故障的时候,一些最近更新的配置项内容有可能会丢失。应用程序应考虑这种情况。