在登录后保护Java类

在登录后保护Java类,java,urlclassloader,Java,Urlclassloader,我有一个Java应用程序,我想添加一个许可证系统。我已经创建了一个串行密钥系统,用于在远程服务器上启动之前验证软件 我真正想做的是在远程服务器上托管一个.jar或.zip文件,并使用URL类加载器导入类。我还需要这个事务是安全的,这样只有具有有效密钥的产品才能将类加载到RAM中 我认为这可以通过PHP和服务器端的一些重写规则来实现。然而,我不知道如何从Java端处理这个问题。我过去使用URL类加载器制作模块化系统,但一直无法找到远程实现的方法 有人能解释或举例吗?有不止一个问题 我真正想做的是在

我有一个Java应用程序,我想添加一个许可证系统。我已经创建了一个串行密钥系统,用于在远程服务器上启动之前验证软件

我真正想做的是在远程服务器上托管一个.jar或.zip文件,并使用URL类加载器导入类。我还需要这个事务是安全的,这样只有具有有效密钥的产品才能将类加载到RAM中

我认为这可以通过PHP和服务器端的一些重写规则来实现。然而,我不知道如何从Java端处理这个问题。我过去使用URL类加载器制作模块化系统,但一直无法找到远程实现的方法


有人能解释或举例吗?

有不止一个问题

我真正想做的是在远程服务器上托管一个.jar或.zip文件,并使用URL类加载器导入类

这是完全可能的,看一看,只是粘贴了许多答案中的一个

File file = ...
URL url = file.toURI().toURL();

URLClassLoader classLoader = 
(URLClassLoader)ClassLoader.getSystemClassLoader();
Method method = 
 URLClassLoader.class.getDeclaredMethod("addURL", 
URL.class);
 method.setAccessible(true);
 method.invoke(classLoader, url);
然后只需使用classforname

Class.forName("ExampleClass").newInstance()
我还需要这个事务是安全的,这样只有具有有效密钥的产品才能将类加载到RAM中


这取决于您使用的是什么技术,也许最好创建另一个特定于此的问题,但在一般回答中,只要找到或编写一个身份验证系统,您就可以了,例如,如果您使用的是spring,您可以使用spring安全性,身份验证的标准是

有不止一个问题

我真正想做的是在远程服务器上托管一个.jar或.zip文件,并使用URL类加载器导入类

这是完全可能的,看一看,只是粘贴了许多答案中的一个

File file = ...
URL url = file.toURI().toURL();

URLClassLoader classLoader = 
(URLClassLoader)ClassLoader.getSystemClassLoader();
Method method = 
 URLClassLoader.class.getDeclaredMethod("addURL", 
URL.class);
 method.setAccessible(true);
 method.invoke(classLoader, url);
然后只需使用classforname

Class.forName("ExampleClass").newInstance()
我还需要这个事务是安全的,这样只有具有有效密钥的产品才能将类加载到RAM中


这取决于您使用的是什么技术,也许最好创建另一个特定于此的问题,但在一般回答中,只需找到或编写一个身份验证系统,您就可以了,例如,如果您使用的是spring,您可以使用spring安全性,身份验证的标准是

,我理解您的要求:应用程序在客户机上运行,您希望类加载器远程加载类,并且仅当用户获得授权时才加载?向Java应用程序添加有效的许可证系统是出了名的困难。在您建议的系统中,我可以简单地监听web流量以获取JAR,然后编写一个小应用程序,模拟类加载客户端,但跳过所有服务器验证。下次将其作为web应用程序编写-更容易控制许可。不幸的是,这是从另一个平台扩展的,因此,我无法更改语言。只是为了理解您的要求:应用程序在客户端机器上运行,您希望类加载器远程加载类,并且只有在用户获得授权时才加载?向Java应用程序添加有效的许可证系统是出了名的困难。在您建议的系统中,我可以简单地监听web流量以获取JAR,然后编写一个小应用程序,模拟类加载客户端,但跳过所有服务器验证。下次将其作为web应用程序编写-更容易控制许可。不幸的是,这是从另一个平台扩展的,因此我无法更改语言。身份验证将通过LDAP(Active directory)完成。所以我猜URL加载器使用的文件类支持完整的URL。File remoteJar=new File(“);?我刚刚用本地文件尝试了这个方法,例如
URL=new File(“/home/elvis/Downloads/jar/log4j-1.2.14.jar”).toURI().toURL();
无论如何,因为它是一个URL类,ln我猜是的,无论如何,如果它不起作用,你可以使用一些代码将它下载到一个临时文件夹,然后加载到ClassLoader中。验证将通过LDAP(Active directory)完成。所以我猜URL加载程序使用的文件类支持完整的URL。File remoteJar=new File(“)?我只是用本地文件尝试了一下,比如
URL=new文件(“/home/elvis/Downloads/jar/log4j-1.2.14.jar”).toURI().tour()无论如何,因为它是一个URL类ln我想是的,无论如何,如果它不工作,你可以使用一些代码下载到一个临时文件夹,然后加载到类加载器