我最近在我的网站上添加了OpenID登录信息。但我不知道如何添加注销功能。
例如,点击登录按钮后,我可以显示所选OpenID提供商的登录表单,例如Google帐户。但是,我不知道如何实施退出按钮以退出Google帐户。
请建议。
答案 0 :(得分:39)
各个OpenID提供商提供不同的URL用于注销,用户可以重定向到该URL。
Google:https://www.google.com/accounts/Logout
雅虎:https://login.yahoo.com/config/login?logout=1
已经讨论过允许OP提供这些URL作为标准的一部分;请参阅OpenID邮件列表中的this discussion。
答案 1 :(得分:14)
OpenID依赖方无法将用户退出OP,只能实现本地注销。就像RP无法将用户登录到OP。
答案 2 :(得分:5)
我认为你们正在混合范式(讨厌这个词,但是想不出一个更好的用法)。您的登录链接会将用户发送给他们的OpenID提供商进行身份验证,但不是用户登录到他们的Google帐户,这是重要的一点,它通过OpenID提供凭据登录到您的网站。用户可能已经登录到他们的OpenID提供商;你不(不能)知道也不必关心。
同样,您网站上的注销链接应该仅将用户注销到您的网站,将其返回到与点击登录按钮之前相同的状态。用户可能已经退出了他们的OpenID提供商;你既不知道也不关心。这个网站就是一个很好的例子:)。
答案 3 :(得分:1)
只是破坏会话。
答案 4 :(得分:1)
您只能为OpenID实施本地注销。正如Charles Duffy所说,你总是可以使用特定的网址但是提供的是用户正在使用你知道注销网址的提供商。如果您的用户在退出您的网站时发现他的所有Google帐户都已注销,则可能会令人反感。
另一种解决问题的方法是,您是否希望确保登录您网站的人始终需要输入密码,而不是仅在登录到openid提供商时登录。
如果他们从公共终端使用它,它(IMHO)提供更好的安全性。这将确保登录的用户始终需要重新验证其密码。
要做到这一点,实际上非常简单,只需使用PAPE扩展 openid.ns.pape =“http://specs.openid.net/extensions/pape/1.0” openid.pape.max_auth_age = 0
作为登录OpenID提供程序时URL的一部分。
此处提供更多信息http://code.google.com/apis/accounts/docs/OpenID.html
答案 5 :(得分:1)
以下是我可以从Google退出的一个技巧:
<iframe id="myIFrame" src="" style='display:none;' >
function logOutGoogle(){
document.getElementById('myIFrame').src='https://www.google.com/accounts/Logout';
timeOut();
}
答案 6 :(得分:0)
我正在做我的项目并陷入注销问题 我不知道如何像你这样做 我通过重置所有的cookie解决了 因为我不知道设置登录状态的cookie 我需要知道它。
答案 7 :(得分:0)
您必须在从openid提供程序成功验证后创建一些会话变量,您只需要销毁这些会话变量。您无法销毁openid提供程序创建的会话。
答案 8 :(得分:-1)
以下是退出Google和您的RP的值得信赖的解决方案。
只需调用此URI
即可它将退出谷歌并重定向回您的应用程序。谢谢!
很快我将发布我的登出解决方案,用于windows live和facebook.com STS。