我正在构建自己的身份验证微服务,虽然我有主设置(生成访问令牌等),但在刷新令牌时我有点不知所措。
我觉得有很多不同的方法来处理这个问题。
您可以将它们存储在redis或数据库中。
你可以使用白名单或黑名单来删除他们
现在,我的想法是添加另一个数据库表,将有效的刷新令牌链接到用户实体。当用户点击注销端点时,刷新令牌将被销毁。
我想知道这是否是一个好的解决方案,否则,如果还有其他可能的解决方案要考虑的话。我在google上看到过很多文章,但它们都来自2015年到2019年间的任何地方,而且它们都有不同的方法。
1条答案
按热度按时间cclgggtu1#
刷新令牌的问题不在于在服务器端存储它们的位置或方式,也不在于是否以及如何在客户端存储它们。
这完全取决于你是否能信任你的客户(使用令牌的软件)来保守秘密。您只希望向您可以信任的客户机颁发刷新令牌,以确保这些令牌的安全。通常,这意味着只向机密客户机(即在web服务器上运行的web应用程序)颁发刷新令牌。当使用刷新令牌时,这些客户机还可以拥有自己的(客户机)凭据来进行身份验证。
对于公共(非机密)客户机,如单页应用程序,一些oauth2库使用隐藏的iframe和与授权服务器的cookie会话来发布新的访问令牌。
所以,你的问题的答案取决于你将使用什么样的客户机。