开放标识。你如何注销
Posted
技术标签:
【中文标题】开放标识。你如何注销【英文标题】:OpenID. How do you logout 【发布时间】:2010-11-25 23:38:46 【问题描述】:在一个网站上,我使用 OpenID(基于 ***)实现了登录。
但我似乎无法退出。 在我的主机上,我可以注销,但是当用户尝试再次登录(尤其是使用 google)时,无需用户输入名称和密码即可完成身份验证。
我如何向 OpenID 提供者表明用户不再登录该站点?
【问题讨论】:
这取决于 OpenID 提供者。如果您退出 Google,我相信您会再次收到提示。 对于将其标记为属于 SuperUser 的人,你错了 - 这显然是一个关于 web 应用程序中 OpenID 实现的编程问题。 @Dav:抱歉,我读得太快了,但不幸的是,没有办法撤消近距离投票。值得庆幸的是,只要其他四个人没有犯同样的错误,这并不重要。 别担心,我们有时都会犯错。 :) 最好检查一下您网站上的 (sessions|cookies) 是否一切正常。 【参考方案1】:这通常由 OpenID 提供商处理 - 例如,如果用户保持登录到他们的 Google 帐户并选中复选框以“记住”您特定网站的 OpenID 授权,那么提供商将透明地登录并重定向他们在不显示登录提示的情况下返回。
【讨论】:
【参考方案2】:OpenID 对您网站的用户进行身份验证,然后在您的网站上启动会话。您与用户与其 OpenID 提供商的会话分开销毁或使您网站的会话无效。
用户访问 joewidgets.com > 用户使用 OpenID 登录(使用新的或现有的提供者会话)> ... 用户单击注销 > joewidgets.com 销毁/使会话无效。
如果用户让他们的 OpenID 提供商保持登录状态,并且您的系统会自动进行检查,那么它将创建一个新的本地会话。 (不)幸运的是,您不必/不能担心用户在他们的提供商处做什么或不做什么,这是 OpenID 的优点/缺点。
Social Lipstick 有一个参数要求“单点注销”,但 OpenID 目前不提供此功能。
【讨论】:
【参考方案3】:这称为单点注销或单点注销,OpenID 不支持。在我看来,没有注销的 SSO 是一个很大的安全漏洞。如果其他人只需点击几下即可登录,那么退出单个站点并没有多大意义。
现在,我们必须记住提供者。如果是我们认识的人,我们会为他们触发注销过程。对于 Google,网址是,
https://www.google.com/accounts/Logout
注销流程很丑陋,但它可以完成工作。
【讨论】:
现在这只是卑鄙的!我喜欢 OpenID 的原因是我可以控制,而不是我所在的站点。退出我的 gmail,我将永远不会再访问您的网站。 它应该要求注销而不是仅仅注销。这可能吗? 哇!我完全不知道谷歌允许使用普通的 GET 请求注销。这实际上是等待发生的 DoS 攻击(例如,具有该地址的 iframe 将从 google 注销站点阅读器!)【参考方案4】:“这是一个功能而不是错误”
id 提供者可以选择通过 cookie 保持用户对提供者的授权,并且进一步可以选择不重新提示用户共享之前共享的相同信息(带有提示)。因此,当站点 A 上的用户请求通过站点 B 进行授权并被重定向时,站点 B 首先要求用户进行身份验证。然后站点 B 询问它是否应该与站点 A 共享任何信息(有时是哪些信息)。此时它通常还会询问您是否希望将来自动共享相同的信息。有些供应商会假设是,有些不是,有些不会问。然后站点 B 重定向到站点 A 并共享信息,您现在已登录。
如果站点 A 再次重定向到站点 B 以请求登录,站点 B 可能 1) 已经有一个 cookie 来验证站点 B 的当前用户。 2) 已经记录了哪些信息可以与站点 B 共享。 3)通过重定向自动共享此信息,而无需暂停提示用户。
这是一个以方便为中心的功能。
【讨论】:
以上是关于开放标识。你如何注销的主要内容,如果未能解决你的问题,请参考以下文章