如何实现具有一定安全性的刷新令牌?

时间:2016-06-01 09:59:29

标签: security oauth oauth-2.0 access-token api-design

每次用户登录时,他都会获得新的access_token和新的refresh_token

当他的access_token过期后,他会使用他的refresh_token获取新的access_token

如果攻击者以某种方式访问​​了他的refresh_token ...那么根据Oauth 2.0 documentation

  

授权服务器可以使用刷新令牌   每次访问都会发出新刷新令牌的轮换   令牌刷新响应。先前的刷新令牌无效但是   由授权服务器保留。如果是刷新令牌   被攻击者和攻击者共同攻击并随后使用   合法客户端,其中一个将呈现无效的刷新   令牌,它将通知授权服务器该违规行为。

所以基本上,如果任何refresh_token被使用两次,我会注意到攻击。

但是,如果合法用户从未使用过他的刷新令牌(被攻击者窃取)呢?攻击者将能够在合法用户无法检测到的情况下反复登录和刷新。

听起来像是一种罕见的情况?如果你来我的地方吃饭并用我的电脑登录,我得到你的refresh_token和access_token,你再也不会使用这个refresh_token了怎么办?没有人会注意到这次袭击。

有什么可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

  

每次用户登录时,他都会获得一个新的access_token和一个新的   refresh_token

客户端应用程序获取这些令牌,而不是最终用户。

  

攻击者无需登录和刷新即可   合法用户能够检测到它

要使用刷新令牌,您也需要客户的秘密。

  

如果您到我的地方吃晚餐并使用我的电脑登录,该怎么办

我永远不会那样做。我不是那么粗鲁:)晚餐吃什么?