2

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

客户端将 JWE 令牌附加到所有请求。服务器使用 JWE 令牌识别客户端并响应或拒绝请求。自始至终,只有服务器可以解密。

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

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

另外,我还缺少其他安全问题吗?

4

1 回答 1

3

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

当客户端需要读取 JWT 中包含的一些数据时,例如用户 id 或过期日期。这不是在所有情况下都需要的。

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

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

自始至终,只有服务器可以解密。

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

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

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

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

拥有 JWT 是身份验证的证明。如果令牌被盗,则攻击者可以冒充用户。所以你需要保护它以降低风险:

  • 主要使用HTTPS加密通信通道

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

于 2017-07-18T16:57:23.157 回答