【问题标题】:Refresh Token gets revoked with Access Token in Laravel Passport刷新令牌被 Laravel Passport 中的访问令牌撤销
【发布时间】:2018-04-23 07:01:40
【问题描述】:

我正在使用 laravel/passport password_grant 进行身份验证。整个生成access_tokenrefresh_token 过程运行良好。现在我正在尝试使用 laravel 护照令牌事件来撤销旧令牌。

我参考了这篇文章的过程 - https://laracasts.com/discuss/channels/laravel/laravel-passport-revoke-and-prune-event-listener-is-not-doing-anything

这行得通...但是当使用先前提供的refresh token 刷新access token 时,正在创建一个新的access token,并且还创建了一个新的refresh token。最终,在撤销旧的access token 的同时,旧的、未过期的refresh token 也会被撤销。

但我认为,refresh token 必须在过期后才能撤销。

当我从 App\Providers\EventServiceProvider $listen array 中删除 EventListeners 时,撤销机制仍然有效。

这就像拔掉灯泡仍然亮着的插头。

如何解决这个问题?还是我在某个地方的概念有误?

【问题讨论】:

  • 从我的理解刷新令牌链接到访问令牌,刷新令牌检查访问令牌,如果您没有有效的访问令牌链接到刷新令牌刷新令牌将如何被检查了吗?
  • 是的,即使我删除了事件侦听器,撤销刷新令牌的事件如何仍然触发?在注册事件侦听器之前,一切都按我的意愿工作。 @madalinivascu
  • 你排队参加活动了吗?
  • 没有。 @madalinivascu
  • 我不熟悉 laravel 事件,尝试做一个 composer dumpupload

标签: laravel authentication access-token laravel-passport refresh-token


【解决方案1】:

但是,当使用之前提供的刷新令牌刷新访问令牌时,会创建一个新的访问令牌,同时还会创建一个新的刷新令牌。

这基本上就是刷新令牌防止 MITM 攻击的原因(在某种程度上)。如果有人拦截了您的通信并找到了您的访问令牌,他们可以冒充您,只要它存在。但是,如果他们拦截了您刷新令牌的请求,那么只有你们中的一个人(用户和攻击者)可以使用它,因为一旦使用它就会被撤销。如果你先使用它,它对他们来说毫无用处。如果他们先使用它,您将被注销,因为您的旧令牌将被撤销。如果他们可以拦截您的所有请求 - 并不断找到您的新访问令牌,您需要重新考虑您的安全设置。

来自 图 2:刷新过期的访问令牌下的 RFC6749 部分 1.5. Refresh Token

(H) 授权服务器对客户端进行身份验证并验证 刷新令牌,如果有效,则发出一个新的访问令牌(并且, (可选)新的刷新令牌)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-12
    • 2021-09-24
    • 2022-07-05
    • 1970-01-01
    • 2020-11-13
    • 2018-11-14
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多