Encoding 编码JWT的原因是什么?

Encoding 编码JWT的原因是什么?,encoding,base64,jwt,Encoding,Base64,Jwt,就我所知,关于JWT的安全性,如果JWT令牌不包含敏感信息,我们只使用其签名功能,以便其内容不能被操纵。否则,如果它包含敏感数据,则可以对其进行加密,以防止数据被嗅探。此外,如果需要,也可以使用这两种方法。 然而,我无法理解的是,为什么令牌不是一个简单的json?为什么它是编码的,而它可以很容易地解码?它是出于安全原因还是有其他原因? 我在网上搜索了一下,也快速浏览了一下,但找不到任何清晰而令人信服的答案。主要是为了简化JWT的处理 JWT表示为URL安全部分的序列,由句点(“”)字符分隔。每个

就我所知,关于JWT的安全性,如果JWT令牌不包含敏感信息,我们只使用其签名功能,以便其内容不能被操纵。否则,如果它包含敏感数据,则可以对其进行加密,以防止数据被嗅探。此外,如果需要,也可以使用这两种方法。
然而,我无法理解的是,为什么令牌不是一个简单的json?为什么它是编码的,而它可以很容易地解码?它是出于安全原因还是有其他原因?

我在网上搜索了一下,也快速浏览了一下,但找不到任何清晰而令人信服的答案。

主要是为了简化JWT的处理

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

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

  • 验证JWT是否至少包含一个句点(“
    ”)字符

  • 让编码的JOSE头成为JWT第一个句点(“
    ”)字符之前的部分

  • Base64url按照未使用换行符、空格或其他附加字符的限制对编码的JOSE标头进行解码

  • (全部摘录自)