17

来自https://stackoverflow.com/a/7209263/1225328

刷新令牌的想法是,如果访问令牌被泄露,因为它是短暂的,攻击者有一个有限的窗口来滥用它。

我明白了,但是如果攻击者访问刷新令牌,他们将能够获得一个新的身份验证令牌,我错了吗?这似乎只是推迟了长期存在的令牌安全漏洞......

关于这一点,您会在相同的答案中找到:

刷新令牌,如果被泄露,将毫无用处,因为攻击者除了刷新令牌之外还需要客户端 ID 和密码才能获得访问令牌。

那么使用刷新令牌和简单地辞职有什么区别呢?如果您不希望用户再次重新输入它们,您如何存储客户端 ID 和密码?


正如@FStephenQ指出的那样,刷新令牌只能使用一次:然后攻击者将能够获得新的身份验证令牌,但只能使用一次,而且是短暂的。但是,一旦你已经使用了一个新的刷新令牌,你如何获得它呢?如果您在使用一个时获得了一个新的,那么攻击者也将能够刷新他们的令牌......


实际的问题是:如何让我的用户保持登录状态?在我使用的应用程序上,一旦我登录,我就不必再次登录:它们如何进行?

4

1 回答 1

15

一个刷新令牌只能用于刷新一次,并且只有在客户端的访问令牌过期时才会发送给认证服务器。使用刷新令牌时,身份验证服务器会返回一个新的身份验证令牌,并且可以选择返回一个新的刷新令牌。这个想法是允许使用短期访问令牌,同时允许有效的客户端重新进行身份验证而不强制用户再次登录。

如果刷新令牌被盗,则攻击者可以使用一次来获取有效的访问令牌。当客户端尝试刷新他们的令牌时,他们的刷新令牌将是陈旧的,因此将被拒绝。然后他们会要求用户再次登录,认证服务器会给他们一个新的访问令牌和刷新令牌,被盗的令牌将失效。

于 2015-10-02T16:44:42.960 回答