2012-05-16 37 views
0

我有與本地IP像LOCALIP但用戶一個網絡接口的服務器上運行的Apache Tomcat服務器希望看到一個公網IP像PUBLICIP服務器,他們不應該看到的服務器本地IP。所有這些配置都在硬件防火牆上完成。的Apache Tomcat的sendRedirect

用戶使用地址PUBLICIP /炫魅用於訪問應用程序和應用檢查用戶是否被認證或沒有。如果用戶未通過身份驗證,則用戶將重定向到PUBLICIP /登錄。 當用戶重定向到/登錄頁面時,他將看到Page Not Found(404),但是如果他在瀏覽器中手動輸入PUBLICIP /登錄地址,他可以看到登錄頁面。

我們使用HttpServletResponse.sendRedirect用於將用戶重定向到登錄頁面。

我認爲這是一個重定向問題,因爲任何ping請求PUBLICIP都會被防火牆出於安全考慮被丟棄。該servlet嘗試重定向到公共IP地址。

+0

這裏有什麼安全問題?您也可以粘貼您的重定向和身份驗證代碼 – UVM

+0

我們使用cas進行身份驗證,並且我們覆蓋CasProcessingFilterEntryPoint類的開始方法。在使用HttpServletResponse.sendRedirect(VALIDIP/login)的commnece方法結束時。我們的服務器是一個NAT,安全問題是我們不希望用戶直接用VALIDIP看到服務器。 –

+0

你能看到實際發送的重定向頭部是什麼嗎? 您可以使用telnet客戶端進行測試,例如 telnet PUBLICIP 80 然後鍵入: GET/HTTP/1.0 回覆是什麼? –

回答

0

通常,使用Connector上的proxyPort和proxyName向Tomcat通知反向代理(例如防火牆/負載平衡器)正在使用的公共IP/DNS名稱和端口,以確保鏈接(例如重定向)由Tomcat生成使用公共IP /名稱和端口。