Java 在Spring引导中接受来自特定ip的请求

Java 在Spring引导中接受来自特定ip的请求,java,spring,spring-boot,server,jboss,Java,Spring,Spring Boot,Server,Jboss,我参考本教程是为了限制jboss和Spring引导应用程序中的某些ip。 但是教程还没有完成。我应该把这些代码放在哪里?还有其他方法吗 如果有人知道任何其他方法,请在此提及。提前感谢。在我看来,教程中提到的阀门是定制嵌入Jboss应用程序中的tomcat的方法。请注意,本教程非常古老——从2014年开始,JBoss可能已经改变了 我记得JBoss确实在里面包含了Tomcat来处理web请求,所以可能有某种Tomcat的server.xml 现在,还有其他方法: 将应用程序置于会限制访问的代理之

我参考本教程是为了限制jboss和Spring引导应用程序中的某些ip。

但是教程还没有完成。我应该把这些代码放在哪里?还有其他方法吗


如果有人知道任何其他方法,请在此提及。提前感谢。

在我看来,教程中提到的阀门是定制嵌入Jboss应用程序中的tomcat的方法。请注意,本教程非常古老——从2014年开始,JBoss可能已经改变了

我记得JBoss确实在里面包含了Tomcat来处理web请求,所以可能有某种Tomcat的
server.xml

现在,还有其他方法:

  • 将应用程序置于会限制访问的代理之后。如果您的环境支持,这可能是最好的方法

  • 在应用程序内部使用过滤器。您可以创建一个web过滤器,并在SpringBoot应用程序中注册它,而不管您计划在JBoss上部署的是带有嵌入式服务器的Jar还是WAR。这可能非常灵活,但另一方面,它包含一些java编码,并将消耗应用程序的一些资源。如果应用程序中没有spring安全性,并且不想引入spring安全性,那么可以使用这种方法,否则请阅读(3)

  • 类似于对2的解释,但与spring security一起使用,后者内置了过滤功能:。注意,除了用于实现的实际Java代码外,3和2非常相似


  • 我将用以下方式处理这个问题:

  • 如果接受连接的IP可能会发生变化,我会像nginx一样配置反向代理。这意味着,如果IP地址发生更改,您不必重新部署或重新启动应用程序。有关如何配置nginx的详细信息,请参阅本指南:

  • 否则,我将参考本文:在
    WEB-INF/jboss WEB.xml
    中描述以下配置:

  • 
    org.apache.catalina.valves.RemoteAddrValve
    允许
    127.0.0.1,127.0.0.2
    
    对我来说,这个问题应该在基础架构级别处理,而不是在应用程序容器中处理。我建议研究其他云提供商的AWS安全组或同等概念

    如果您是在私有云/裸机中运行它,您应该进行调查,将其限制在基础设施提供的传输层上。应该可以配置防火墙规则

       <valve>
          <class-name>org.apache.catalina.valves.RemoteAddrValve</class-name>
          <param>
              <param-name>allow</param-name>
              <param-value>127.0.0.1,127.0.0.2</param-value>
          </param>
       </valve>
    </jboss-web>