web-dev-qa-db-ja.com

リバースプロキシとJavaアプリケーションサーバーのセキュリティ

リバースプロキシ(Apache HTTP 2.2)で認証(HTTP Basic)を処理し、それでもJavaアプリケーションサーバー(GlassFish3.1またはJBoss7.0.2)のコンテナー管理セキュリティを使用することは可能ですか?承認のために?

GlassFishは、フォームベース認証とカスタムGlassFish認証モジュールを使用して、宣言型とプログラム型の両方のコンテナセキュリティを使用して、コンテナ管理のセキュリティ(認証と承認の両方)を問題なく実行できます。 mod_proxy_ajpを使用したApacheHTTPWebサーバーのリバースプロキシを介してこれを機能させることもできます。今、私は、コンテナ管理のセキュリティ認証部分を維持しながら、認証部分をApacheにオフロードする方法を見つけようとしています。たぶん、これを容易にするJavaアプリケーションサーバーにシングルサインオンインターフェイスがあります(これはSSOに似ているため、Apacheはその背後にあるすべての認証を必要とします)?

1
Ryan

ユーザーデータは、CGIや環境変数などで利用できます。何らかの方法でそれを渡す必要があります-ゲートウェイcgiを介して、またはおそらくそれらをヘッダーに挿入することによって。

以下は、ヘッダーの挿入によってどのように可能になるかの例です可能性があります。自分で試したことのないことを提案してしまったことをお詫びしますが、それは理にかなっているようですよね?

RequestHeader unset REMOTE-USER
RequestHeader add REMOTE-USER %{REMOTE-USER}e

ただし、その環境変数がそうなると、プロキシしている場合は常にnullになると思います。その場合は、mod_rewriteを使用して先読み変数を使用できる可能性があります。 (LA-Uの例と説明については、mod_rewriteのドキュメントを参照してください。)

RequestHeader unset REMOTE-USER
RewriteCond %{LA-U:REMOTE_USER} (.*)
RewriteRule .* - [E=MY_REMOTE_USER:%1]
RequestHeader add REMOTE-USER %{MY_REMOTE_USER}e

これには、mod_rewriteとmod_headersが必要です。

1
rjewell