2011-06-23 3 views
14

OpenIDを使用して複数のドメインにログインする:この計画は実行可能ですか?たとえば

  • 我々は(example.comexample.netそれらを呼び出す)二つのドメイン上の2つのコミュニティサイトを実行しています。
  • 後でさらに多くのドメインに展開できるようにしたいと考えています。
  • 複数の種類のログイン(OpenID、Facebook、Twitter、標準ユーザー名/パスワード)を許可したいと考えています。
  • 1つのサイトにログインしているユーザーが自動的に他のサイトにログインするようにします。

つまり、StackExchangeネットワークに少し似ています。

この場合、このプランは機能しますか?唯一id.example.orgからOpenIDでのログインを受け入れるOpenIDを信頼パーティ、など

  • example.comexample.netを設定(およびそれ以降の追加)。
  • id.example.orgにログインしている場合は、アクセスしたサイトにすぐに自動的にログインするように、最初に訪問したときにOpenIDの返信即時リクエストを行うようにexample.comexample.netを設定します。ログインしていない場合は、Cookieを設定して、すべてのページリクエストでこれを保存する必要があります。
  • OpenIDプロバイダとコンシューマとしてid.example.orgを設定します。また、Facebookや他のアイデンティティプロバイダを消費し、標準のユーザ名/パスワードアクセスを許可する必要があります。
  • ログアウトすると、データベースの認証トークンを変更するだけです。ユーザーにはまだCookieがありますが、意味がありません。したがって、ユーザーはすべてのサイトから同時にサインアウトすることができます。一度に1人のユーザーに対して複数の認証トークンを保存できます(サイトごとに異なる必要があります)。そのため、ユーザーは1つのブラウザでサインアウトできますが、別のブラウザでサインインできます。ログアウトすると、すべてのサイトが常にログアウトします。私は上記で見ることができます

唯一の問題はこれです:

  • 誰かがexample.comを訪問します。 「ログインしていない」Cookieが設定されています。
  • そして、Zieはexample.netに行きます。同上。
  • その後、Zieはサインインし、example.netでブラウジングを続けます。
  • Zieは、理由は「-ログインされていない-で」クッキーを、id.example.orgに対してチェックされていないため、ログインしていない、バックexample.comに行くと。
  • しかし、できるだけ早くzieは、「ログイン」をクリックするとボタンを押すと、zieがログインしています。

私はこれが大きな問題ではないと思います。

全体としては、かなり良いシステムだと思います。私はそれを見直してみたいと思う。予期していない問題はありますか?それはバギーか遅いでしょうか? StackExchangeは非常に異なる方法を使用します。私は彼らにそれには正当な理由があると思いますか?

+0

http://www.bbc.co.uk/dna/h2g2/F20154027?thread=8074058。 – TRiG

答えて

1

全体的に、セットアップは正常に見えます。あなたがセッションの有効期限/タイムアウトを処理していたことを期待しています。

私が見るのは、「ログイン」を明示的にクリックする必要があることだけです(それ以上の不便さ)。個人的には、私は自動ログイン(Google、MS、他の主要サイトのトンなど)を好む。

あなたは有効なログインをしているかどうかを検出し、ページの更新を求めるメッセージを表示します。やや迷惑だが、少なくとも私がログインしていることはまだわかっている。

+0

明示的にクリックする必要があるのは、ログアウトしたサイトをブラウズしてから、他のサイトにログインした場合のみです。私はそれが邪魔になる必要はないまれなケースであると思います。私は願います。スタックエクスチェンジのやり方はかなり奇妙ですが、うまくいくようです。 – TRiG

+0

これについてこれまで作業しましたか?私は似たようなことをしようとしています。 oa-omniauthの宝石に依存しているDeviseを使う。 –

+0

@rajatbanerjee。それは起こっていませんでしたが、私は実際にはそれのためにそれに関係なく実際にいくつかの作業を行うかもしれません。面白そうですね。 – TRiG