SSO を正しく理解しているかどうかわかりません。主なアイデアは、多くのサイトでユーザー名とパスワードを 1 つだけにすることだと思います。また、SSO のもう 1 つのアイデアは、一度だけログインすることです。これにより、再度ログインすることなく、同じ SSO メカニズムで他のすべてのサイトを使用できるようになります。最初の目標は、OpenID によって確実に実装されます。しかし、2番目のものはどうですか?facebook で stackoverflow にログインすると、facebook ログインを使用している他のサイトには自動的にログインされませんか? では、OpenID を持っている場合、サイトごとに常にユーザー名とパスワードを入力する必要がありますか?
2 に答える
SSOについて理解したことは正しいです。はい、OpenIDを使用してSSOを実装できます。また、Facebookの場合、OpenIDを使用してそのOAuthであるStackOverflowにログインすることはありません。
OpenIDでSSOを実装する方法は、クロスドメインCookieを使用するのではなく、OpenIDプロバイダードメインで設定されたCookieを使用することです。したがって、すべてのユーザーがSPによってOPにリダイレクトされると、OPはこのCookieを確認し、このユーザーがすでにログインしていて有効なセッションを持っていることを識別します。そのため、ユーザーは認証チャレンジなしですぐにRPにリダイレクトされます。
あなたは主なアイデアについて正しいです。openID の利点は、資格情報を再利用できることです。
基本的なプロセスは簡単です (Facebook で StackOverflow にログインする例を使用)。
- スタックオーバーフローにアクセスします。
- あなたは「私は Facebook の CommanderData です」と言います。
- Stackoverflow は「本当ですか? 証明してください!」と言います。- そして facebook に行き、「この男は本当に facebook の CommanderData ですか?」と尋ねます。
- すでに facebook にログインしている場合、facebook は「はい、彼は実際には facebook の CommanderData です」と返信し、StackOverflow は、あなたが facebook 上にいると言っている人であることを認識してログインできます。facebook にログインしていない場合、facebook は、facebook にログインすることで CommanderData であることを証明する機会を提供し、StackOverflow に応答します。
あなたの質問に答えるために: Facebook で SO にログインする場合、Facebook OpenId を使用して他のサイトに自動的にログインすることはありません。ただし、facebook にログインしている場合、facebook はすでにあなたが誰であるかを知っており、RP (証明書利用者、この例では StackOverflow) にあなたが誰であるかを伝えることができるため、毎回 facebook にログインする必要はありません。
あなたのコメントについて: OpenId がクロス ドメイン Cookie を使用しているとは思えません。これは、両側 (EP と RP) で検証される個々の Web 要求を作成し、2 つの間で通信が行われなくなります。StackOverflow は実際には Facebook 認証 Cookie を読み取っていません。
このプレゼンテーションは参考になるかもしれません。