Ubuntu に Railo と Apache をインストールし、基本認証ユーザー名を Railo に渡すにはどうすればよいですか?

Ubuntu に Railo と Apache をインストールし、基本認証ユーザー名を Railo に渡すにはどうすればよいですか?

Adobe ColdFusion から Railo に移行しようとしています。移行しようとしているアプリケーションは、Web サーバーによる基本認証のチェックに依存していますが、その後、変数を使用して認証されたユーザーのユーザー名を知る必要があります#REMOTE_USER#

cgi スコープのダンプを試みましたが、変数が設定されていないようです。これを実行できるように 1 週​​間ほど取り組んできましたが、行き詰まっています。

答え1

それで、ようやく解決しました。前述のとおり、これを理解するには少なくとも 1 週間かかりました。そこで、このために新しいマシンをセットアップする方法に関するメモを共有します。そうすれば、他の誰も私と同じように、これを理解するのに多くの時間を費やす必要がなくなります。重要なのは、HTTP ではなく AJP プロトコルを使用して Railo にプロキシし、認証を行う必要がないことを Tomcat に伝えることです (これにより、変数がそのまま通過します)。

始めましょう:

apt-get install apache2 mysql-server apache2-utils
a2enmod proxy_ajp
service apache2 restart

Railo をインストールします。

次のページに記載されている標準インストーラー64ビットバージョンをダウンロードしてください。http://www.getrailo.org/index.cfm/download/

実行可能にする:

chmod +x <file_you_just_downloaded>

それを実行します:

./<file_you_just_downloaded>

すべてデフォルトを選択します。

さて、次のように設定ファイルを編集します。

=== modified file '/etc/apache2/apache2.conf'
--- /etc/apache2/apache2.conf 2014-10-10 00:22:11 +0000
+++ /etc/apache2/apache2.conf 2014-10-10 00:27:48 +0000
@@ -223,18 +223,24 @@
<IfModule mod_proxy.c>
<Proxy *>
Allow from 127.0.0.1
+
+ AuthType Basic
+ AuthName "Employee Login"
+ AuthBasicProvider file
+ AuthUserFile /etc/apache2/.htpasswd
+ Require valid-user
</Proxy>
ProxyPreserveHost On
- ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ http://127.0.0.1:8888/$1$2
- ProxyPassMatch ^/(.+\.cfchart)(/.*)?$ http://127.0.0.1:8888/$1$2
- ProxyPassMatch ^/(.+\.cfml)(/.*)?$ http://127.0.0.1:8888/$1$2
+ ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://127.0.0.1:8009/$1$2
+ ProxyPassMatch ^/(.+\.cfchart)(/.*)?$ ajp://127.0.0.1:8009/$1$2
+ ProxyPassMatch ^/(.+\.cfml)(/.*)?$ ajp://127.0.0.1:8009/$1$2
# optional mappings
#ProxyPassMatch ^/flex2gateway/(.*)$ http://127.0.0.1:8888/flex2gateway/$1
#ProxyPassMatch ^/messagebroker/(.*)$ http://127.0.0.1:8888/messagebroker/$1
#ProxyPassMatch ^/flashservices/gateway(.*)$ http://127.0.0.1:8888/flashservices/gateway$1
#ProxyPassMatch ^/openamf/gateway/(.*)$ http://127.0.0.1:8888/openamf/gateway/$1
#ProxyPassMatch ^/rest/(.*)$ http://127.0.0.1:8888/rest/$1
- ProxyPassReverse / http://127.0.0.1:8888/
+ ProxyPassReverse / ajp://127.0.0.1:8009/
</IfModule>



=== modified file '/etc/apache2/sites-available/000-default.conf'
--- /etc/apache2/sites-available/000-default.conf 2014-10-10 00:12:20 +0000
+++ /etc/apache2/sites-available/000-default.conf 2014-10-10 00:31:59 +0000
@@ -26,6 +26,13 @@
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
+ <Directory /var/www/html>
+ AuthType Basic
+ AuthName "Employee Login"
+ AuthBasicProvider file
+ AuthUserFile /etc/apache2/.htpasswd
+ Require valid-user
+ </Directory>
</VirtualHost>

htpasswd プログラムを使用して、.htpasswdファイルを作成します。/etc/apache2一部のサイトを認証し、一部のサイトを認証しない場合は、仮想ホスト定義内にプロキシ セクションを配置し、仮想ホストごとに必要に応じて調整できます。

編集/opt/railo/tomcat/config/server.xml

=== modified file '/opt/railo/tomcat/config/server.xml'
--- /opt/railo/tomcat/config/server.xml 2014-10-10 00:34:48 +0000
+++ /opt/railo/tomcat/config/server.xml 2014-10-10 00:36:33 +0000
@@ -89,7 +89,7 @@
-->

<!-- Define an AJP 1.3 Connector on port 8009 -->
- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
+ <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false" />
+ <Connector port="8010" protocol="AJP/1.3" tomcatAuthentication="false" secure="true" scheme="https"/>

<!-- An Engine represents the entry point (within Catalina) that processes -->

Railo/Tomcat を再起動します。

/opt/railo/railo_ctl restart

これで、Railo は cgi.remote_user に基本認証ユーザー名を配置するはずです。localconfig/application.cfm の #REMOTE_USER# にそれをコピーする何かを配置する必要があるかもしれないと思いました。しかし、それはすでに同じことのようです。ポート 8010 の 2 番目の AJP コネクタは、Apache の SSL 対応仮想ホストからプロキシするためのものです。したがって、SSL 対応仮想ホストがある場合は、ポート 8009 ではなく 8010 にプロキシします。こうすることで、Railo は、実行中の ColdFusion に SSL を使用していることを知らせる変数を設定します。

関連情報