15

On a website I have implemented the login using OpenID (based on StackOverflow).

But I can't seem to logout.
On my host I can logout but when the user tries to login again (especially with google) the authentication goes through without requiring the user to type in name and password.

How can I indicate to the OpenID Provider that a user is no longer logged into the site?

4

4 に答える 4

8

これはシングル ログアウトまたはシングル サインアウトと呼ばれ、OpenID ではサポートされていません。私の意見では、ログアウトなしの SSO は大きなセキュリティ ホールです。1 つのサイトからログアウトしても、他のユーザーが数回クリックするだけでログインできるのであれば、あまり意味がありません。

今のところ、プロバイダーを覚えておく必要があります。それが私たちの知っている人である場合は、その人のログアウト プロセスをトリガーします。Google の場合、URL は次のとおりです。

https://www.google.com/accounts/ログアウト

ログアウトの流れは醜いですが、仕事はします。

于 2009-09-06T07:32:25.073 に答える
4

通常、これは OpenID プロバイダーによって処理されます。たとえば、ユーザーが Google アカウントにログインしたままで、特定のサイトの OpenID 承認を「記憶」するためのチェックボックスをオンにした場合、プロバイダーはユーザーを透過的にログインさせ、リダイレクトせずに元に戻します。ログインプロンプトを表示します。

于 2009-09-06T07:12:06.177 に答える
0

「これはバグではなく機能です」

ID プロバイダーは、Cookie を介してプロバイダーに対して許可されたユーザーを保持することを選択できます。さらに、以前に共有された同じ情報を共有することについて (プロンプトで) ユーザーに再度プロンプトを表示しないことを選択できます。そのため、サイト A のユーザーがサイト B を介して承認されるように要求し、リダイレクトされたとき、サイト B は最初にユーザーに自分自身を認証するように要求しました。次に、サイト B は、サイト A と情報を共有するかどうか (および場合によってはどの情報を共有するか) を尋ねます。はいと仮定するプロバイダもあれば、いいえと仮定するプロバイダもあれば、尋ねないプロバイダもあります。次に、サイト B がサイト A にリダイレクトし、情報を共有します。これでログインが完了しました。

サイト A がログインを要求するためにサイト B に 2 回目のリダイレクトを行った場合、サイト B は 1) サイト B の現在のユーザーを認証する Cookie を既に持っている可能性があります。 3) ユーザーにプロンプ​​トを表示するために一時停止することなく、リダイレクトを介してこの情報を自動的に共有します。

利便性を重視した機能です。

于 2009-09-06T08:28:53.647 に答える