• ベストアンサー

外部の認証機能を利用したWebサービスについて

学校関係者です。 現在、学校内のAサーバ(Windows2000・Apache)でwebデータベースを運用しております。 このデータベースでは、検索結果にコンテンツへのリンクが表示されますが、コンテンツへのアクセスは、.htaccessにより校内のIPアドレスのみ許可しております。 今、このコンテンツの利用を特定の学外者に広げることを計画しております。 特定の学外者というのは、外部のBサーバで運用しているSNSサービス(学校が運用)の登録者です。Bサーバにアクセスした外部の利用者が、SNSサービスのID認証を受ければ、Aサーバで提供されているコンテンツを利用できるしくみを実現するための最も簡便な方法についてご教示ください。無知の発想で恐縮ですが、Aサーバへのアクセス要求が、Bサーバを通過することで、BサーバのIPとして認識されることが可能なら、.htaccessにBサーバのIPを追加するだけで、実現するかと思うのですが、そんなことはできないのでしょうか。 素人の質問で申し訳ございませんが、急ぎませんのでなるべくサルでもわかるレベルでご教示よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#257472
noname#257472
回答No.3

サルでもわかるレベル…とのことなので、横槍ですが補足します。 ANo.2さんは「フォワードプロキシ」とおっしゃっていますが「リバースプロキシ」を使うのが正解です。「リバースプロキシ」の流れとしては、 1.花子さんがBサーバにログインする 2.花子さんがBサーバのhttp://bserver.com/aserver/test.htmlにアクセスする 3.BサーバがAサーバのhttp://aserver.com/test.htmlにアクセスする 4.Bサーバはhttp://aserver.com/test.htmlの内容をhttp://bserver.com/aserver/test.htmlとして花子さんに送る といった感じで、質問者さんの考えていた内容そのままではないかと思います。Aサーバの.htaccessと、Bサーバの設定ファイルの簡単な修正で対応できると思います。 ANo.1さんの「シングルサインオン」は、Bサーバで認証した人をAサーバで認証するための本格的な仕組みです。細かい部分は違うかもしれませんが、おおざっぱな流れとしては、 1.花子さんがBサーバにログインする 2.続いて花子さんがAサーバに直接アクセスする 3.するとAサーバはBサーバに花子さんのことを問い合わせる 4.Bサーバが「花子さんは登録者です」とAサーバに回答する 5.Aサーバは花子さんのアクセスを許可する こんな感じです。AサーバBサーバともに修正が大きくなりますので、今回の目的には向かないと思います。

kazukichikun
質問者

補足

サルでもわかるご説明感謝致します。 内→外への代理であるプロキシとは逆(リバース)ということで、リバースプロキシなのですね。 恐縮ですが、あと少しだけ質問させてください。 「リバースプロキシ」の2→3への流れは、例えば、http://bserver.com/aserver/test.htmlのtest.html上に表示されたhttp://aserver.com/test.htmlへのリンクを花子さんがクリックするというようなイメージでしょうか。 あるいは、何らかの設定を元に、http://bserver.com/aserver/test.htmlからhttp://aserver.com/test.htmlへのURLの変換が行われるということでしょうか。 その場合、このアクセス要求は、(リバースプロキシの設定をしていれば)クライアント(花子さん)のIPではなく、BサーバのIPとして送られるというような理解でよろしいのでしょうか。 的外れな質問をしていたら、すいません。

その他の回答 (3)

noname#257472
noname#257472
回答No.4

ANo.3の例ですと、Bサーバに「http://bserver.com/aserver/…という要求が来たら、Bサーバがhttp://aserver.com/…を取得して、その内容を丸投げする」という設定をします。AサーバにアクセスするのはBサーバなので、Aサーバから見えるのはBサーバのIPアドレスになりますね。 アドレス(URL)の変換は通常行われませんが、Aサーバのコンテンツが相対URLで作成されていれば、問題なく動作すると思います。<a href="link.html">とか<img src="gazou.jpg">のような書き方ならOKです。<a href="http://aserver.com/dame.html">みたいな書き方だとNGです。 たとえば、http://aserver.com/test.htmlの中に<img src="gazou.jpg">というタグがあると、画像のURLはhttp://aserver.com/gazou.jpgですよね? 花子さんがhttp://bserver.com/aserver/test.htmlを要求すると、Bサーバがhttp://aserver.com/test.htmlを取ってきて、それをhttp://bserver.com/aserver/test.htmlとして花子さんに送ります。その中には<img src="gazou.jpg">というタグがありますが、ページのURLがhttp://bserver.com/aserver/test.htmlなので、画像のURLはhttp://bserver.com/aserver/gazou.jpgになります。 そして花子さんがhttp://bserver.com/aserver/gazou.jpgを要求すると、Bサーバがhttp://aserver.com/gazou.jpgを取ってきて、それをhttp://bserver.com/aserver/gazou.jpgとして花子さんに送ります。…無事に画像が表示されました。リンクも同様です。 保守性を考えて、通常は相対URLでコンテンツを作成していると思いますが、サイトのトップページへのリンクなど、絶対URLが使われやすい部分もありますので、AサイトのHTMLをチェックした上、一般公開前のテストでしっかり確認してください。まあ、多少間違っていても、Aサーバの.htaccessで弾かれるので、「見れない」だけで済みますけどね。

kazukichikun
質問者

お礼

お返事が遅くなり申し訳ありません。 この度は、初級者向けのわかりやすいご説明ありがとうございました。 まだ、わかったつもりの状態ですが、大変参考になりました。 「Bサーバに「http://bserver.com/aserver/…という要求が来たら、Bサーバがhttp://aserver.com/…を取得して、その内容を丸投げする」という設定」のところを、これから勉強したいと思います。

  • k17s
  • ベストアンサー率47% (9/19)
回答No.2

http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html これでフォワードプロキシにしてみてはどうでしょう? クライアントの要求をApacheが代わりにリクエストして結果を返してくれるようになる・・・はず。 使ったことないんであんまわかんないんですけど・・・おそらくこういったことがしたいのでは?と思って書いてみました。

kazukichikun
質問者

お礼

ご回答ありがとうございます。 ANo.3さんに指摘いただいたリバースプロキシと併せて、リサーチしてみようと思います。

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.1

シングルサインオンで実現出来そうな内容ですね。 cookieで十分と言えば十分ですが。。。。 作りが甘いと不正アクセスされる可能性があるので気をつけましょう 詳しく説明。。。。は 非常に長くなるので、ある程度ご自身で調べた上で 不明であれば、再度質問して下さい。

kazukichikun
質問者

お礼

迅速なご回答ありがとうございます。 ANo.3さんの回答に従い、ひとまず最も簡便そうな「リバースプロキシ」についてリサーチしてみたいと思います。

関連するQ&A