Jwt 为什么客户端需要解密JWE?

Jwt 为什么客户端需要解密JWE?,jwt,jwe,jose,Jwt,Jwe,Jose,如果我使用JWE发送一条加密的JSON消息,该消息将存储在客户端,用于授权,为什么客户端需要解密该消息 客户端将JWE令牌附加到所有请求。服务器使用JWE令牌标识客户端,并响应或拒绝请求。在整个过程中,只有服务器可以解密 如果这个结构没有问题,那么实现它的最佳方法是什么?我是否应该使用非对称加密而不提供公钥(这在JWE规范中是否可能) 沿着这些思路,什么是确保JWE令牌没有被截获,虽然没有被解密,但没有附加到恶意服务器请求,从而有效地允许攻击者模拟客户端的最佳方法 还有,我还遗漏了其他安全问题吗

如果我使用JWE发送一条加密的JSON消息,该消息将存储在客户端,用于授权,为什么客户端需要解密该消息

客户端将JWE令牌附加到所有请求。服务器使用JWE令牌标识客户端,并响应或拒绝请求。在整个过程中,只有服务器可以解密

如果这个结构没有问题,那么实现它的最佳方法是什么?我是否应该使用非对称加密而不提供公钥(这在JWE规范中是否可能)

沿着这些思路,什么是确保JWE令牌没有被截获,虽然没有被解密,但没有附加到恶意服务器请求,从而有效地允许攻击者模拟客户端的最佳方法

还有,我还遗漏了其他安全问题吗

如果我使用JWE发送一条加密的JSON消息,该消息将存储在客户端,用于授权,为什么客户端需要解密该消息

当客户端需要读取JWT中包含的一些数据时,例如用户id或到期日期。并非所有情况下都需要这样做

客户端将JWE令牌附加到所有请求。服务器使用JWE令牌标识客户端,并响应或拒绝请求

是的,这是通常的授权流程

在整个过程中,只有服务器可以解密

不一定。服务器可以使用收件人的公钥对加密密钥进行加密,例如使用RSAES-OAEP。然后接收者将能够用他的私钥解密JWT

如果这个结构没有问题,那么实现它的最佳方法是什么?我是否应该使用非对称加密而不提供公钥(这在JWE规范中是否可能)

这取决于你的要求。如果您希望客户端能够解密JWT,则需要提供密钥或使用非对称加密并将消息加密给收件人

沿着这些思路,什么是确保JWE令牌没有被截获,虽然没有被解密,但没有附加到恶意服务器请求,从而有效地允许攻击者模拟客户端的最佳方法

JWT的位置是身份验证的证明。如果令牌被盗,则攻击者可以模拟用户。因此,您需要保护它以降低风险:

  • 主要使用HTTPS对通信通道进行加密

  • 将其安全地存储在客户端上


为确保消息未被截获,请使用HTTPS并锁定证书,还需要锁定服务器证书以防止MITM攻击。或者,听起来pedrofb建议我将其安全存储在客户端上,并使用HTTPS-防止攻击。如果攻击者以某种方式获得JWE令牌,则他们已获得访问期限。但是,至少在这种情况下,他们无法访问JWE令牌的内容,这正是我最初通过JWS访问JWE的原因。JWT可以进行数字签名(JWS)和/或加密(JWE)。为了避免JWT hickjacking,您应该使用加密的SSL/TLS通道。请注意,如果攻击者获得令牌,他可以使用该令牌进行身份验证,即使该令牌已加密。SSL客户端必须验证服务器的标识,以防止MITM。这是通过检查客户端信任存储中是否存在服务器证书的颁发者来完成的。证书固定是SSL连接上的一种技术,它直接将服务器证书包含在客户端信任库中,而不是根CA中。这避免了Mitthanks对您的帮助。我应该早点谢谢你哈哈。总结:你应该一直使用HTTPS并检查服务器证书。仅当您需要向客户端隐藏信息,或希望使用JWT ro交换数据安全地向收件人加密数据时,才加密JWT(不适用于您描述的授权上下文)