Security 何时应该实现刷新令牌以及如何保持无状态?
我正在实施一个认证系统。 系统当前使用JWT运行,并且没有刷新令牌。 为了让用户在合理的时间内保持登录,我们决定将令牌的过期时间设置为12小时。 我看到建议的过期时间是15分钟 我的第一个问题是,是否每个想让用户登录超过15分钟的应用程序都需要实现刷新令牌? 如果是,撤销是唯一的原因,还是安全方式(将刷新令牌保存在httponly cookie中,并将JWT保存在内存中,而不是在cookie中公开令牌)也是一个原因 当我寻找刷新令牌的优势时,我主要看到人们谈论的是撤销,并将安全方式作为刷新令牌的实现细节,而不是优势。 但据我所知,这也是刷新令牌的优点之一 我没有找到没有刷新令牌的JWT的过期时间标准。我想知道这是否是因为从安全角度来看,在大型系统中不实现刷新令牌太危险了 我的第二个问题是,是否可以通过将身份声明添加到刷新令牌中(这样我就可以生成一个新的JWT而不需要点击DB)并放弃撤销,从而实现刷新令牌并保持无状态?这是一个安全漏洞吗 在我看到的所有刷新令牌的实现示例中,我从未看到过无状态的,因为它们都希望启用撤销Security 何时应该实现刷新令牌以及如何保持无状态?,security,authentication,jwt,refresh-token,stateless,Security,Authentication,Jwt,Refresh Token,Stateless,我正在实施一个认证系统。 系统当前使用JWT运行,并且没有刷新令牌。 为了让用户在合理的时间内保持登录,我们决定将令牌的过期时间设置为12小时。 我看到建议的过期时间是15分钟 我的第一个问题是,是否每个想让用户登录超过15分钟的应用程序都需要实现刷新令牌? 如果是,撤销是唯一的原因,还是安全方式(将刷新令牌保存在httponly cookie中,并将JWT保存在内存中,而不是在cookie中公开令牌)也是一个原因 当我寻找刷新令牌的优势时,我主要看到人们谈论的是撤销,并将安全方式作为刷新令牌的
我的第三个问题是,如果我没有实现撤销令牌的选项,除了我在第一个问题中提到的安全优势之外,是否有理由使用刷新令牌,而不仅仅是在每次系统收到请求时创建一个具有新过期时间的新JWT?关于您的问题:
关于你的问题:
只有当您能够以不同于访问令牌的方式保护刷新令牌时,使用刷新令牌才有意义。如果它们在客户端上存储相同,则没有什么好处(有一些与TLS漏洞相关,但可能不太支持实现单独的刷新令牌) 因此,这就是刷新令牌通常存储在仅http cookie中的原因,因此它受到XSS的保护。访问令牌也可以以这种方式存储,但这样您就无法将其发送到不同的来源 撤销是另一个问题。您不能撤销