人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ユーザーが1つのIDとパスワードで認証を通したあと、直接DBアクセスができない別立てのWEBサーバー(複数のドメイン)を行き来できるサイトを構築しようとしています。
セキュアなサイトとするための一般的なやり方を知りたい、あるいは、うまいやり方を知りたいと考えています。
プログラム開発言語は、PHPかJAVAかで行おうとしていますが、ライブラリー的に利用できるものでも、サンプルや考え方のみでも構いませんので、教えてください。
参考になるWEBページや本でも構いません。
まずは、プログラムを組むというより、概念的な話のレベルでと考えています。

今考えているのは、サイトの規模は50万人程度の会員をかかえる予定です。あまり複雑怪奇なやり方でなく、同じ認証システムを使って、のちのちにサービス追加できる拡張性の高いシステムにしたいと考えています。(「はてな」のように・・・)

よろしくお願いします。

●質問者: gooma
●カテゴリ:コンピュータ インターネット
✍キーワード:うまい はてな アクセス サイト サーバー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●50ポイント

一般的かどうかは分かりませんが、自分ならこうするという方法です。


1.ログイン情報は言語で用意されているセッションは使わない。独自で実装。

Cookie に一意なキーを記録し、DBにも同じキーを記録する。その一致をもって認証済みを確認する。

Cookie のドメインを .hatena.ne.jp のようにホスト名を指定しない形にすると

q.hatena.ne.jp

d.hatena.ne.jp

r.hatena.ne.jp

等のようにサービスごとにドメインが分かれても共通で使える。


2.各ウェブサーバーと別に認証用のサーバーを用意し、認証情報の確認はすべてそちらに投げる事にする。

認証用のサーバーはDBに直接アクセス可能とする。

ウェブサーバー >-< 認証サーバー間の通信は SOAP,XMLRPC 等を使用すると楽。


という感じです。

◎質問者からの返答

なるほど!

よくわかりました。

.hatena.ne.jp とすることで、他のサービスごとにドメインが分かれていても、Cookie 情報はとれるんですね!

知っている方にとっては当たり前かもしれませんが、なかなか知ることができない情報なので助かりました。

2は、こちらでも考えていたのですが、もう少し具体的な実装方法がわかれば、なおありがたいです。

50万人くらいのサービスなので、1でやるにしても、2でやるにしても、負荷分散を考えて、サービス用のDBと認証用のDBは分けた方がいいのかなあと考えているところです。


2 ● b-wind
●50ポイント ベストアンサー

1と2は併用という形で回答しています。

クライアントからの情報送信が1で、サーバー側での検証方法が2いったイメージです。


SOAP の実装には Java であれば AXIS 等を使います。

http://www.h7.dion.ne.jp/~matsu/feature/axis/basic/intro.html

リモートのメソッドを呼べるので、ウェブサーバーが1の方法で受け取ったキーと会員IDを引数にしてメソッド呼び出し、認証サーバーが引数のキーが正しいものかDBと照合し結果を返す。という手順になるかと思います。


認証DBは分ける事もひとつの案ですが、複数のDBをまたいだトランザクションを実行できるDBMSは少ないので、アクセスパターンしだいではレプリケーションを検討した方が良いかもしれません。

一般にDBはスケールアウトしにくい部分なので、単により性能のいいサーバーを用意するのもありだと思います。

◎質問者からの返答

なるほど!正しく理解できていなかったようです。ようやく意図していたところがわかりました!(というような気がしています。)実践してみて、本当に理解ということになろうかと思います。

ありがとうございました。

※非常に夜遅くに回答、助かりました。大変参考になりました。プロフィールも見させていただきましたが、経験をヒシヒシと感じることができました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ