
当初SOに投稿しかし、これはここに書くべきだと思います。提案、コメント、そして理想的には解決策も歓迎します! (ちなみに、SO スレッドが間違った場所であれば削除します)
外部から内部サーバーへの制限付きアクセスを提供するためにリバース プロキシを設定する必要があります。主な要件は次のとおりです。
- リダイレクトリクエストhttps://www.example.comにhttp://内部サーバー(終わり)
- シンプルでありながら実績のある認証メカニズムに依存します。(現在動作中)
- URL にいくつかの GET パラメータを追加して、ユーザー ロールを管理します。(ただし、方法は?)
- サーバーは Java アプリケーションをホストしています。まだアクセスできませんし、アプリケーション コードは変更されません。これは問題ではありません。
インストールして設定しましたmod_proxyリダイレクトは正常に動作します。
認証はapache2を使用しています基本認証セキュリティの面ではこれで十分でしょう。
今、私の問題はロール管理です。ユーザー foo に管理者権限が与えられ、ユーザー bar には与えられないようにリクエストを変更する必要があります。 のような 1 つの GET パラメータを設定するだけで済むはずです"&role=admin"
が、リクエストをプロキシするときにこれをどのように行うのかわかりません。
ロールは現在、専用の MySQL データベースに保存されているため、権限を取得するにはリクエストのみが必要で、PHP で簡単に実行できます。問題は、PHP ページを呼び出す場合にプロキシの動作を維持する方法がわからないことです。すべてのリクエストにロール パラメータを追加したいのですが、リクエストの残りの部分は変更しない必要があります。
私の現在のプロキシは、仮想ホスト設定(エイリアス .htaccess)ですべてを実行しますが、どのようなアプローチが機能するかわかりません。VHost で MySQL リクエストを実行できず、php ページにリダイレクトすると -私の知る限りでは- リダイレクトするのでプロキシの概念が「破られる」が、おそらく「その他のリクエスト パラメータ」が失われる。プロキシを使用したことがないので、これは私にはよくわからない。
。mod_authn_dbd が解決策になるでしょうか? 今のところ、これを使用してログインすることはできませんでしたが、とにかく、get パラメータを追加する必要性を解決できるかどうかはわかりません。libapache2-mod-auth-mysql
解決策だったかもしれませんが、この mod は廃止されたようで、試すこともできませんでした
アイデアが尽きてしまいました。
必要なものをどう実装すればよいでしょうか? このような一般的なニーズには、簡単な解決策が存在するはずです。
答え1
思いつくのは、たとえば php/curl で独自のシンプルなプロキシを作成することだけです。Apache は php 対応の Web サーバーとして機能し、php/curl は要求をプロキシし、指定されたユーザー名に従って GET パラメータを変更します。HTTP 認証だけでなく、Cookie 対応認証も作成できます。
nginx、HTTP 認証、nginx lua モジュールを使用して同じことを試すこともできますが、これは基本的に同じもので、lua でプロキシを記述する必要がない点が異なります。lua はユーザーが管理者ロールに値するかどうかのみを決定し、nginx はリクエストをプロキシして GET 引数を変更します。