15

在一个网站上,我使用 OpenID(基于 StackOverflow)实现了登录。

但我似乎无法注销。
在我的主机上,我可以注销,但是当用户尝试再次登录(尤其是使用 google)时,身份验证会通过,而无需用户输入名称和密码。

如何向 OpenID 提供者表明用户不再登录该站点?

4

4 回答 4

14

OpenID 对您站点的用户进行身份验证,然后在您的站点上启动会话。您将站点的会话与用户与其 OpenID 提供者的会话分开销毁或失效。

用户访问 joewidgets.com > 用户使用 OpenID 登录(使用新的或现有的提供者会话)> ...用户单击注销 > joewidgets.com 破坏/使会话无效。

如果用户让他们的 OpenID 提供商让他们保持登录状态,并且您的系统会自动检查,那么它将创建一个新的本地会话。(不)幸运的是,您不必/不能担心用户在他们的提供商处做什么或不做什么,这是 OpenID 的优点/缺点。

Social Lipstick有一个参数要求“单点登出”,但OpenID 目前不提供此功能

于 2009-09-06T07:29:23.923 回答
8

这称为单点注销或单点注销,OpenID 不支持。在我看来,没有注销的 SSO 是一个很大的安全漏洞。如果其他人只需单击几下即可登录,则注销单个站点并没有多大意义。

现在,我们必须记住提供者。如果是我们认识的人,我们会为他们触发注销过程。对于 Google,URL 是,

https://www.google.com/accounts/Logout

注销流程很丑陋,但它可以完成工作。

于 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 以请求登录,站点 B 可能 1) 已经有一个 cookie 来验证站点 B 的当前用户。2) 已经记录了可以与站点 B 共享的信息。 3)通过重定向自动共享此信息,而无需暂停提示用户。

这是一个以便利性为中心的功能。

于 2009-09-06T08:28:53.647 回答