2012-07-04 24 views
1

我有在Internet上运行的应用程序,它也包含一些管理模块。我不想让用户在Internet上访问我的管理模块。我希望来自Intranet的请求可以访问管理模块。有没有什么办法可以控制这个,而不需要开发一个提供管理组件的新应用程序验证请求源是否来自Internet或Intranet

+0

你可能想看看:http://stackoverflow.com/questions/9092376/identify-if-request-is-coming-from-local-network-intranet – Samba

+0

@Samba - 有可能很好是一个weblogic特定的解决方案。但无论哪种方式,C#/ ASP.NET解决方案都无济于事。 –

回答

1

如果您正在使用servlet,则可以添加一个筛选器并分析客户端IP地址(请参阅this question)。
请注意,无法保证您会以任何方式确定正确的地址。
更好的方法是将此方法与某种认证(用户/密码,客户端证书等)结合使用。

如果可能,单独的应用程序也会更好。通过这种方式,您可以简化部署过程(应用程序运行在不同的端口等),并使其更容易扩展,因为您的管理和常规应用程序负载,安全性和可用性等极有可能具有不同的要求。

0

我不知道这是否会在你的情况下工作,但如果管理模块 在特定端口接受连接,你可以尝试关闭这个端口 你的路由器/网关(或任何用于连接内部互联网设置为 ),因此不允许外部任何人访问该模块。

0

从便携式Java角度来完成此任务的最简单方法是创建一个筛选器,检查IP地址和请求的URL。如果url是管理模块的一部分,并且IP是内部的,那么您继续链接。否则,你重定向或中止。

也就是说,Weblogic可能还有其他技术来完成这个任务。但是,看到您正在Weblogic服务器上运行此操作,我将假定这是一个企业级应用程序。在这种情况下,您可能需要考虑将其作为一个单独的模块出于安全目的和负载均衡。随着越来越多的用户访问您的应用程序,您需要有更多的服务器来处理负载。但是,您不可能需要相同的管理模块容量。因此,将管理模块作为自己的应用程序托管将允许您将其托管在一个内部应用程序服务器上,而应用程序本身则分布在较大的服务器场中。

最后,请记住,欺骗IP地址是相当容易的,所以除非您有其他形式的身份验证(例如:username/pwd,SSL证书交换等),否则您会将应用程序打开以显示某些重要信息安全漏洞。

只是在做出架构决策时需要考虑的事情。