【问题标题】:Accepting request from specific ip in Spring Boot在 Spring Boot 中接受来自特定 ip 的请求
【发布时间】:2020-06-04 10:23:05
【问题描述】:

我参考了本教程来限制 jboss 和 Spring Boot 应用程序中的某些 ip。 http://www.mastertheboss.com/jboss-web/jbosswebserver/how-to-restrict-access-to-jboss-web-application-by-ip-or-host

但是教程并不完整。我应该把这些代码放在哪里?有没有其他方法可以做到这一点?

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

【问题讨论】:

    标签: java spring spring-boot server jboss


    【解决方案1】:

    IMO 教程中提到的 Valve 是自定义嵌入到 Jboss 应用程序中的 tomcat 的方法。请注意,本教程真的很老了——从 2014 年开始,JBoss 可能从那时起发生了变化。

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

    现在,还有其他方法:

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

    2. 在应用程序中使用过滤器。您可以创建一个 Web 过滤器并将其注册到 Spring Boot 应用程序中,无论它是带有嵌入式服务器的 Jar 还是您计划在 JBoss 上部署的 WAR。这可能非常灵活,但另一方面它包含一些 Java 编码,并且会消耗应用程序的一些资源。如果您的应用程序中没有 Spring Security 并且您不想引入,则可以使用此方法,否则请阅读 (3)。

    3. 类似于 2 的释义,但与 spring security 一起使用,内置过滤设施:here is how you can do that。请注意,除了用于实现的实际 Java 代码外,3 和 2 非常相似。

    【讨论】:

      【解决方案2】:

      我会通过以下方式解决这个问题:

      1. 如果接受连接的 IP 可能发生变化,我会配置像 nginx 这样的反向代理。这意味着如果 IP 地址发生变化,您不必重新部署或重新启动应用程序。有关如何配置nginx的详细信息,请参阅本指南:https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-tcp/

      2. 否则我会参考这篇文章:https://access.redhat.com/solutions/18412WEB-INF/jboss-web.xml 中描述以下配置:

         <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>
      

      【讨论】:

        【解决方案3】:

        对我来说,这个问题应该在基础设施级别而不是在应用程序容器中处理。我建议研究 AWS 安全组或其他云提供商的等效概念。

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

        【讨论】:

          猜你喜欢
          • 2012-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-09
          • 1970-01-01
          • 1970-01-01
          • 2020-07-18
          • 1970-01-01
          相关资源
          最近更新 更多