将数字版权管理添加到java spring应用程序有哪些可能性?
war文件应免费提供,功能有限。客户应该可以选择购买无限制版本。
有没有这方面的标准?
答案 0 :(得分:0)
您可以为付费客户提供额外的jar,以启用新功能。可以使用spring boot autoconfiguration功能(例如@ConditionalOnClass)加载该jar。 你真的需要战争吗?你可以使用可执行jar(jar与捆绑的Tomcat http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html#build-tool-plugins-maven-plugin)。
最终结果是相同的Web应用程序。但是使用jar,可以很容易地将另一个jar(带有附加功能)添加到类路径中,应用程序会将其拾取。
您还可以使用OSGi模块启用新功能。
但这不是真正的DRM,只是定制。一个客户仍然可以从另一个客户复制特定于功能的jar。
您可以为每个客户构建jar(jar中的硬编码客户详细信息)并对其进行模糊处理,但我认为它仍然非常容易破解。 Java非常容易调试,并且没有防止debuging,侧载补丁代码等的保护。
您可以使用SecurityManager启动应用程序(阻止某些敏感操作)https://docs.oracle.com/javase/tutorial/essential/environment/security.html但我认为它仍然很容易绕过。
最后注意:您的部署模型是战争(Web应用程序)。你真的需要为客户提供这场战争吗?也许你可以使用云模型:自己的主机软件,只是让客户访问。特定功能可以仅针对某些(付费客户)解锁。示例:Github甚至Stackoverflow(Stackoverflow为具有更多声誉的用户解锁更多功能,而不是那些付费的用户,但一般规则是相同的。)