我了解 JWT 是安全的。但只是想知道一些我无法理解的概念。
假设身份验证服务器“A”将签名令牌发送到应用程序服务器。如果我没记错的话,签名是由服务器“A”上的私钥完成的。现在应用服务器可以解密令牌并使用公钥验证信息。我还读到 JWT 是自包含的,它包含数据和签名。
我看到的一些示例在验证时没有使用任何安全密钥。如果我没记错的话,RS256 不需要任何特定的密钥,我假设它将使用公共证书来解密。
我的查询是,如果 JWT 是自包含的,为什么不能在两者之间更改数据。
例如假设服务器“A”发送以下信息
header.user1email.signature
如果黑客将数据替换为
header.user2email.signature
用他自己的私钥,怎么可能是有效数据?如何确定它来自服务器“A”?
我知道这里缺少一些基础知识,请帮忙?