验证使用JSON Web加密(JWE)加密的安全令牌的颁发者



我一直在阅读JSON Web加密(JWE)规范,最新的草案是08,因为我们正在考虑在我们的身份验证服务器中支持JSON Web令牌(JWT)。

使用它定义的非对称加密方法,使用接收方公钥对对称密钥(内容主密钥)进行加密。这是有意义的,因为只有接收方可以解密它,并确保令牌是为他们准备的。

通常我也希望看到一些东西来证明中的令牌是谁,例如使用发行者的私钥创建的签名,可以使用他们的公钥进行验证。然而,签名似乎也来自内容主密钥或接收方的公钥,没有提到发行者的私钥。

如果没有这个,在我看来-只要预期的令牌格式是已知的-任何拥有接收者公钥的人(即任何人)都可以生成有效的令牌;不只是一个可信的身份验证服务器。

我不是密码学专家(远不是),所以我肯定我在这里错过了一些东西。接收方如何验证非对称加密令牌是否来自受信任的颁发者?

考虑到JSON Web签名(JWS)规范确实定义了使用发行者的私钥并可以用其公钥进行验证的签名,我想知道JWE令牌的有效载荷是否应该是JWS令牌?

JWT当然允许嵌套的有效负载。事实上,在规范中有一个具体的引用,其中cty (content-type)头参数可以设置为JWT,以表明有效负载实际上是另一个JWT。

因此,您很可能会创建一个JWE并将其封装在JWS中,并使用您的私钥签名。这似乎也是这个帖子在JOSE邮件列表中得出的结论(或者至少是一个解决方案)。还有一个关于减少有效载荷大小的相关线程。一般来说,这个邮件列表可能值得关注,因为它是规范背后的人出没的地方。

最新更新