2013-04-26 85 views
0

我们的应用程序依靠AuthorizationModule来过滤远程上下文中的某些IP地址。这个模块在JBoss 5.1.0.GAwith a known workaround)上完美工作,但在EAP-6.1.0.Alpha上失败,因为Thread名称模式发生了明显变化。在JBoss 7的AuthorizationModule中获取远程客户端IP

问:是否可以在以下上下文中获取客户端IP地址?

import org.jboss.security.authorization.modules.AbstractAuthorizationModule; 

public class MyAuthorizationModule extends AbstractAuthorizationModule { 
    @Override 
    public int authorize(Resource resource) { 
     //Caller is a standalone Java client, that connects to JBoss 7.x using EJB Remoting 
     String callerIP = ...; 
    } 
} 

我试过到目前为止:

  1. 调用java.rmi.server.RemoteServer.getClientHost()。这导致ServerNotActiveException

  2. 解析JBossThread名称(relateddiscussions)。

+0

为什么不用JBoss配置过滤IP地址,使用org.apache.catalina.valves.RemoteAddrValve阀? – Thomas 2013-05-04 19:59:45

+0

@Thomas:我认为这只会在[web]模块中有用,而不适用于过滤_remoting_连接? – 2013-06-03 17:05:45

回答

0

我解决了我的问题,从JBoss Community的一些帮助。然而,这不是一个优雅的解决方案,因为我最终修补了应用程序服务器(EJB3模块)的内部。查看社区帖子了解更多详情。