基于日期的Java Web应用程序许可逻辑?

时间:2009-05-08 14:32:32

标签: java web-applications licensing

我正在尝试为Java Web应用程序提供基于日期的许可机制的逻辑。应用程序需要部署在可能无法访问Internet的客户端站点中(部署在Intranet上)。在这种情况下,如何基于开始/结束日期构建许可机制。如果我使用服务器系统日期/时间,我冒险系统管理员更改服务器日期/时间以保持locense活动。 有什么建议? Windows dektop应用程序似乎这样做,不确定如何?

桑杰。

3 个答案:

答案 0 :(得分:1)

嗯,我认为如果规则是:(a)许可必须基于开始和结束日期; (b)不能假定计算机与外界连接,那么我认为这个问题在理论上是不可解决的。您日期的唯一来源是计算机本身的某个日期,系统日期或用户输入的其他日期。也许我错过了一些东西,但我不知道它是如何不受用户撒谎的约束。我的意思是,如果计算机没有连接到外部世界,那么根据定义,没有外部来源来验证日期。你可以做一些类似Joeytwiddle的建议,在日期进行合理性检查,记录你之前见过的日期,并寻找任何可疑的事情,例如日期倒退或者是最后6000次运行的同一天或其他什么。除此之外,这听起来像是在围绕圈子或找到一个诚实的政治家的问题:它无法完成。

答案 1 :(得分:0)

可能的解决方案:

您将定期向您的客户发出一对匹配的密钥和密钥验证类。服务器应用程序应该在启动时最少检查验证类,或者定期使用JVM时间。

您还需要为您的客户提供一个简单的方法来获得更新的密钥/验证程序更新。

在一天结束时,鉴于可以检查和操作java类文件,这仍然不是一个完整的证明机制,但它确实提供了一个不依赖于主机机制的时间许可方案。

答案 2 :(得分:0)

通过让您的应用记录上次运行时间来检测系统日期中的任何更改。如果它启动并发现它是将来的最后一次运行,你可以怀疑犯规!

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