对于我的项目,我正在实施使用Bearer令牌的OAuth2身份验证框架。
从快速搜索来看,JWT令牌看起来是今天Bearer令牌的主流选择。
如果我使用不对任何信息进行编码的“哑”令牌,我会将此令牌与所有相关参数(令牌的用户,发布日期,到期日期等)一起存储在数据库中。
从JWT的文档中我了解到我可以通过实现此流程来避免这种开销:
加密步骤是可取的,因为我不想宣传用户ID。
我的理解是,如果我使用上述方法,我可以避免存储访问令牌和用户之间的映射,并完全依赖于令牌提供的用户ID信息。
这种方法令我感到不安的是,看起来我不会选择“撤销”访问令牌。
换句话说 - 即使访问令牌会受到损害,我也无法禁用它(除非我知道确切的受损令牌,但事实并非如此)。
这是一个真正令人担忧的问题,还是我只是缺少一些东西?如果这个问题是真的,我该如何解决呢?
答案 0 :(得分:1)
访问令牌是自包含的,只要到期时间有效,它就是有效的。在实际规范中没有关于使它们无效的规范。根据您需要的安全级别,您可以调整令牌的验证时间,从较少的分钟到小时。通常,验证时间设置为一小时。
如果您需要更高级别的安全性,可以使用参考标记。参考标记不包含任何信息,它们是简单的字符串。但是,服务器(或使用这些令牌的任何人)必须联系令牌提供者以交换参考令牌以获得实际的响应内容。但是,如果这些令牌受到损害,则可以撤销这些令牌。
请参阅此link以获取更多信息以及有关如何克服参考令牌的某些缺点的一些建议(例如反向通道通信/令牌提供商的额外往返)。如果您有任何问题,请与我们联系。
-Soma。