首先,让我解释你我想做的事:
让我想鲍勃想获得Alis的授权(经典示例),在我的示例中Alis是服务器。
也让我们想像鲍勃和阿里斯已经获得了每个RSA密钥(4096)。
所以Bobs要做的是:
所以Alis会从相反的方向开始进行操作,以解密它并从Bob验证它。
[Alis验证了其Bob后,她生成了一个JWT令牌,并用她的私钥对其进行了签名,并在响应标头授权中将其返回。
JWT从3600获得TTL。
到目前为止,还不错,但是我的问题是,现在我们如何保护JWT不被盗用?
请确保已签名,因此无法对其进行修改(除非攻击者从服务器获得了私钥,但我的天哪,无论如何它还是过去了。
让他想象一下,他有能力破解HTTPS并窃取令牌,并将其放在标头中,这样他就可以欺骗Alis相信他,直到其Expire,然后他需要再次发送Credits。
我正在考虑两个选项:
选项1:始终发送信用并解密以验证Bob。
但是每次请求都会花费巨大的性能,并且JWT的收益会丢失。
选项2:发送唯一的ID并从Bobs设备确认它(已加密,所以同样的问题,如选项1)
我们可以做什么来保护它?
也许我一如既往地想得太多,但是我真的很想知道在那种情况下什么是“最佳实践”。
已经感谢您对您的回答
嗯,如果爱丽丝不确定谁在发送请求,那么鲍勃也是如此,所以这是一个双向问题,没人可以确定另一个人的身份,您可以使用来自证书颁发机构。在发送带有签名的证书的位置,并使用证书颁发机构(第三方)的私钥对证书进行签名,以确保客户端服务器之间的连接安全并防止任何修改。