只需了解JOSE,我就会知道JWE用于加密,而JWS用于签名。我似乎无法找到示例的是经过加密和签名的有效负载。
假装我有一个有效载荷hello world
。做这样的事情是正确的吗? JWS(JWE('hello world')
使用加密的JWE作为JWS的有效载荷?
答案 0 :(得分:4)
JSON Web Token(JWT)是一个开放标准,它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。 JWT是以下标记类型的通用名称:
JSON Web Signature(JWS):有效载荷经过了编码和签名,因此可以验证声明的完整性。
< / li>JSON Web Encryption(JWE):它们的有效载荷是加密的,因此声明被其他方隐藏。
图像是从此page中提取的。
做这样的事情正确吗?
JWS(JWE('hello world')
使用加密的JWE作为JWS的有效载荷?
这是一个嵌套JWT ,其概念在RFC 7519中定义:
其中采用了嵌套签名和/或加密的JWT。在 嵌套的JWT,将JWT用作 分别封装了JWS或JWE结构。
您可以可以添加一个JWE作为JWS有效负载的声明,但是建议采用另一种方法:首先对消息签名,然后对结果进行加密,如上所述在同一文档中:
11.2. Signing and Encryption Order
从语法上讲嵌套的签名和加密操作 JWT 可以以任何顺序应用,只要签名和加密都可以 必要时,通常生产者应该在消息上签名,然后 加密结果(从而加密签名)。这样可以防止 剥夺签名的攻击,仅留下加密的 消息,以及为签名者提供隐私。此外, 在许多情况下,加密文本上的签名被认为无效 司法管辖区。