如何实现具有一定安全性的刷新令牌?
每次用户登录时,他都会得到一个新的access_token
和一个新的refresh_token
。
当他的access_token
过期时,他使用他的refresh_token
来获得一个新的access_token
。
如果攻击者以某种方式访问他的refresh_token
...则根据Oauth 2.0文档:
授权服务器可以采用刷新令牌轮换,其中随每个访问令牌刷新响应一起发布新的刷新令牌。 之前的刷新令牌无效,但由授权服务器保留。 如果刷新令牌受到攻击并被攻击者和合法客户端使用,则其中一个会显示一个无效的刷新令牌,该令牌会向授权服务器通知违规情况。
所以基本上,如果有两次使用refresh_token
,我会注意到这次攻击。
但是如果合法用户从不使用他的刷新标记(这是攻击者窃取的)呢? 攻击者将能够一遍又一遍地登录和刷新,而合法用户无法检测到它。
听起来像是一种罕见的情况? 如果你来我的地方吃晚餐并用我的电脑登录,我得到了你的refresh_token和access_token,你将永远不会再使用这个refresh_token? 没有人会注意到这次袭击。
什么能解决这个问题?
每次用户登录时,他都会得到一个新的access_token和一个新的refresh_token
客户端应用程序获取这些令牌,而不是最终用户。
攻击者将能够一遍又一遍地登录和刷新,而合法用户无法检测到它
要使用刷新令牌,您也需要客户端的秘密。
如果你来我的地方吃晚饭并用我的电脑登录会怎么样?
我永远不会那样做。 我不是那么粗鲁:)晚餐吃什么?
链接地址: http://www.djcxy.com/p/48025.html