5

我将销售一种由我自己的服务器上的 Web 应用程序管理的新产品。Web 应用程序将允许管理一些设备。

我想将可管理设备的数量限制为用户购买的许可证数量。

我的网络应用程序目前允许管理所有设备,没有数量限制。

我不知道从哪里开始实施许可(许可密钥生成和检查),也不知道根据用户拥有的许可密钥限制设备。

任何帮助都将受到欢迎。先感谢您。

仅供参考:我正在使用 jquery、php 和 mysql。

4

1 回答 1

8

我会在数据库中实现几个表,如下所示:

将有以下实体:用户许可证设备

如上所示,这些实体将相互关联。每个许可证都将包含有关许可设备数量的信息。

当设备连接到您的服务时,您的服务会通过其 ID 识别它,该 ID 在连接时由设备发送。然后你可以检查,设备是否注册,以及与该设备相关的许可证。

设备注册时将检查设备数量限制。

当用户注册设备时(将信息添加到表中:Devices和),您的代码应根据表中的字段值LicensedDevices检查已使用此许可证注册的设备的数量。devicesQtyLicenses

如果devicesQtyvalue 允许添加更多设备,那么您的代码会将新设备添加到数据库中。

更新:

要控制许可设备的数量,您需要注册这些设备(例如 - 使用这些设备的唯一 ID)。否则,您无法控制使用您服务的设备数量。

一台设备连接、工作、断开连接,然后是另一台,然后是另一台,依此类推。在这种情况下如何控制数量?我认为除非注册这些设备的 ID,否则没有办法。

如果用户将他的设备更换为新设备,那么应该有一个程序来更新有关注册设备的信息。

如果您的客户仅使用网络浏览器来使用您的服务,那么控制许可证/设备的唯一方法是将 userid+password+deviceId 绑定到许可证。并在登录到您的网络服务/网络服务器时检查此信息。

如果您在移动设备上使用本机应用程序连接到您的 Web 服务,那么还有更复杂的方法。

通过非对称加密方法实现许可证密钥生成/验证。

为每个用户生成公钥和私钥。然后将私钥存储在您的数据库中,不要向任何人显示。

假设您的公钥是:ABC-123-456

使用Base64 算法将公钥字节转换为字母数字字符。

然后,在销售许可证时生成任意唯一的许可证代码。

Let say your license code is: XYZ-789-012

And provide end-users with public key and license code: ABC-123-456 and XYZ-789-012

User sets public key and license code to the custom mobile application settings. And this application encrypts all sending data with this public key. And license code is included to the data package before encrypting it.

When your server receives a data from a device, it finds appropriate user by deviceId, then it finds appropriate private key to decrypt the data package. And then it inspects this data package on correctness.

于 2013-03-29T08:32:36.480 回答