我正在阅读关于JWT网络令牌的文章作为正在响应用户的访问令牌。其中一些提到网络令牌应该能够被用户解码。
这是否意味着解密整个网络令牌不是一个好习惯?例如,我想将以下JWT Web令牌返回给用户,在那里可以解码这条信息。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
但是,我觉得我不想让用户能够解码他/她的访问令牌,因此我使用另一种加密算法将所有内容加密到另一种形式,如下所示并传回给用户。
所以,当我在服务器中获取此访问令牌并解码时,我会解密这个新文本。
如果我不希望向用户公开声明中的某些可用值(例如用户ID),是否建议这样做?如果没有,有哪些替代方案?
答案 0 :(得分:15)
JWT(RFC7519)只是一种通过HTTP安全地将发布者的声明传送给受众的紧凑方式。
JWT可以是:
如果您希望将敏感信息隐藏在承载(客户端)或第三方之外,那么加密JWS是有意义的。
真正的问题是:观众是否支持JWE?如果是,支持哪些算法?
答案 1 :(得分:3)
JWT已“签名”,因此其内容受到保护,不会被篡改:您无法在不使其无效的情况下更改其内容。
您可以选择“加密”内容,因此只将它们显示给发行者(创建令牌的实体)和消费者(在验证后注定要使用其内容的实体)。
有一个标准:JWE
答案 2 :(得分:0)
令牌包含用户数据,其行为类似于临时存储。用令牌存储敏感数据不是很好。
在第一级,您应该存储用户名以及角色或类似名称。您不应包含密码,因此不需要加密。 不过,您可以根据需要对其进行加密。