我不确定我是否完全理解正确的JWT身份验证必须如何工作的概念。我找到了一篇有关JWT身份验证的文章,作者在其中谈到:
..the token is self-contained, so the client just need to resend to the server for each request, and the server just have to check the signature to ensure its validity. No more useless call to database or LDAP.
我有点担心短语- 不再无用的数据库或LDAP调用
但是,如何检查例如User
仍然存在于系统中或User
未被禁止并且该令牌已提前过期呢?
看来我绝对需要调用数据库或LDAP才能获取此信息并将其与JWT令牌中的信息进行比较。是不是?
您是正确的,如果必须在每次调用时都进行检查,则需要查询数据库或调用授权服务器。
但关键是,JWT令牌的生存期应足够短,您不必为此担心。
如果令牌每小时过期一次,并且用户被删除或被禁止,则他/她最多只能再使用一个小时(或任何令牌生存期)访问API。然后,客户端需要续签令牌,并指出该用户不再有效。
没有查询数据库或为每个令牌验证调用服务将使您的服务扩展性更好。它还可以消除单点故障(身份验证数据库或服务关闭)。