我在 Internet 上运行的应用程序也包含一些管理模块。我不想让用户在 Internet 上访问我的管理模块。我希望来自 Intranet 的请求可以访问管理模块。有没有办法在不开发服务管理组件的新应用程序的情况下控制它?
4 回答
如果您使用的是 servlet,则可以添加过滤器并分析客户端 IP 地址(请参阅此问题)。
请注意,不能保证您会以任何方式确定正确的地址。
更好的方法是将这种方法与某种身份验证(用户/密码、客户端证书等)结合起来。
如果可能的话,单独的应用程序也会更好。通过这种方式,您可以简化部署过程(应用程序在不同的端口中运行等)并使其更易于扩展,因为您的管理和常规应用程序负载、安全性、可用性等很可能具有不同的要求。
我不确定这是否适用于您的情况,但如果管理模块接受特定端口的连接,您可以尝试关闭路由器/网关上的此端口(或任何用于将 Intranet 与 Internet 连接的端口)设置,因此不允许外部任何人访问该模块。
从可移植 Java 的角度来看,最简单的方法是创建一个过滤器来检查 IP 地址和请求的 URL。如果 url 是管理模块的一部分并且 IP 是内部的,那么你继续这个链。否则,您将重定向或中止。
话虽如此,Weblogic 也可能有其他技术来实现这一点。但是看到您在 Weblogic 服务器上运行它,我将假设这是一个企业级应用程序。在这种情况下,出于安全目的和负载平衡,您可能需要考虑将其构建为单独的模块。随着越来越多的用户访问您的应用程序,您将需要更多的服务器来处理负载。但是,管理模块可能不需要相同的容量。因此,将管理模块作为自己的应用程序托管将允许您将其托管在一个内部应用程序服务器上,而应用程序本身则分布在更大的场中。
最后,请记住,欺骗 IP 地址相当容易,因此除非您有其他形式的身份验证(例如:用户名/密码、SSL 证书交换等),否则您的应用程序将面临一些重大的安全漏洞。
只是在做出架构决策时需要考虑的事情。
什么是底层网络服务器?如果是 apache,请使用 .htaccess 规则。