【问题标题】:Best way to tunnel RMI over HTTP通过 HTTP 隧道传输 RMI 的最佳方式
【发布时间】:2013-11-07 06:29:01
【问题描述】:

我正在寻找一种安全的方式来传输 RMI 流量。 在我的应用程序(java Webstart)中,我必须假设唯一打开的端口是端口 80。

我查看了 rmi 的 att socketfactories,但我真的需要代理吗?

我需要在客户端完成所有隧道传输。 我试图通过的唯一防火墙是在客户端。 我无法使用上述端口范围打开 1099。 很高兴看到一些实现。 谢谢!

【问题讨论】:

  • 我建议您询问客户端网络管理员在关闭出站端口时要获得什么安全性,并让他们对端口 1099 进行例外处理,该端口在 1995 年左右在 IANA 为 RMI 保留。
  • 但即使有可能,RMI 之后会使用随机端口吗?如何指定 RMI 只能使用 1099?
  • 你考虑过 Spring 的 HTTPInvoker (docs.spring.io/spring/docs/3.2.x/spring-framework-reference/…)。它非常易于使用,超过 80 端口,并允许您以 RMI 样式针对接口进行编程。
  • 好吧,我已经做到了:我需要在本地为 RMI 创建一个 java 代理,然后使用 TunnelSocketFactory 来使用我的代理。此代理应在客户端的 RMI 应用程序旁边运行。

标签: java sockets rmi java-web-start


【解决方案1】:

1995 年左右 IANA 为 RMI 保留端口 1099。没有理由不对客户端防火墙中的出站访问开放。

通过在构造 (super(port)) 或导出 (exportObject(object, port)) 时提供端口号,可以使 RMI 使用固定端口号。更好的是,如果您通过LocateRegistry.createRegistry() 在服务器 JVM 中创建注册表,则所有随后导出的远程对象都将使用该端口,除非它们指定不同的端口或使用服务器套接字工厂。

但是...RMI 已经包含“开箱即用”的 HTTP 隧道。无需外部解决方案。您必须在服务器端部署JDK随附的RMI-Servlet。

【讨论】:

  • 男孩,我希望这个答案在 3 年前我遇到同样的问题时就在这里。
  • 谢谢!如果我的网络人员想要打开任何端口,这可以解决它。所以它仍然回到了通过 HTTP 隧道传输我的流量的解决方案。如果有人有一个基于java的http代理? :D 我正在尝试使其与创建具有指定代理的套接字的隧道套接字一起使用。这个隧道套接字应该通过我希望的代理通过 http 引导我的所有流量......
  • 嗯?你不需要它。只需让他们打开端口 1099 并按上述方式调整您的服务器代码。
  • 这是一家医院,所以我不能。
  • hmmm... 我正在尝试找到应该随 JDK 一起提供的 RMI-Servlet,但我没有找到。你能给我一个链接到这方面的一些文档吗?
【解决方案2】:

(一) 虽然不是最新的时尚,但使用 Hessian 和 Burlap 公开远程服务似乎是避免跨防火墙工作问题的简单解决方案:http://hessian.caucho.com/doc/

查看服务器端和客户端的示例代码: http://www.javatpoint.com/spring-remoting-by-hessian-example

(b) 或考虑使用 Spring HttpInvokder(在此处查看一些示例代码:http://www.javatpoint.com/spring-remoting-by-http-invoker-example

HttpInvokder 通过 RemoteInvocationFactory、RemoteInvocationExecutor 和 HttpInvokerRequestExecutor 策略提供了更多的自定义选项(例如,向远程调用添加自定义上下文信息(如用户凭据),或者使用 java 的内置对象序列化等),请参阅: http://docs.spring.io/spring-framework/docs/2.0.x/api/org/springframework/remoting/support/RemoteInvocationFactory.html

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2011-06-24
    • 2020-09-26
    • 2012-12-14
    相关资源
    最近更新 更多