基于令牌的身份验证如何无状态?

信息安全 验证 jwt
2021-08-13 17:03:43

我的理解是令牌由服务器签名,每次客户端使用令牌发出请求时,服务器都会对其进行解密以获取用户信息。

我看到一些关于将此称为无状态的问题:

1) 所有用户都有一个私钥吗?如果不同,您将维护所有私钥而不是会话信息。

2)一旦服务器解密了令牌,假设解密的消息是一个 JSON blob,id,username上面有类似的字段。服务器如何知道它是否id, username存在于他们的平台上而不首先维护它?

1个回答

只有一个私钥用于签署所有令牌。所以密钥本身不是服务器状态。

是的,当然你需要一个包含用户数据的数据库,比如 ID 和用户名。但是拥有一个存储永久数据的数据库并不能使您有状态。当我们谈论无状态服务器时,我们的意思是服务器上没有存储会话状态。但当然,仍然有大量关于用户、博客文章、产品或其他内容的数据。

此外,由于令牌是由服务器签名的,因此您实际上不需要在数据库中检查每个请求的用户信息是否正确。服务器在对令牌进行签名时确保数据是正确的,然后签名对其进行验证。