4

ユーザーが正常に認証されると、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 サーバーを変更することはできますか?

4

3 に答える 3

2

本当にロードバランサーを使用しているのか、メソッド getLoadBalancerRequestURI の 1 つを呼び出しただけなのかはわかりませんが、サーバーが 1 つしかない場合は、次のようにします。

response.sendRedirect("./Home.jsp");

完全な URL を指定する必要はありません。

ただし、現在行っているように完全な URL を作成する必要がある場合は、次のようなものを使用して https:// かどうかを確認できます。

String protocol = "https";
if( request.getRequestURL().toString().toLowerCase().startsWith("http://" ) )
{
    protocol = "http";
}

次に、適切なプロトコルで URL を作成してください。

于 2013-09-19T20:10:45.463 に答える
0

お客様が直面していた問題 (HTTP-HTTPS リダイレクト時) を再現できました。

Apache (HTTPD サーバー) から Tomcat (Web コンテナー) への通信は、通常、次のコネクタのいずれかを使用して行われます (他の方法の場合もあります)。

  • mod_jk
  • mod_proxy_ajp
  • mod_proxy_http
  • mod_rewrite

mod_rewrite を使用した場合にのみ問題を再現できます。mod_jk または mod_proxy_ajp または mod_proxy_http のいずれかのアプローチを使用すると、リダイレクトは正常に機能します。しかし、mod_rewrite を使用すると、リダイレクトが発生したときに HTTPS-HTTP 変換を観察できます。

于 2014-03-18T10:24:51.877 に答える