JWT使用非对称加密



我想问一件事,在使用非对称加密时,我们使用客户端的公钥加密数据,这样客户端就可以使用他们的私钥解密数据了,对吗?

我刚刚找到了使用RSA签名JWT的教程,但我发现它们使用服务器私钥而不是客户端的公钥加密数据,并且服务器的公钥在客户端之间共享。

它安全吗?因为如果公钥因为可共享而落入坏人之手,那么每个人都可以解密它,对吗?

那么,这样签jwt可以吗?

参考:教程1教程2

这样客户端就可以使用私钥解密数据了,对吗?

是的,在加密数据的情况下,这是正常的方式。

但在JWT的情况下,这不是加密只有接收方应该解密的东西,而是对令牌进行签名。

目标是,只有一个实例,例如身份验证服务器或通常是令牌颁发者,可以对令牌进行签名,但每个人都可以使用公钥验证签名。

因为如果公钥因为可共享而落入坏人之手,那么每个人都可以解密它,对吗?

公钥不会落入坏人之手,因为它是公共的。因此,根据定义,每个人都可以看到它。

令牌的内容(即有效载荷(不是加密的,而是基于base64url编码的,并且可以由everone读取,例如https://jwt.io.

那么,这样签署jwt可以吗?

在这种情况下,目的不是加密数据,使其他人无法读取("机密性"(,而是对数据进行签名,使其他拥有公钥的人能够验证您是否拥有私钥,以及您是否实际签署了数据。本例中的数据是JWT头和有效负载的散列。私钥用于签名,因此只有一个实体(身份验证服务器(可以对JWT进行签名。公钥用于签名验证,因此任何拥有公钥的第三方都可以验证JWT。公钥不能用于创建有效的签名。

所以是的,它是安全的!

最新更新