- PR -

Proxy自作について

投稿者投稿内容
Tasuku
大ベテラン
会議室デビュー日: 2006/09/14
投稿数: 106
お住まい・勤務地: tokyo
投稿日時: 2007-09-14 20:00
引用:

残念ながら、認証サーバはLDAP対応ではないです。
認証サーバとは独自の仕様でHTTPでやり取りする必要がありますので、
CGIの中で認証サーバ上のプログラムを実行(GET /cgi-bin/xxxxx.cgi)
しなければなりません。

> 自作CGIってどのサーバに置こうとしてますか?
> proxy (見せかけのservice.jp) に置く場合、
> mod_proxy の意味がなくなってしまう様な気がしますが。
proxy (見せかけのservice.jp) に置くことを検討しています。

http://service.jp/mail/
⇒認証が必要なので、CGIをキック(mod_proxyでリダイレクト)
 http://proxy/cgi-bin/yyyyy.cgi
 認証が成功したら、本物のservice.jpの/mail/index.htmlを
 とってくるような処理を組み込む予定です。


質問ばかりでなんですが。。

コード:
                                   ユーザ
                                    ↓@
               http://proxy(見せかけservice.jp)/mail/
                                    ↓A
               http://proxy(見せかけservice.jp)/cgi-bin/yyyyy.cgi
              ↓D                                  ↓B ↑C
http://service.jp (本物)/mail/index.html   http://auth(認証サーバ)/cgi-bin/xxxxx.cgi


@をAにリダイレクトするのにmod_proxyを使おうとしてます?
ゆいな
ベテラン
会議室デビュー日: 2006/01/19
投稿数: 89
投稿日時: 2007-09-14 20:45
お世話になります。
ご丁寧にありがとうございます。

認証が必要かそうでないかはURLでチェックしようとしています。
認証が必要なURLは一つのサイトにあまりないと思うので
基本的には、
                 ユーザ
↓@
http://proxy(見せかけservice.jp)/portal/
↓A↑B
http://service.jp (本物)/portal/

のような形で(認証が不要な場合には)
リバースプロキシー(mod_proxy)を使おうとしていますが
認証が必要な場合にも、クライアントにURLが変わった事を見せたくないので
リバースプロキシー(mod_proxy)で飛ばしてしまえばいいと考えていました。
もっとよいやり方がありましたらご教示お願いします。

もう少し、調査や検証をすすめますが、今のやり方だとhttpd.confも
認証が必要なURLと不要なURLをそれぞれ定義する煩雑な書き方しかわかりません。
認証が必要なURLはXXXXXXXで、それ以外は本物へリバースプロキシーするような
書き方ができるとスマートなのですが・・・。

よろしくお願いします。
Tasuku
大ベテラン
会議室デビュー日: 2006/09/14
投稿数: 106
お住まい・勤務地: tokyo
投稿日時: 2007-09-14 21:10
引用:

(認証が不要な場合には)
リバースプロキシー(mod_proxy)を使おうとしていますが
認証が必要な場合にも、クライアントにURLが変わった事を見せたくないので
リバースプロキシー(mod_proxy)で飛ばしてしまえばいいと考えていました。
もっとよいやり方がありましたらご教示お願いします。


なるほど。

どちらかというと、認証機能との連携にmod_proxyを使う。
と思っていたので、妙に根掘り葉掘り質問してました。

前者(認証不要ページ)は全く問題ないと思いますけど、
後者(要認証ページ)の実装って具体的イメージはあるんでしょうか。

要は、未認証なら認証ページに飛ばし、
認証済なら本来のservice.jpに飛ばす、ということですよね?

未認証・認証済のステータスに基づいて、mod_proxyでの
飛ばし先を動的に制御するということですか?

認証済なら、HTTP Location: ヘッダで本来のservice.jpに飛ばす
というのもありですが、リバースプロキシを経由せずに、
本来のservice.jpにアクセスできる経路を設けてしまうと、
認証の意味がないのではないかと。

引用:

もう少し、調査や検証をすすめますが、今のやり方だとhttpd.confも
認証が必要なURLと不要なURLをそれぞれ定義する煩雑な書き方しかわかりません。
認証が必要なURLはXXXXXXXで、それ以外は本物へリバースプロキシーするような
書き方ができるとスマートなのですが・・・。


本来のservice.jpのURLがいくつあるのか分かりませんが、
ProxyPassを書く順序で、ある程度制御できると思いますよ。
デフォルトが非認証なのか、要認証なのかがはっきりしていれば。
ゆいな
ベテラン
会議室デビュー日: 2006/01/19
投稿数: 89
投稿日時: 2007-09-14 21:52
お世話になります。
そして、ご返信ありがとうございます。

> 要は、未認証なら認証ページに飛ばし、
> 認証済なら本来のservice.jpに飛ばす、ということですよね?
>
> 未認証・認証済のステータスに基づいて、mod_proxyでの
> 飛ばし先を動的に制御するということですか?
はい、動的に制御する事を考えています。

未認証・認証済のステータスは、ローカルのCGIで
セッションIDと一意になるように管理する予定です。

認証済ならローカルのCGIからservice.jpにHTTP接続して、
当初アクセスしたURL(これもセッションIDと一意に管理)の
コンテンツを取得して表示する予定です。

プロトタイプでは、Perl + CGI + Socket接続して
単純な静的ページの取得に成功しました。
しかしながら、service.jpがHTTP/1.1だったり、SSLだったり、
Cookieを使っていたり・・だと今のプロトタイプでは、たちまち動かなくなります。

CGIからクライアントを介さずにservice.jpにアクセスするには
この部分はどうしても作りこみが必要なのかなと思っていますがいかがでしょうか。
※開発せずに済むのがベターなのですが・・・。

PerlではLWP等を使って、もう少しコード量を減らせそうですが
いかんせん、こじんまりしたブラウザーを開発するようなものなので
どうやったらスマートにできるか悩みは尽きません。
ご指摘の通り、本来のservice.jpにアクセスできる経路を設けたくはないですものね。


> 本来のservice.jpのURLがいくつあるのか分かりませんが、
> ProxyPassを書く順序で、ある程度制御できると思いますよ。
> デフォルトが非認証なのか、要認証なのかがはっきりしていれば。
ありがとうございます。

こちらももうしばらく調査を進めます。

スキルアップ/キャリアアップ(JOB@IT)