【发布时间】:2020-08-20 18:22:52
【问题描述】:
我确定我在这里遗漏了一些非常简单的东西,但我刚刚开始学习用于身份验证的 JWT 令牌,据我了解,JWT 令牌的结构是:
Base64UrlEncode(Header) + '.' + Base64UrlEncode(Payload) + '.' + CreateSignature(Header, Payload, Secret_Key)
我的理解是您将其发送给客户端,它允许客户端在需要时将其发送回服务器。此时您解密签名以确保它没有被您的私钥篡改。
我感到困惑的部分是为什么您需要Base64UrlEncode(Header) + '.' + Base64UrlEncode(Payload) + '.' 的第一部分,那么它很容易转换回纯文本?
由于您将在服务器上对其进行解密,难道您不能只传递签名,使用您的密钥解密并读取有效负载,而其他人无法做到吗?
这似乎更安全,因为第一部分可以很容易地转换回纯文本,并向攻击者提供存储在有效负载中的信息,例如token expiration、userId 等。
我错过了什么?
【问题讨论】:
标签: security authentication jwt access-token