ユーザーが正常に認証されると、response.sendRedirect() を使用してユーザーをホームページにリダイレクトします。これは、「ログイン リダイレクトの脆弱性」を回避するためです。
ただし、上記の変更により、私の顧客の 1 人が、HTTPS 要求が HTTP に変換されるという問題に直面しています (URL に IP アドレスが含まれています)。同じ理由はここで説明されています
http://geekexplains.blogspot.in/2008/06/https-becoming-http-in-case-of.html
さて、修正を確認できるように、問題を再現する (または環境をセットアップする) にはどうすればよいでしょうか。Tomcat の前に Apache サーバーをセットアップすることで再現できると思っていましたが、上記の問題を再現できません。
Apache httpd.conf には以下のエントリがあります
ProxyPass /myconsole ajp://localhost:8009/myconsole
ProxyPassReverse /myconsole ajp://localhost:8009/myconsole
次のようにアプリケーションにアクセスしました。
http://myapacheserver/myconsole/Login.jsp
ログインに成功した後、リダイレクトされます
http://myapacheserver/myconsole/Home.jsp
IPアドレスにリダイレクトされることを期待しています。のようなものhttp://10.32.24.14:8080/myconsole/Home.jsp
。
顧客の環境では、彼はアプリケーション サーバー (tomcat) の IP アドレスにリダイレクトされています。
どんなポインタでも役に立ちます。
ありがとう
注: 興味のある方のために、構成ファイルから URI の最初の部分を取得して完全な URL を作成しています。
//Get the LB URI part. Eg: https://dev.loadbalancer.com/
String loadBalancerURI = getConfig().getLoadBalancerRequestURI();
String redirectURL = request.getContextPath() + "/Home.jsp";
//Prepend the LoadBalancer URI with redirect URI
if(loadBalancerURI != null)
{
redirectURL = loadBalancerURI + "/" + redirectURL;
}
//redirect to home page
response.sendRedirect(redirectURL);
return;
編集:セットアップの詳細。顧客には、SSL トラフィックが停止する F5 ロード バランサがあり、次に、Tomcat サーバーのプールにプロキシする Apache リバース プロキシ サーバーがあります。問題は、Tomcat サーバー用のリダイレクト URL をリダイレクトする場合です。期待しているのは、リダイレクト URL にロード バランサーの URL があることです。
Tomcat が送信する応答の HTTP ヘッダーの URL を書き換える Apache サーバーを変更することはできますか?