Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OpenID注销。我只需要身份验证,而不是登录到OpenID提供程序_Php_Authentication_Openid_Logout - Fatal编程技术网

Php OpenID注销。我只需要身份验证,而不是登录到OpenID提供程序

Php OpenID注销。我只需要身份验证,而不是登录到OpenID提供程序,php,authentication,openid,logout,Php,Authentication,Openid,Logout,从这个问题开始: 嗯。因此OpenID没有单次注销。 我可以看到它的用途,但有些情况让我担心: 单点登录对于移动设备和您的个人电脑来说是非常好的选择。 您只需登录一次,可能再也不需要注销(只需在登录时通过新站点进行身份验证) 但如果我使用的是公共计算机(机场,甚至是工作计算机),这就是一个问题 当我使用openID登录一个网站时,我登录到了两个不同的地方,这并不明显。我登录到一个网站(例如使用gmail帐户),但同时我刚刚登录到gmail(OpenID提供商) 当我退出stackoverflow

从这个问题开始:

嗯。因此OpenID没有单次注销。
我可以看到它的用途,但有些情况让我担心:

单点登录对于移动设备和您的个人电脑来说是非常好的选择。
您只需登录一次,可能再也不需要注销(只需在登录时通过新站点进行身份验证)

但如果我使用的是公共计算机(机场,甚至是工作计算机),这就是一个问题

当我使用openID登录一个网站时,我登录到了两个不同的地方,这并不明显。我登录到一个网站(例如使用gmail帐户),但同时我刚刚登录到gmail(OpenID提供商)

当我退出stackoverflow时,我仍然被gmail(OpenID提供者)签名

当我使用gmail进行身份验证时,我不想登录gmail,我只想进行身份验证

解决这个问题的一个办法是让注销流程同时将我从gmail中注销,但正如上一篇文章所述,如果我从stackoverflow中注销,如果我在家,我不一定要注销gmail

所以问题是:

有没有一种不用登录就可以通过这些OpenID提供程序进行身份验证的方法


因为即使是像stack overflow这样的站点,当您注销通过身份验证的OpenID提供程序时,它们也不会将您注销。如果您有gmail帐户,我可以全天登录和注销,而不会影响stackoverflow是否登录。

如果协议不支持它(而且它不支持),那么除了完成后删除所有cookie之外,您在这里什么也做不了,这将清除将您登录到提供商和将您登录到服务的cookie

另一方面,OpenID提供商不必为您提供持久cookie,甚至不必提供让您登录到OpenID帐户的会话cookie,它可以对您进行一次自身身份验证,然后继续发送身份验证令牌。如果您担心在使用OpenID时会登录Gmail,那么请选择其他OpenID提供商


但是这是一个怎样的问题呢?

人们显然看不到你问题中的问题,所以我在这里重复这一点只是为了清楚(并加上问号)


有没有一种不用登录就可以通过这些OpenID提供程序进行身份验证的方法


我相信这个问题的答案是“否”(正如blowdart所阐述的那样)。

OpenID没有指定提供者是否应该为自己创建登录会话,但几乎所有提供者都会这样做。因此,没有选择只验证RP而不在OP中留下会话


如果您确实希望在不离开会话的情况下进行身份验证,则可以使用其他协议进行身份验证。几乎每个OP都提供了使用用户名/密码登录的专有协议。例如,Google有ClientAuth,AOL有directLogin。这就是所谓的密码反模式。这会引起一些隐私问题,因为你在网站上收集谷歌密码。无论如何,我并不推荐它。

简单的回答是肯定的,实际上,通过选择一个合理的OpenID提供者

答案很长,这是一个关于OpenID提供者的问题,而不是OpenID本身

OpenID只处理身份验证。会话支持(以及登录或注销等相关概念)不在OpenID规范的范围内

您的OpenID提供商可能会为您保留一个会话(可能使用浏览器cookie)。任何合理的提供商都不会这样做,除非您指明(“登录stackoverflow.com时请记住我”)

OpenID使用者(如StackOverflow)也可以为您保留一个会话。对此您无能为力,但对于任何身份验证方案,无论是第三方身份验证还是直接身份验证,都是如此


因为OpenID的第三方方面设计得很好,所以通过选择一个合理的提供者,或者更好地使用HTML页面作为您声称的身份,在实践中很容易避免登录,如果您决定切换,您可以将其委托给提供程序。

有没有一种方法可以在不登录的情况下通过这些OpenID提供程序进行身份验证。您必须登录才能获得令牌以发送给依赖方,您希望的是不要在提供程序上持续登录。这取决于提供者,而不是stackoverflow上的随机人员。这是我的观点。我希望我的网站能够通过谷歌认证,但不会影响gmail与客户端的状态。我不想让用户在我的站点上所做的事情影响他们在其他站点上的状态(除非用户想这样做,但这与我的站点无关)。然后,你需要让每个OpenID提供者改变他们的工作方式。祝你好运。