web-dev-qa-db-ja.com

あるWebサイトから別のWebサイトにログインセッションを共有していますか?

2つの会社が2つの別々のWebサイトを管理しているとすると、クライアントはユーザーが1つのWebサイトにログインして、リンクをクリックして2番目のWebサイトの特定の部分に移動できることを望んでいます。クライアントは、2番目のWebサイトにアクセスしたときに再度ログインする必要をなくしたいと考えています。

解決策は

  1. 2番目のWebサイトに直接リンクするのではなく、最初のサイト内でリダイレクトページにリンクします。
  2. リダイレクトページはランダムな文字列を生成する、および2番目のWebサイトに通知するランダムな文字列とは何か、それがどのユーザーIDとIPアドレスであるかを示します。
  3. ユーザーはリダイレクトされますは、URLにランダムな文字列が含まれる2番目のWebサイトに移動します。
  4. 2番目のWebサイトはランダム文字列+ IP +日付/時刻をチェックします。
  5. 検証されると、2番目のWebサイトはログインセッションの初期化にユーザーに適切なアクセス権を与えます。

私が知っている警告は

  • 2番目のWebサイトのセキュリティは、最初のWebサイトのセキュリティに限定されます。
  • ユーザーが1つのサイトからログアウトしても、他のサイトから自動的にログアウトされることはありません。

だから私の質問は

  1. このソリューションは良いものですか?適切に実装されていれば安全ですか?
  2. 私が見直すべき他の明白な/より良い解決策はありますか?
  3. 他に知っておくべき警告や、実装時に注意する点があるかどうかをお知らせください。
5
Bryan Field

oauthのようなものを使用すると、おそらくより簡単で安全になります。それに関する主な問題は、ユーザーレベルの暗号化にユーザーパスワードを使用できないことですが、サイトで必要ない場合ユーザーが直接ログインしていない場合は問題ありません。

1つのサーバーがログインを担当し、もう1つのサーバーがそのサーバーを信頼することを望むという基本的な考え方は正しいですが、文字列ではなく、2つのサーバー間の信頼できる通信に依存するシステムを使用することをお勧めしますセッションを検証します。これは基本的にoauthの考え方です。一方のシステムがもう一方のシステムにログインを処理させ、ユーザーが認証した検証を返します。 oauthプロセスは非表示にすることができます。これは、ユーザーが既に自分のIDを検証するサイトにログインしているため、裏で行われる可能性があるためです。

4
AJ Henderson