当前位置: 首页 > 知识库问答 >
问题:

jwt web令牌应该加密吗?

胡锋
2023-03-14

我正在阅读关于JWT Web令牌作为响应用户的访问令牌的文章。其中一些提到Web令牌应该能够被用户解码。

这是否意味着解密整个web令牌不是一个好的做法?例如,我假设将下面的JWT web令牌返回给用户,在那里可以对这段信息进行解码。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

但是,我觉得我不想让用户能够解码他/她的访问令牌,所以我使用另一种加密算法将所有内容加密为另一种形式,如下所示并传回给用户。

所以,当我在服务器中得到这个访问令牌并解码它时,我会解密这个新文本。

如果我不希望向用户公开声明中的某些可用值(例如用户 ID),是否建议这样做?如果没有,还有什么替代方案?

共有3个答案

汪德寿
2023-03-14

令牌包含用户数据,其作用类似于临时存储。将敏感数据存储在令牌中是不好的。

在第一层,您应该存储用户名,也许还有角色之类的东西。您不应该包含密码,因此不需要对其进行加密。尽管如此,如果您愿意,您可以对其进行加密。

赏开宇
2023-03-14

JWT是“签名的”,因此其内容不会被篡改:您不能在不使其无效的情况下更改其内容。

您可以选择“加密”内容,从而使它们仅对发行者(创建令牌的实体)和消费者(验证后将使用其内容的实体)可见。

这是有标准的:JWE

牧信厚
2023-03-14

JWT (RFC7519)只是一种通过HTTP将声明从发行者安全传输到受众的简洁方法。

JWT可以是:

    < li >已签署(JWS - RFC7515) < li >加密的(JWE - RFC7516) < li >先签名后加密(强烈建议采用此顺序)。整个JWS是JWE的有效载荷 < li >加密然后签名。

如果您想对持有者(客户端)或第三方隐藏敏感信息,则加密JWS是有意义的。

真正的问题是:观众是否支持JWE?如果是,支持哪些算法?

 类似资料:
  • 我们正在使用JWT Nuget来创建和验证令牌。下面是我们用来创建令牌的代码 我的理解是,这不会加密令牌,因为我能够通过访问jwt.io解析令牌,并且能够读取内容。我想加密令牌,这样它就不应该被解析。我在JWT Nuget中找不到任何可以加密令牌的方法。 那么如何使用JWT nuget对令牌进行签名和加密呢? 编辑: 我知道JWT不需要任何加密,因为只有经过身份验证的用户才能读取令牌,这意味着,我

  • 我正在使用php saml工具包https://github.com/onelogin/php-saml在web应用程序中实现SSO。身份验证本身可以工作,但当我与拦截代理进行检查时https://portswigger.net/burp/communitydownloadsaml标记以清晰的形式显示(作为xml,带有用户名以及为身份验证传递的所有信息)。在连接器和设置中https://githu

  • 问题内容: 为了生成用于访问我们的API的32个字符的令牌,我们目前使用: 我已经读到,这种方法不是基于密码的安全性,因为它基于系统时钟,这将是一个更好的解决方案,因为它很难预测。 如果是这种情况,等效代码将是什么样? 我猜是这样的,但是我不知道这是否对… 我应该传递给函数什么长度也有意义? 问题答案: 这是正确的解决方案:

  • 我正在使用vue.js和vuex开发一个应用程序,它使用JWT令牌对JSON API服务器进行身份验证。所以我想知道存放JWT代币的最佳做法是什么? 如果我将其存储在vuex商店中,则页面刷新后它会丢失,因此用户需要再次登录,这不是很方便。 如果我将其存储在浏览器的本地存储中,它会在下次登录之前被弃用,然后假设身份验证令牌的组件会混淆。我不知道如何处理这个问题。 感谢你对此的暗示。

  • 问题内容: 我正在使用Apache Oltu框架实现OAuth 2.0提供程序服务器,以寻找有关如何在Java中生成访问令牌和秘密令牌的想法。请指教。 问题答案: OAuth 2.0 规范并未说明如何生成令牌和秘密令牌。因此,由您决定是使用一些现有的/锚定数据来生成令牌,还是要使用随机序列来生成令牌。唯一的区别是,如果您使用大概已知的数据(例如,用户数据,例如用户名,创建日期等),则可以在需要时随

  • 问题内容: 我正在使用ExpressJS,Mongodb(Mogoose)构建应用程序。应用程序包含访问用户之前必须对其进行身份验证的路由。 目前,我已经编写了一个快速的中间件来做同样的事情。在这里,借助JWT令牌,我正在进行mongodb查询以检查用户是否已通过身份验证。但是感觉这可能会在我的数据库上增加不必要的请求负载。 我应该针对此特定任务集成redis吗? 会改善API性能吗?还是应该继续