我试图了解 jwt 签名验证的工作原理。
这就是我目前的做法:
1) My app calls the attest api
2) My app sends the jwt to my server
3) My server verify the signature (third field of the jwt) using the certificate provided in the header of the jwt.
我知道签名是通过散列 jwt 的标头和有效负载然后使用 Google 的私钥对其进行签名(加密)来创建的。
我在第 3 步中所做的是获取标头 + 有效负载并使用证书的公钥对其进行解密并验证它是否与签名匹配。(当我说“我”时,我的意思是 lib 做到了)
我的问题是,如果用户设备上有恶意软件并即时修改发送到我的服务器的 JWT,会发生什么?恶意软件会在标头中添加自己的证书(由受信任的 CA 颁发),根据需要修改有效负载并创建签名。
我的服务器端......好吧,我将使用证书中提供的公钥验证签名,它将匹配。
这个对吗?还是我在某个地方感到困惑?因为在那种情况下,它会使这一切流程变得毫无用处,不是吗?如何确保自己 100% 相信 JWT 来自谷歌?