我在身份验证中使用基于 token 的方法,但在许多博客中我读到他们将 token 存储在数据库中。
我们是否需要在 DB 中的基于 token 的身份验证中存储 token ?
https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authentication
在这个博客中,提到我们正在签署 token 而不是存储在数据库中,我认为这应该是实现真正无状态的方法。
最佳答案
如果您使用链接/提到的网页中描述的基于 token 的身份验证,则没有必要将 token 存储在数据库中。
您必须考虑的是,可以传输资源服务器所需的所有必需信息,以安全方式在 token 内交付请求的资源。
例如,要以安全的方式传输 userId,您还可以对 token 进行加密。如果您想确保出于安全原因某些数据永远不会离开您的数据中心,那么最好将这些数据保存在数据库中,并且 token 仅包含对存储在数据库中的用户相关数据的引用(id) - 这更多或更少在 Open ID connect 中描述的内容.
您还应该记住,将用户信息添加到 token 意味着每个请求都有额外的负载,并且可能需要更长的时间来加密/解密和签署/验证签名。
如果您打算使用无状态/无数据库的方法,您应该澄清:
即如果攻击者能够读取/(解密加密的) token ,这是否有问题?
关于authentication - 基于 token 的身份验证需要在数据库中存储 token 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30797370/