3

Tomcatで実行されているgrailsアプリケーションがあり、mod_proxyを使用してhttpサーバーに接続しています。私の目標は、ログインプロセスを保護することです。

https を強制するための私の VirtualHost 構成は次のとおりです。

ProxyPass /myapp/ http://127.0.0.1:8080/myapp
ProxyPassReverse /myapp/ http://127.0.0.1:8080/myapp

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(myapp/login) https://%{HTTP_HOST}:443/$1 [NC,R=301,L]

認証が必要なhttps://mydomain.com/myapp/admにアクセスすると、セキュリティなしでhttp://mydomain.com/myapp/login/auth;jsessionid=yyyyyyにリダイレクトされるため、書き換えが機能しません(手動で http を https に置き換えると、正常に動作します)。

ヒントはありますか?

4

3 に答える 3

1

httpとhttpsの両方を許可する設定では、tomcatのconf/server.xmlファイルに個別のConnector要素を追加します。

<Connector port="8081" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443"  URIEncoding="UTF-8"
           scheme="https" secure="true" proxyName="somehostname.domain" proxyPort="443" />

httpsのみが許可されている場合は、scheme、secure、proxyName、およびproxyPort属性を既存のConnector要素に追加できます。

apache configで、追加の属性を使用して、コネクターへの*:443仮想ホストプロキシを作成します。プレーンhttp*:80は、元のコネクタに接続できます。

詳細については、http: //tomcat.apache.org/tomcat-7.0-doc/config/http.html#Proxy_Support http://tomcat.apache.org/tomcat-7.0-doc/proxy-howto.html

于 2013-01-31T18:27:56.167 に答える
1

認証が必要な https://mydomain.com/myapp/admにアクセスすると、 http://mydomain.com/myapp/login/auth;jsessionid=yyyyyyにリダイレクトされます。

Spring セキュリティが /login/auth へのリダイレクトを実行するようです。Burt Beck はここで、Spring セキュリティには grails.serverURL は必要ないと述べています。request.getServerName() を使用する必要があります。基本的に、createLink メソッドには grails.serverURL が使用されています。

私は提案します:

  1. 本番環境の grails.serverURL で https を使用してみてください
  2. アプリのコンテキストを設定します (項目 1) が役に立たなかった場合):

    grails.app.context="/myapp"

アップデート

問題がどこにあるかを特定し、よりよく理解するためだけに:

(開発環境で) grails を https で実行し、すべてが正常に動作するかどうかを確認してください。

grails run-app -https
于 2013-01-28T17:46:37.387 に答える
1

あなたはタイプミスをしました、あなたはこれを望んでいました:

RewriteRule ^/myapp/login https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

現在の RewriteRule が一致することはありません

私もこれを持っていることに意味があるとは思わない

RewriteCond %{THE_REQUEST} ^[A-Z]+\s/myapp/login [NC]

これは、RewriteRule で必要な ^/myapp/login のみを複製します。したがって、機能している間は何の役にも立ちません。

于 2013-01-31T09:57:38.357 に答える