每次用户登录时,他都会获得新的access_token
和新的refresh_token
。
当他的access_token
过期后,他会使用他的refresh_token
获取新的access_token
。
如果攻击者以某种方式访问了他的refresh_token
...那么根据Oauth 2.0 documentation:
授权服务器可以使用刷新令牌 每次访问都会发出新刷新令牌的轮换 令牌刷新响应。先前的刷新令牌无效但是 由授权服务器保留。如果是刷新令牌 被攻击者和攻击者共同攻击并随后使用 合法客户端,其中一个将呈现无效的刷新 令牌,它将通知授权服务器该违规行为。
所以基本上,如果任何refresh_token
被使用两次,我会注意到攻击。
但是,如果合法用户从未使用过他的刷新令牌(被攻击者窃取)呢?攻击者将能够在合法用户无法检测到的情况下反复登录和刷新。
听起来像是一种罕见的情况?如果你来我的地方吃饭并用我的电脑登录,我得到你的refresh_token和access_token,你再也不会使用这个refresh_token了怎么办?没有人会注意到这次袭击。
有什么可以解决这个问题?
答案 0 :(得分:0)
每次用户登录时,他都会获得一个新的access_token和一个新的 refresh_token
客户端应用程序获取这些令牌,而不是最终用户。
攻击者无需登录和刷新即可 合法用户能够检测到它
要使用刷新令牌,您也需要客户的秘密。
如果您到我的地方吃晚餐并使用我的电脑登录,该怎么办
我永远不会那样做。我不是那么粗鲁:)晚餐吃什么?