我正在阅读有关JWT Web令牌的文章作为响应用户的访问令牌.其中一些提到网络令牌应该能够由用户解码.
这是否意味着解密整个Web令牌不是一个好习惯?例如,我想将以下JWT Web令牌返回给用户,在这里可以解码这条信息.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
但是,我觉得我不想让用户能够解码他/她的访问令牌,因此我使用另一种加密算法将所有内容加密到另一种形式,如下所示并传回给用户.
因此,当我在服务器中获取此访问令牌并对其进行解码时,我会解密此新文本.
如果我不希望向用户公开声明中的某些可用值(例如用户ID),是否建议以这种方式执行此操作?如果没有,有哪些替代方案?
JWT(RFC7519)只是一种通过HTTP安全地将发布者的声明传输给受众的紧凑方式.
JWT可以是:
签名(JWS - RFC7515)
加密(JWE - RFC7516)
签名然后加密(强烈建议这个顺序).整个JWS是JWE的有效载荷
加密然后签名.
如果要保护敏感信息对承载(客户端)或第三方隐藏,则加密JWS是有意义的.
真正的问题是:观众是否支持JWE?如果是,支持哪些算法?
JWT是“已签名”的,因此可以保护其内容免遭篡改:您不能在不使它们无效的情况下更改其内容。
您可以选择“加密”内容,从而使它们仅对发行者(创建令牌的实体)和使用者(在验证后将要使用其内容的实体)可见。
有一个标准:JWE