Symfony 如何使用FOSOAuthServerBundle“;注销“;或者,最好是撤销代币

Symfony 如何使用FOSOAuthServerBundle“;注销“;或者,最好是撤销代币,symfony,oauth-2.0,fosoauthserverbundle,Symfony,Oauth 2.0,Fosoauthserverbundle,我使用Symfony2.0和FOSOAuthServerBundle(实现OAuth2)来管理我的应用程序客户端对PHP服务器的访问 一切都很完美,任何标记生成、刷新等 其中一个效果是,无论何时我进入应用程序,我都不需要重新输入我的凭据,因为令牌仍然有效,或者,我使用适当的API方法刷新它 到目前为止,这一切都很完美 现在,我需要在我的应用程序中开发一个“注销”按钮,以使该用户的令牌无效,并避免为他使用任何刷新令牌。有点像是撤销他的令牌和/或凭据。换句话说,真正模拟从服务器注销,导致用户下次进入

我使用Symfony2.0和FOSOAuthServerBundle(实现OAuth2)来管理我的应用程序客户端对PHP服务器的访问

一切都很完美,任何标记生成、刷新等

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

到目前为止,这一切都很完美

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


OAuth2为此设置了什么?它是一种标准行为,有自己的API方法吗?或者我应该为了得到它而忽略任何行为吗?

如果有人被困在同一件事上,我也有类似的问题,但结果证明这是一个概念上的错误。 也许这可以帮助您:

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

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

-1表示这是“概念上的错误”。不是。若并没有撤销令牌的可能性,那个么你们不能保证在用户结束会话后有人不会使用它。想象一下,如果没有办法撤销被盗的SSL证书等。