mik*_*dev 9 security api authorization access-token jwt
我正在尝试实现身份验证令牌系统,因此我想知道使用JSON Web加密(JWE)或JSON Web签名(JWS)的优缺点,以及是否有意义使用它们(JWS内部的JWE) ).
Ama*_*man 22
JSON Web签名(JWS)声明使用签名进行签名,该签名可由服务器使用秘密签名密钥进行验证.这可以确保在客户端和服务器之间传递声明时没有调整声明.JWS令牌的内容是Base64编码的,未加密(请记住编码与加密不同!).Base64编码数据看起来是加密的,因为它看起来像垃圾文本,但实际上很容易变回可读数据.因此,始终建议不要在JWT中包含任何敏感信息.建议仅在希望在双方之间(或客户端和服务器之间)交换信息时使用JWT,并且不会将敏感数据作为有效负载传递到令牌中.
但是,如果您想在令牌中包含任何私人信息,该怎么办?您不希望敏感信息出现在只有Base64编码的令牌中,任何攻击者都可以轻松解码.幸运的是,有一种方法可以使用另一种更加安全的保护级别(称为JSON Web加密(JWE))来加密和保护声明数据.它定义了一种加密索赔数据的方法(基本上是基于JSON的数据结构),这样只有预期的接收者才能读取令牌中存在的信息.
处理Web令牌的最佳方法是:
我们有几个可用的Java库,可以加密你的JSON Web令牌:
上述两个库都是JWT和JOSE(Javascript Object Signing and Encryption)规范套件的开源(Apache 2.0)实现.他们都是高质量的图书馆,你不能真正做出错误的选择.但是,JWT.IO有一个很好的UI来显示每个可用库的差异.
JWS用于签名数据,使其受到完整性保护,这意味着:
JWE用于加密数据并使其具有完整性保护
JWS和JWE之间的目标是不同的.JWS用于签署声明,JWE用于传输敏感数据.
如果要实现身份验证系统,则必须使用JWS来验证声明的真实性.
如果JWS中的某些声明包含敏感信息,您还可以使用JWE加密JWS.
但在你的上下文中只使用JWE是没有意义的.
| 归档时间: |
|
| 查看次数: |
11131 次 |
| 最近记录: |