为什么JWT是无状态身份验证?

时间:2019-04-27 14:34:48

标签: authentication oauth-2.0 jwt jwt-auth

我试图了解JWT身份验证是如何无状态的。在状态验证中,将有一个会话ID。这里有一个签名的JWT令牌。因此,认证服务器发出JWT令牌,但是我可以说,后续请求中JWT令牌的验证是由端点服务器(应用程序服务器)而不是认证服务器完成的。我相信这是可能的,因为JWT已与到期日期(以及其他一些信息)签名,并且身份验证服务器的公共证书可用于所有端点服务器。

因此,身份验证服务器将仅负责发行令牌,而不负责验证。验证将由终结点服务器完成。

我的理解正确吗? JWT变成无状态了吗?否则,我看不出它与有状态身份验证有何不同,因为两者都可以使用令牌来实现。

在状态验证中,集中式服务器将负责颁发令牌以及每个请求均进行验证。

2 个答案:

答案 0 :(得分:2)

JSON Web Tokens(JWT)被称为 stateless ,因为授权服务器不需要保持任何状态;令牌本身就是验证令牌持有者授权所需要的。

使用无法伪造的数字签名算法(例如RSA)对

JWT进行签名。因此,信任签名者证书的任何人都可以安全地信任JWT是真实的。无需服务器就可以咨询令牌发行服务器来确认其真实性。

在此图中,请注意,资源服务器不需要通过授权服务器进行回访:

Client accessing an API server 来源:https://jwt.io/introduction/

答案 1 :(得分:1)

在无状态身份验证中,无需在会话中存储用户信息。我们可以轻松地使用相同的令牌从我们登录的域以外的域中获取安全资源。

引用:https://www.jbspeakr.cc/purpose-jwt-stateless-authentication/