encryption - jwt Web token 应该加密吗?

标签 encryption asp.net-web-api oauth oauth-2.0 jwt

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

这是否意味着解密整个Web token 不是一个好习惯?例如,我假设将以下JWT Web token 返回给用户,在此用户中可以解码此信息。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

但是,我觉得我不想让用户能够解码他/她的访问 token ,因此我使用另一种加密算法将所有内容加密为另一种形式,如下所示,然后再传递给用户。

因此,当我在服务器中获得此访问 token 并对其进行解码时,我将解密此新文本。

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

最佳答案

JWT(RFC7519)只是一种紧凑的方式,可以通过HTTP将声明从发行者安全地传输给受众。

JWT可以是:

  • 签名(JWS-RFC7515)
  • 加密(JWE-RFC7516)
  • 签名然后加密(this order is highly recommended)。整个JWS是JWE的有效载荷
  • 加密然后签名。

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

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

    关于encryption - jwt Web token 应该加密吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34235875/

    相关文章:

    perl - 从 Perl 中的字符串执行整个 Perl 程序

    c# - Simple.OData.Client 错误 : No property or association found for Context

    asp.net-web-api - 什么将 WCF Web API 中的 HttpOperationHandler 替换为 ASP.NET Web API

    authentication - 绕过经过身份验证的 XmlHttpRequest 的同源策略

    api - 请求的身份验证凭据无效。云语音 api 中预期出现 OAuth 2 访问 token 错误

    java - 当我使用 AES 加密或解密文件时,文件末尾有奇怪的字符,这可能是缓冲区问题还是 AES 问题?

    Android - 如何从指纹认证中获取唯一 key ?

    javascript - 发布有限的 GitHub API 个人 token

    c# - 来自 Java 的 C# 中的 Blowfish

    c# - Asp.Net 核心 WebApi : Authorize attribute Error 403