我正在尝试实现一个身份验证令牌系统,所以我想知道使用JSON Web Encryption ( JWE )或JSON Web Signature (JWS)的优缺点,以及同时使用两者(JWS中的JWE)是否有意义。
发布于 2016-04-09 07:41:35
JWS JSON Web Signature (JWS)声明使用可由服务器使用秘密签名密钥验证的签名进行签名。这可以确保声明在客户端和服务器之间传递时不会被篡改。JWS令牌的内容是Base64编码的,没有加密(请记住,编码不同于加密!)Base64编码的数据看起来是加密的,因为它看起来像垃圾文本,但实际上将其转换回可读数据是微不足道的。因此,始终建议不要在JWT中存储任何敏感信息。只有当您希望在两方之间(或在客户端和服务器之间)交换信息,并且没有敏感数据作为令牌中的有效负载传递时,才建议使用JWT。
但是,如果您想在令牌中包含任何私有信息,该怎么办呢?您不希望您的敏感信息出现在一个只能由任何攻击者轻松解码的Base64编码的令牌中。幸运的是,有一种方法可以使用另一种更安全的保护级别JSON Web Encryption (JWE)来加密和保护索赔数据。它定义了一种加密索赔数据(基本上是基于JSON的数据结构)的方法,以便只有预期的接收者可以读取令牌中存在的信息。
处理web令牌的最佳方法是
对它进行签名,以便大家都知道该令牌来自
我们在Java中有几个很好的库,可以加密您的JSON Web令牌:
上述两个库都是JWT和JOSE (Javascript对象签名和加密)规范套件的开源(Apache2.0)实现。它们都是高质量的库,你不能真的做出错误的选择。但是,JWT.IO有一个漂亮的UI来显示每个可用库的不同之处。
发布于 2018-07-19 02:10:16
JWS用于对数据进行签名,使其受到完整性保护,这意味着:
JWE用于加密数据并使其受到完整性保护
发布于 2015-11-08 22:54:13
JWS和JWE的目标是不同的。JWS用于签署声明,JWE用于传输敏感数据。
如果要实现身份验证系统,则必须使用JWS来验证声明的真实性。
如果JWS中的某些声明包含敏感信息,也可以使用JWE对JWS进行加密。
但在您的上下文中,仅使用JWE是毫无意义的。
https://stackoverflow.com/questions/33589353
复制相似问题