如何FOSOAuthServerBundle“注销”或更好的,撤销令牌

时间:2014-03-01 10:06:55

标签: symfony oauth-2.0 fosoauthserverbundle

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

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

其中一个效果是,无论何时我进入APP,我都不需要重新输入我的凭据,因为令牌仍然有效,或者,我使用适当的API方法刷新它。

到目前为止典型的行为和完美。

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

OAuth2为此设置了什么?它是自带API方法的标准行为吗?或者我应该覆盖任何行为才能获得它?

2 个答案:

答案 0 :(得分:2)

如果某人遇到同样的事情,我也有类似的问题,但事实证明这是一个概念上的错误。 也许这可以帮助你: https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/issues/236

答案 1 :(得分:0)

根据定义,oAuth2是 STATELESS ,因此,从oauth服务器注销是没有意义的。要做到这一点,只需销毁客户端应用程序中的访问令牌(我们假设您可以控制该应用程序)。

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