.net 将每个工作场所许可证添加到现有应用程序

.net 将每个工作场所许可证添加到现有应用程序,.net,networking,licensing,virtual-machine,citrix,.net,Networking,Licensing,Virtual Machine,Citrix,我被要求考虑我们的应用程序的许可设置 客户“租用”10个工作区(定义为具有工作站的用户) 客户总是有一台服务器与我们的softwarre一起运行 我们正在考虑以下设置 我们的一个面向internet的服务器*执行工作区验证(*许可证服务器) 用户计算机具有“某些”唯一指纹,这些指纹会报告给我们的许可证服务器 客户的本地服务器“跟踪”正在使用的所有指纹,并向我们的许可证服务器报告已验证工作区的列表 我们当前的问题是如何为所有用户机器生成和收集唯一的指纹。Esp,如果它们运行在citrix等

我被要求考虑我们的应用程序的许可设置

  • 客户“租用”10个工作区(定义为具有工作站的用户)
  • 客户总是有一台服务器与我们的softwarre一起运行
我们正在考虑以下设置

  • 我们的一个面向internet的服务器*执行工作区验证(*许可证服务器)
  • 用户计算机具有“某些”唯一指纹,这些指纹会报告给我们的许可证服务器
  • 客户的本地服务器“跟踪”正在使用的所有指纹,并向我们的许可证服务器报告已验证工作区的列表
我们当前的问题是如何为所有用户机器生成和收集唯一的指纹。Esp,如果它们运行在citrix等虚拟化堆栈上

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

是否在所有机器上,特别是在每个工作站上始终唯一的citrix环境上,都有一个全局唯一的硬件ID

是否有一些必读链接指向实施许可证环境的人员,其中有基于经验的故事

一些额外信息:

  • 客户本地服务器始终连接到internet
  • 如果我们的授权服务器关闭,我们可以始终使用宽限期或电话解锁码

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

检查此链接:

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


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

我在一家从事许可证管理业务(Agilis软件)的公司工作,这些问题已经在Orion中得到解决和解决(来自其他公司的产品,如Flexera或Safenet也可能会这样做)。只使用软件的系统(不需要加密狗)很容易满足您的需求,但要使其对合法用户有效且透明,您确实需要注意细节并考虑可能的部署场景

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

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

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

如果你的客户像AGIIS的ISV客户出售的许多终端用户一样,你也应该考虑到如果他们没有互联网连接,公司如何获得他们的许可证(也许他们有一个孤立的内部网络,或者你不能通过他们的防火墙)。您的现场服务器将如何获得其许可证,您如何确保客户不会复制您的服务器,从而使其许可证权利翻倍

(不用说,Agilis的系统当然包括这些和其他挑战的解决方案)

希望这有帮助


多米尼克看看这篇文章:

它提供了基于网络的浮动许可证的基本信息,以及我们的许可证系统如何实现这些信息。如果您可以使用商业现成的系统,我建议您看看CryptoLicensing——根据您描述的场景,它可以满足您的大多数需求


免责声明:我在LogicNP软件公司工作,该公司是加密许可的开发者

您必须考虑的事实:

  • 机器或工作站的概念实际上不可用,现在有了虚拟机、远程会话、虚拟机监控程序等等。。。“硬件”已经不存在了。一切都变成“虚拟软件”:-)
  • 新的Windows版本(又名Vista,7)的安全性已经大大增强,包括。这对用户有好处,但对开发人员没有好处。这意味着您的用户可能无法读取硬件信息,或在其环境之外的磁盘上进行写操作(c:\users\john\…)
  • 用户只需从一台机器移动到另一台机器(漫游)。随着便携式设备、PDA等的普及,这一点每天都在变得越来越真实
这意味着,你将不得不考虑一个更依赖于用户而不是机器的系统

我将避免安装驱动程序、加密狗或硬件stuf,或具有提升权限的特殊进程或服务,因为从现在起,这可能不支持所有场景


因此,您可以通过提供绑定到用户的密钥(如Microsoft产品密钥)来实现这一点(您可以拥有存储用户密钥关系的数据库)。您可以在用户登录的每台计算机上“每用户”存储一个密钥缓存,因此每次用户登录时,您都会检查他是否拥有有效的密钥,如果没有,您可以“激活”该密钥并存储密钥(或者首选散列)。您如何定义密钥以及如何存储密钥(信用卡、usb密钥等)取决于您。

Dominic,您的答案并非无关紧要。你不是在发垃圾邮件。然而,你的答案中的“我们”部分使得这个答案是由一家公司写的。请换一下。我还建议您至少多问候一位许可证管理人员(不一定是您最好的竞争对手)。我们有这个问题,因为我们必须使用我们自己现有的(不是很大,而是不断增长的)软件堆栈。实施