6

これは私のシナリオです:

Apache リバース プロキシ スターマン

そう、

  1. 暗号化された HTTPS 経由のリクエストは、次のように Apache に送信されます。https://server1/MyPerlApp
  2. ユーザーがログインしていない場合、ログイン ページ (server1 内) へのリダイレクトが行われ、Apache は要求を Server2 にプロキシしません。
  3. ユーザーがログインすると - IS 認証されます - Apache はhttps://server1/MyPerlApphttp://server2:5000

質問1: これは可能ですか? (私は Apache について十分に詳しく知りません。これは簡単なことではありません。

ProxyPass /MyPerlApp http://server2:5000/

ProxyPassserver1 でユーザーを認証し、認証された場合のみを設定する必要があるためです。Apacheは非常に柔軟なので、上記の答えはイエスだと思います(ただし、確認と詳細は大歓迎です)-主な具体的な質問は次のとおりです。

  • Plack アプリケーションは、どのユーザーが Apache レベル (つまり、最初のサーバー) で認証されているかをどのように認識しますか?
  • ユーザー情報の一部perlをサーバー上のアプリに配信する簡単な方法は何ですか? たとえば、各クエリにパラメーターをmod_rewrite追加するApache の場合、user=username
  • Apache は、perlアプリが読み取るべき HTTP ヘッダーを設定できますか?
  • 簡単で推奨される方法はありますか?

starman/perl アプリで認証ルーチンを回避する方法を探しています。

  • とにかく、ユーザーは server1 にログインする必要があります (ワークフローの他のタスクのために)
  • 彼がすでにログインしている場合、アプリでの認証は必要ありません (不必要な二重ログインを避ける)
  • ただし、どのユーザーがログインしているかを知る必要があります(server1 の Apache 経由)

すでに同様の質問がありますが、次のとおりです。

4

2 に答える 2

2

Apache の mod_session は、不足しているコンポーネントのようです。プロキシはバックエンドのアプリケーションへのゲートウェイであるため、プロキシ エントリを使用して、HTTP レイヤーで認証を処理し、必要に応じてセッションを Perl スクリプトに戻すことができます。
ユーザー情報を Perl アプリケーションに公開するには、いくつかの方法があります。

mod_session_dbd - セッション情報をデータベースに保存するモジュールです。これは、Perl アプリケーションをホストするバックエンド サーバーと共有できます。

mod_session_cookie - セッション情報をクライアントのブラウザの Cookie に保存するモジュールです。セッション変数は Cookie に保存され、Perl アプリケーションがそれらを取得します。

ただし、Cookie を使用したり、セッション変数を URL に挿入したりすると、セキュリティ上の懸念が生じます。Cookie とヘッダーは変更できます。

mod_proxy はセッション変数を html 形式でアプリケーションに返す必要があります。

http://httpd.apache.org/docs/trunk/mod/mod_session.html

于 2013-07-20T03:25:14.047 に答える