10

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

因此身份验证服务器将只负责发布令牌而不是验证。验证将由端点服务器完成。

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

在有状态身份验证中,中央服务器将负责发布令牌以及验证每个请求。

4

2 回答 2

16

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

JWT使用无法伪造的数字签名算法(例如 RSA)进行签名因此,任何信任签名者证书的人都可以放心地相信 JWT 是真实的。服务器无需咨询令牌发行服务器来确认其真实性。

请注意,在此图中,资源服务器不需要与授权服务器进行核对:

客户端访问 API 服务器 来源:https ://jwt.io/introduction/

于 2019-04-28T06:47:49.620 回答
4

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

参考:https ://www.jbspeakr.cc/ purpose-jwt-stateless-authentication/

于 2019-04-28T06:50:22.797 回答