【问题标题】:How to FOSOAuthServerBundle "Logout" or, better, Revoke Token如何 FOSOAuthServerBundle “注销”,或者更好的是,撤销令牌
【发布时间】:2015-08-05 01:13:06
【问题描述】:

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

一切正常,任何令牌生成、刷新等等……

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

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

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

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

【问题讨论】:

    标签: symfony oauth-2.0 fosoauthserverbundle


    【解决方案1】:

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

    【讨论】:

    • -1 表示这是“概念错误”。它不是。如果无法撤销令牌,您不能保证在用户结束会话后有人不会使用它。试想一下,如果没有办法撤销被盗的 SSL 证书等。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-02-09
      • 2021-07-05
      • 2018-09-21
      • 2021-06-26
      • 1970-01-01
      • 2020-10-19
      • 2015-11-02
      • 2014-03-26
      相关资源
      最近更新 更多