2

我正在使用实现 OAuth2 的 Symfony2.0 和 FOSOAuthServerBundle 来管理我的 APP 客户端对我的 PHP 服务器的访问。

一切都很完美,任何令牌生成,刷新等等......

获得的效果之一是,每当我进入 APP 时,我都不需要重新输入我的凭据,因为令牌仍然有效,否则我使用正确的 API 方法刷新它。

典型的行为,到目前为止一切都很完美。

现在我需要在我的 APP 中开发一个“注销”按钮,以使该用户的令牌无效并避免为他使用任何 refresh_token。有点撤销他的令牌和/或凭据。换句话说,真正模拟从服务器注销导致用户在下次进入 APP 时重新输入他的凭据。

OAuth2 为此设置了什么?它是具有自己的 API 方法的标准行为吗?或者我应该重写任何行为以获得它?

4

2 回答 2

3

如果有人坚持同一件事,我有类似的问题,但结果证明这是一个概念错误。也许这可以帮助你: https ://github.com/FriendsOfSymfony/FOSOAuthServerBundle/issues/236

于 2014-05-13T19:52:16.030 回答
0

根据定义, oAuth2 是STATELESS,因此,从 oauth 服务器注销是没有意义的。为此,只需在客户端应用程序中销毁访问令牌(我们在这里假设您拥有应用程序的控制权)。

但是,当第三方应用程序连接到您的服务器时,您可以通过删除服务器提供给客户端应用程序用户的所有访问令牌来强制注销机制。因此,当应用程序想要使用其中一个被销毁的令牌时,它将获得401 HTTP RESPONSE(提供的访问令牌无效)。请注意,如果应用程序已将用户密码保存在其本地存储中,它可以自动登录到您的服务器,而无需要求用户输入其密码。因此,在服务器端销毁访问令牌不是一个确定的方法。

于 2015-08-04T17:13:06.000 回答