将每个工作区许可证添加到现有应用程序

时间:2011-04-14 09:33:23

标签: .net networking licensing virtual-machine citrix

我被要求考虑申请的许可设置。

  • 客户雇用'10个工作区(定义为带工作站的用户)
  • 客户总是使用我们的软件运行服务器。

我们正在考虑以下设置。

  • 我们的一个面向互联网的服务器*执行工作区验证(*许可证服务器)
  • 用户计算机具有向我们的许可证服务器报告的“某些”唯一指纹
  • 客户的本地服务器“跟踪”正在使用的所有指纹,并向我们的许可证服务器报告经过验证的工作区列表

我们当前的问题是如何为所有用户计算机生成和收集唯一指纹。 Esp,如果它们运行在像Citrix这样的虚拟化堆栈上。

对于普通机器,我们可以使用带有一些额外细节的mac地址。

所有计算机上是否都有全局唯一的硬件ID,尤其是每个工作站始终唯一的Citrix环境?

是否必须阅读指向实施许可证环境的人员的链接,其中包含基于经验的故事。

一些额外信息:

  • 客户本地服务器始终连接到互联网
  • 如果我们的许可服务器已关闭,我们可以随时使用宽限期或电话解锁代码。

4 个答案:

答案 0 :(得分:1)

使用 usb加密狗看起来是唯一的选择。

点击此链接:http://www.answers.com/topic/dongle

但要让它在虚拟机上运行可能会很棘手。这里的银弹使用的是网络连接的USB集线器(例如AnywhereUSB

这意味着您的公司需要额外的硬件成本,加上愤怒的客户。

答案 1 :(得分:1)

我在许可证管理业务公司(Agilis Software)工作,这些问题已经在Orion License Manager中得到满足和处理(其他公司的产品,如Flexera或Safenet也可以这样做)。只需要一个软件系统就可以轻松满足您的要求(不需要加密狗),但为了使您的合法用户有效和透明,您需要注意细节并考虑可能的部署方案。

首先,虽然它被广泛使用,但我不建议将MAC地址作为锁定参数。许多操作系统允许管理员指定MAC地址,这使其成为一种不安全的方法。最好使用其他硬件和软件参数,但可用的参数取决于操作系统和硬件平台。显然,使用多于一个参数可以提高安全性,但是当人们对系统进行微小更改时,您可能希望提供一些弹性。

虚拟系统确实阻止使用这些硬件参数进行锁定,但每个虚拟会话仍然具有可以使用的不变参数。为了进一步提高安全性,您可以要求每个此类会话定期针对服务器重新验证其许可证(我们将其称为“租用许可证”)。

您需要考虑的另一个问题是,如果其中一个工作站崩溃,用户可以如何回收和重新安置许可证。

如果您的客户与Agilis的ISV客户销售的许多最终用户一样,您还应该考虑如果他们没有互联网连接,公司可以获得他们的许可证(可能他们有一个孤立的内部网络,或者你无法通过他们的防火墙)。您的现场服务器将如何获取其许可证,以及如何确保客户不会复制您的服务器,从而使其许可证权利加倍?

(毋庸置疑,Agilis的系统当然包括解决这些和其他挑战的方法)。

希望这有帮助,

答案 2 :(得分:1)

看一下这篇文章:Add Network Floating License Capability To Your Software

它包含有关基于网络的浮动许可证的基础知识以及我们的许可系统CryptoLicensing如何实施这些许可证的信息。如果您可以使用商业现货系统,我建议您查看CryptoLicensing - 它根据您描述的方案满足您的大部分要求。

免责声明:我在CryptoLicensing的开发人员LogicNP Software工作。

答案 3 :(得分:1)

您必须考虑的事实:

  • 机器或工作站概念实际上并不可用,现在使用虚拟机,远程会话,管理程序等......“硬件”不再存在。一切都变成了“虚拟软件”: - )
  • 新的Windows版本(又名Vista,7)安全性得到了很大的提升,包括UAC。这对用户有好处,但对开发人员来说不是那么好。这意味着您的用户可能无法读取硬件信息,或者在环境之外的磁盘上写入(c:\ users \ john \ ...)
  • 用户只需从机器移动到机器(漫游)。随着便携式设备,pdas等的普及,这种情况越来越真实......

这意味着,你必须考虑一个与用户相关的系统,而不是机器。

我会避免安装驱动程序,加密狗或硬件stuf,或使用提升权限的特殊进程或服务,因为从现在开始这可能不支持所有方案。

因此,您可以通过提供与用户绑定的密钥(如Microsoft产品密钥)来实现此功能(您可以拥有一个存储用户< - >密钥关系的数据库)。您可以在用户登录的每台计算机上“按用户”存储密钥缓存,因此每次用户登录时,您都会检查他是否有有效密钥,如果他没有“激活”它并存储密钥(或优先的哈希)。您如何定义密钥以及如何存储密钥(信用卡,USB密钥等等)取决于您。