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

每次用户登录时,他都会得到一个新的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

上一篇: How to implement Refresh Tokens with some security?

下一篇: Best practices around generating OAuth tokens?