Java 在JWT身份验证设置中,处理刷新令牌的最具可扩展性/安全性的方法是什么?
我正在构建自己的身份验证微服务,尽管我有主设置(生成访问令牌等),但在刷新令牌时我有点不知所措 我觉得有很多不同的方法来处理这个问题Java 在JWT身份验证设置中,处理刷新令牌的最具可扩展性/安全性的方法是什么?,java,node.js,authentication,redis,jwt,Java,Node.js,Authentication,Redis,Jwt,我正在构建自己的身份验证微服务,尽管我有主设置(生成访问令牌等),但在刷新令牌时我有点不知所措 我觉得有很多不同的方法来处理这个问题 您可以将它们存储在Redis或数据库中 您可以使用白名单或黑名单来删除它们 现在,我的想法是添加另一个数据库表,将有效的刷新令牌链接到用户实体。当用户点击注销端点时,刷新令牌将被销毁 我想知道这是否是一个好的解决方案,否则,如果还有其他可能的解决方案要考虑。我在谷歌上看到过很多文章,但它们都来自2015年到2019年间的任何地方,而且它们都有不同的方法。刷新令
- 您可以将它们存储在Redis或数据库中
- 您可以使用白名单或黑名单来删除它们
我想知道这是否是一个好的解决方案,否则,如果还有其他可能的解决方案要考虑。我在谷歌上看到过很多文章,但它们都来自2015年到2019年间的任何地方,而且它们都有不同的方法。刷新令牌的问题不在于在服务器端存储它们的位置或方式,也不在于是否以及如何在客户端存储它们 这完全取决于您是否可以信任您的客户(使用令牌的软件)来保守秘密。您只希望向可以信任的客户机颁发刷新令牌,以确保这些令牌的安全。通常,这意味着只向运行在web服务器上的web应用程序发出刷新令牌。当使用刷新令牌时,这些客户机还可以拥有自己的(客户机)凭据以进行身份验证 对于公共(非机密)客户端,如单页应用程序,一些OAuth2库使用隐藏的IFRAME和与授权服务器的cookie会话来发布新的访问令牌
因此,您的问题的答案取决于您将使用哪种类型的客户端。刷新令牌的问题不在于您在服务器端存储它们的位置或方式,也不在于您是否以及如何在客户端存储它们 这完全取决于您是否可以信任您的客户(使用令牌的软件)来保守秘密。您只希望向可以信任的客户机颁发刷新令牌,以确保这些令牌的安全。通常,这意味着只向运行在web服务器上的web应用程序发出刷新令牌。当使用刷新令牌时,这些客户机还可以拥有自己的(客户机)凭据以进行身份验证 对于公共(非机密)客户端,如单页应用程序,一些OAuth2库使用隐藏的IFRAME和与授权服务器的cookie会话来发布新的访问令牌 因此,您的问题的答案取决于您将使用哪种类型的客户机