【问题标题】:What is the reason for encoding JWT?编码 JWT 的原因是什么?
【发布时间】:2019-07-27 21:15:09
【问题描述】:

据我所知,关于 JWT 的安全性,如果 JWT 令牌不包含敏感信息,我们只使用其签名功能,使其内容无法被操纵。否则,如果它包含敏感数据,则可以对其进行加密以防止数据被嗅探。此外,如果需要,两者都可以使用。
但是,我无法理解的是为什么令牌不是普通的 json?为什么它可以被编码,而它可以很容易地解码?是出于安全原因还是背后有其他原因?
我在网上搜了一下,也快速浏览了RFC 7519,但没有找到任何明确而令人信服的答案。

【问题讨论】:

    标签: encoding base64 jwt


    【解决方案1】:

    主要是为了简化 JWT 的处理。

    JWT 表示为一系列 URL 安全部分,由句点 ('.') 字符分隔。每个部分都包含一个 base64url 编码的值。

    这确保了 a) 整个令牌是 URL 安全的,这简化了主要用于 web 上下文的技术; b) 使处理“零件”变得容易,因为零件分隔符 ('.') 保证不会出现在零件本身内部。如果它是纯 JSON,则句点可能位于编码值本身的任何位置,您需要应用更复杂的 JSON 感知解析来查找单独的部分。但是由于是base64url编码,保证部分不能包含句点,解析算法很简单:

    1. 验证 JWT 是否包含至少一个句点 ('.') 字符。

    2. 让 Encoded JOSE Header 成为 JWT 在第一个句点 ('.') 字符之前的部分。

    3. Base64url 在未使用换行符、空格或其他附加字符的限制后对编码的 JOSE 标头进行解码。

    ...

    (所有摘自the RFC。)

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 2012-10-22
      • 2016-08-28
      • 2016-09-01
      • 2011-12-04
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      相关资源
      最近更新 更多