たとえば、OpenID、Yahooなどの外部Webサイトにログインすることで、stackexchange Webサイトにログインできます。これはどのように機能しますか? Webサイト(SEやYahoo!など)はどのように通信しますか? Yahoo!それが本当にstackexchangeであることを知っていますか? stackexchangeは、Yahoo!に正常にログインしたことをどのようにして知るのですか?そしてそれは本当にYahoo!ですか? stackexchangeは、Yahoo!にログアウトしたかどうかを知っていますか?ここにログインした後
特定の例では、StackExchangeはOpenIDを使用します。 OpenIDは、IDプロバイダーの考え方をサポートしています。Yahooは、Google、MyOpenIDなどと同じIDプロバイダーです。StackExchangeにログインするには、使用するプロバイダーを尋ね、そのプロバイダーのログインページにリダイレクトします。
プロバイダーに対して認証すると、プロバイダーはトークンを使用してStackExchangeにリダイレクトします。このトークンには、ID情報が含まれています。これは一般にクレームベース認証と呼ばれ、クレームはアイデンティティに関する情報の一部です。あなたの名前とクレームはトークンにバンドルされています。
通信はHTTP 302リダイレクトを介して行われ、HTTP POSTはすべてユーザーのブラウザーを介して行われます。 YahooのURLにはStackExchangeであることを示すパラメータが含まれているため、YahooはStackExchangeを知っています。 StackExchangeは、IDトークンがYahooによって署名されているため、Yahooからのものであることを認識しています。
ここを参照してください: http://openid.net/get-an-openid/what-is-openid/
そしてここ: http://openidexplained.com/
IDトークンに関して-いくつかの形式をとることができます。ある特定のケース(私がOpenIDをサポートしていることを知っています)では、トークンは事実上一連のURLパラメータです。それらは以下を含む多くのものを提供します:
識別情報を変更すると、署名が壊れ、StackExchangeはログインを拒否します。また、共有秘密がわからないため、署名を最初から再作成することはできません。
もう1つのトークンの形式は、私がよく知っているものですが、長い疑似ランダム文字列です。ブラウザーは、これをURLに含むIDプロバイダーから戻ります。次に、クライアントサイト(StackExchangeなど)がトークンをIDプロバイダーと直接照合します。プロバイダーは最近発行されたトークンのリストを調べ、見つかった場合は、クライアントを一意に識別する情報を返します。
logout/single-sign-outについて-いいえ、StackExchangeはOpenIDサービスからログアウトするかどうかを認識しません。同様に、StackExchangeからログアウトしても、OpenIDプロバイダーには通知されません。
一部のシステム(Google mail/docs/calendarは良い例です)は代わりに、使用しているサイト/サービスからログアウトするアプローチを使用しますand IDプロバイダーサービス。ただし、他のすべてのサービスは影響を受けません。例えば:
参照: