如何向启用OpenID的站点添加注销功能?

如何向启用OpenID的站点添加注销功能?,openid,logout,Openid,Logout,我最近在我的网站上添加了OpenID登录。但我不知道如何添加注销功能 例如,单击登录按钮,我可以显示所选OpenID提供商的登录表单,例如Google帐户。然而,我不知道如何实现注销按钮来注销谷歌帐户 请注意。OpenID依赖方无法将用户注销OP,您只能实现本地注销。就像RP无法让用户登录OP一样。只需销毁会话。我正在做我的项目,并且陷入了注销问题 我不知道怎么像你那样做 我已通过重置所有cookie解决了此问题 因为我不知道设置登录状态的cookie 我需要知道 您必须在从openid提供程序

我最近在我的网站上添加了OpenID登录。但我不知道如何添加注销功能

例如,单击登录按钮,我可以显示所选OpenID提供商的登录表单,例如Google帐户。然而,我不知道如何实现注销按钮来注销谷歌帐户


请注意。

OpenID依赖方无法将用户注销OP,您只能实现本地注销。就像RP无法让用户登录OP一样。

只需销毁会话。

我正在做我的项目,并且陷入了注销问题 我不知道怎么像你那样做 我已通过重置所有cookie解决了此问题 因为我不知道设置登录状态的cookie
我需要知道

您必须在从openid提供程序成功验证后创建了一些会话变量,您只需要销毁这些会话变量。您不能破坏由openid提供程序创建的会话。

我认为您在混合范例(讨厌这个词,但现在想不出更好的一个)。您的登录链接将用户发送到他们的OpenID提供商进行身份验证,但重要的不是用户登录到他们的Google帐户,而是通过OpenID提供凭据登录到您的网站。用户可能已经登录到他们的OpenID提供者;你不知道也不必关心


类似地,站点上的注销链接应该只让用户注销站点,并将其返回到与单击“登录”按钮之前相同的状态。用户可能已经注销了他们的OpenID提供程序;你既不知道也不关心。这个网站就是一个很好的例子:)。

各个OpenID提供商提供不同的URL供用户注销,用户可以重定向到这些URL

谷歌:

雅虎:


已经讨论过允许OPs提供这些URL作为标准的一部分;请参阅OpenID邮件列表上的。

您只能对OpenID实施本地注销。正如Charles Duffy所说,您可以始终使用特定的url,但前提是用户使用的是您知道注销url的提供者。如果你的用户在注销你的网站时发现他所有的谷歌账户都被注销了,这可能会引起混乱

另一种看待问题的方式是,您是否希望确保登录您网站的人始终需要输入密码,而不是在他已经登录到openid提供商时才登录

如果他们从公共终端使用它,这(IMHO)提供了更好的安全性。这将确保登录的用户始终需要重新验证其密码

要做到这一点,实际上非常简单,只需使用PAPE扩展 openid.ns.pape=”http://specs.openid.net/extensions/pape/1.0“
openid.pape.max\u auth\u age=0

当您登录到OpenID提供程序时,作为URL的一部分


下面的更多信息是我可以从谷歌注销的一个技巧:

<iframe id="myIFrame" src="" style='display:none;' > 
 function logOutGoogle(){
     document.getElementById('myIFrame').src='https://www.google.com/accounts/Logout';
     timeOut();
 }

函数logOutGoogle(){
document.getElementById('myIFrame').src='1〕https://www.google.com/accounts/Logout';
超时();
}

这是一个值得信赖的解决方案,用于注销谷歌和您的RP

就叫这个URI吧

它将注销谷歌并重定向回你的应用程序。谢谢


很快,我将发布针对windows live和facebook.com STS的注销解决方案。

是的。你要求的是一个单一的注销功能,OpenID没有实现。OpenID没有实现这个功能,但主要的OpenID提供商(谷歌和雅虎)都有。我认为清除所有cookies会让用户注销他登录的所有网站,比如谷歌、雅虎!,Facebook等等。我不确定我是否正确。你能发布代码吗?至少有一次,我得到了一个商业要求,当用户从我的网站上注销时,他们可以在任何地方注销——如果没有其他原因的话,因为Facebook的单点登录就是这样工作的。仅仅因为它不方便和烦人并不意味着它不是“想要的”行为。唉。我猜这些URL很快就会停止接受GET注销请求。如果任何一个随机站点都可以让你的浏览器执行GET请求(例如,在页面上嵌入图像、iframe、重定向),从而让你注销所有谷歌服务(以及其他通过谷歌认证的服务),这一点都不好玩。该URL应该提供一个确认页面,其中包含一个POST提交按钮和CSRF保护。@MikkoRantalainen好吧,两年后,这些仍然可以正常工作。我已经为Google和Yahoo实现了OpenID,通过Jquery
ajax
请求上述注销地址,注销将非常有效。我不知道它是否正确,但对于我们的敏捷过程来说,它仍然是一个很好的解决方案:),使用Iframe可能更好!!。OpenID Connect使用3种方法提供单次注销。其“会话管理规范”的一部分是前端通道(基于HTTP)和后端通道方法如果这两种模式是1)终止会话和2)从身份提供商注销,那么IMHO用户在注销时会期望第二种模式。什么用户关心服务器的会话?他们希望确保有人在没有明确重新验证的情况下无法进入他们的计算机、单击您的站点并创建新会话。在这方面,我不同意SO的注销方法。也许“注销”一词对于使用SSO的网站不再有效,而有利于???一次注销?