Java web应用基于日期的许可逻辑?

Java web应用基于日期的许可逻辑?,java,web-applications,licensing,Java,Web Applications,Licensing,我试图为Java web应用程序提供一种基于日期的许可机制的逻辑。应用程序需要部署在可能无法访问Internet的客户端站点(部署在intranet上)。在这种情况下,如何基于开始/结束日期构建许可机制。如果我使用服务器系统日期/时间进行此操作,我会冒险让系统管理员更改服务器日期/时间,以保持LocaSense处于活动状态。 有什么建议吗?Windows dektop应用程序似乎可以做到这一点,但不知道如何做到 Sanjay.一个可能的解决方案: 您将定期向客户端发出一对匹配的密钥和一个密钥验证

我试图为Java web应用程序提供一种基于日期的许可机制的逻辑。应用程序需要部署在可能无法访问Internet的客户端站点(部署在intranet上)。在这种情况下,如何基于开始/结束日期构建许可机制。如果我使用服务器系统日期/时间进行此操作,我会冒险让系统管理员更改服务器日期/时间,以保持LocaSense处于活动状态。 有什么建议吗?Windows dektop应用程序似乎可以做到这一点,但不知道如何做到

Sanjay.

一个可能的解决方案:

您将定期向客户端发出一对匹配的密钥和一个密钥验证类。服务器应用程序应至少在启动时或定期使用JVM时间与verify类进行检查

您还需要为您的客户机提供一种简单的方式来获取更新的密钥/验证器更新

归根结底,考虑到java类文件可以被检查和操作,这仍然不是一个完整的证明机制,但它确实提供了一个不依赖于主机机制的临时许可方案。

一个可能的解决方案:

您将定期向客户端发出一对匹配的密钥和一个密钥验证类。服务器应用程序应至少在启动时或定期使用JVM时间与verify类进行检查

您还需要为您的客户机提供一种简单的方式来获取更新的密钥/验证器更新


归根结底,考虑到java类文件可以被检查和操作,这仍然不是一个完整的证明机制,但它确实提供了一个不依赖于主机机制的临时许可方案。

通过让应用程序记录上次运行的时间来检测系统日期的任何更改。如果它启动并发现它是未来的最后一次运行,你可以怀疑这是一起谋杀


当然,如果用户能够找到lastRunDate号码的存储位置,他们就可以绕过它。编辑:如果用户真的注意到机器的日期错误并更改了日期,也可能会错误触发。如果您不使用世界时,请不要忘记夏令时的更改(允许一到两个小时的有效日期更改灵活性)。

通过让您的应用程序记录上次运行的时间来检测系统日期的任何更改。如果它启动并发现它是未来的最后一次运行,你可以怀疑这是一起谋杀


当然,如果用户能够找到lastRunDate号码的存储位置,他们就可以绕过它。编辑:如果用户真的注意到机器的日期错误并更改了日期,也可能会错误触发。如果您不使用世界时,请不要忘记夏令时的更改(允许一到两个小时的有效日期更改灵活性)。

嗯,我认为如果规则是:(a)许可必须基于开始和结束日期;(b)不能假设计算机与外部世界相连,那么我认为这个问题在理论上是无法解决的。日期的唯一来源是计算机本身的某个日期,系统日期或用户输入的其他日期。也许我遗漏了一些东西,但我不明白为什么用户在日期问题上撒谎就不会影响我。我的意思是,如果计算机没有连接到外部世界,那么根据定义,没有外部来源来验证日期。你可以像乔伊·特维德尔建议的那样,对日期进行合理性检查,记录你以前见过的日期,并寻找任何可疑的事情,比如日期倒转,或者最后6000次跑步的日期是同一天,等等。除此之外,这听起来像是在摆平圈子或寻找一位诚实的政治家时遇到的一个问题:这是不可能做到的。

嗯,我认为如果规则是:(a)许可必须基于开始和结束日期;(b)不能假设计算机与外部世界相连,那么我认为这个问题在理论上是无法解决的。日期的唯一来源是计算机本身的某个日期,系统日期或用户输入的其他日期。也许我遗漏了一些东西,但我不明白为什么用户在日期问题上撒谎就不会影响我。我的意思是,如果计算机没有连接到外部世界,那么根据定义,没有外部来源来验证日期。你可以像乔伊·特维德尔建议的那样,对日期进行合理性检查,记录你以前见过的日期,并寻找任何可疑的事情,比如日期倒转,或者最后6000次跑步的日期是同一天,等等。除此之外,这听起来像是摆平圈子或找一个诚实的政治家的问题:这是不可能做到的。

“我冒着让系统管理员更改服务器日期/时间以保持LocaSense活动的风险。”此外,当许可证关闭,软件停止工作时,您可能永远失去客户。更糟糕的是,有人更改了日期(以及给管理员带来的所有问题),或者有人因为您的许可证方案太复杂而从不续签?为了避免让客户感到不安,您可以让您的应用程序继续运行,但如果许可证过期,请删除高级功能。并确保您有一个简单的方法让他们重新开始。“我冒着系统管理员更改服务器日期/时间以保持LocaSense活动的风险。”此外,当许可证关闭,软件停止工作时,您可能永远失去客户。更糟糕的是,有人更改了日期(以及给管理员带来的所有问题),或者有人因为您的许可证方案太复杂而从不续签?为了避免让客户感到不安,您可以让您的应用程序继续运行,但如果许可证过期,请删除高级功能。确保你有一个简单的方法让他们重新开始。