bes*_*ant 5 authentication access-token laravel refresh-token laravel-passport
我正在使用laravel/passport password_grant
进行身份验证。整个生成access_token
和refresh_token
过程工作正常。现在我正在尝试使用 Laravel 护照令牌事件来撤销旧令牌。
我参考了这篇文章的过程 - https://laracasts.com/discuss/channels/laravel/laravel-passport-revoke-and-prune-event-listener-is-not-doing-anything
这有效......但是当access token
使用先前提供的刷新时refresh token
,access token
正在创建一个新的并创建一个新的refresh token
存在。最终,在撤销 old 时access token
, old, not expiredrefresh token
也被撤销。
但我认为,refresh token
只有在它到期时才必须撤销。
而且当我EventListeners
从App\Providers\EventServiceProvider
$listen
array 中删除时,撤销机制仍然有效。
这就像拔掉插头灯泡仍然亮着一样。
如何解决这个问题?还是我在某个地方的概念有误?
但是,当使用之前提供的刷新令牌刷新访问令牌时,会创建一个新的访问令牌,同时也会创建一个新的刷新令牌。
这基本上就是使刷新令牌防止 MITM 攻击(在某种程度上)的原因。如果有人拦截了您的通信并找到了您的访问令牌,他们就可以假冒您,只要它存在。但是,如果他们拦截了您刷新令牌的请求,则只有你们中的一个人(用户和攻击者)可以使用它,因为它一旦使用就会被撤销。如果你先使用它,它对他们来说就没用了。如果他们先使用它,您将被注销,因为您的旧令牌将被撤销。如果他们可以拦截您的所有请求 - 并不断寻找您的新访问令牌,您需要重新考虑您的安全设置。
来自 RFC6749 第1.5节。图 2下的刷新令牌:刷新过期的访问令牌:
(H) 授权服务器对客户端进行身份验证并验证刷新令牌,如果有效,则颁发新的访问令牌(以及可选的新刷新令牌)。
归档时间: |
|
查看次数: |
3262 次 |
最近记录: |