JWT编码的原因是什么?

rad*_*rad 7 base64 encoding jwt

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

\n

dec*_*eze 6

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

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

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

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

  2. 令编码的 JOSE 标头成为 JWT 中第一个句点 (' ') 字符之前的部分.

  3. Base64url 解码编码的 JOSE 标头,遵循不使用换行符、空格或其他附加字符的限制。

...

(所有摘录自RFC。)