“令牌包含无效数量的段”

sri*_*sri 5 postman

当我尝试使用邮递员到达端点时,我看到此错误:

{
    "errors": [
        "token contains an invalid number of segments"
    ]
}
Run Code Online (Sandbox Code Playgroud)

安慰:

类型错误:无法读取未定义的属性“jwt”

Jer*_*emy 0

这个问题有点模糊,但在这种情况下 - TypeError: Cannot read property 'jwt' of undefined

应该具有属性 , 的对象jwt未定义。所以令牌本身并不存在,而应该持有它的对象也不存在。

更一般地,如果令牌格式错误,则可能会发生此错误。
它应该有 3 个部分,像这样 [用.] 分隔-

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
Run Code Online (Sandbox Code Playgroud)

这些片段中的每一个都可以通过 base64 进行解码以检查headerpayloadsignature

结果是这样的 -
来自 - https://jwt.io/ 解码的jwt

更多信息来自https://www.ibm.com/docs/en/cics-ts/6.1_beta?topic=cics-json-web-token-jwt

标头
标头通常由两部分组成:令牌的类型(JWT)和使用的算法,例如 HMAC SHA256 或 RSA SHA256。它采用 Base64Url 编码,形成 JWT 的第一部分。

有效负载
有效负载包含声明。有一组已注册的声明,例如:iss(发行者)、exp(到期时间)、sub(主题)和 aud(受众)。这些声明不是强制性的,但建议提供一组有用的、可互操作的声明。有效负载还可以包含定义自定义声明的额外属性,例如员工角色。通常,主题声明用于创建 OpenID Connect 用户主题。但是,Liberty JVM 服务器可以配置为使用替代声明。有效负载经过 Base64Url 编码以形成 JWT 的第二部分。

签名
要创建签名部分,请使用标头中的签名算法对编码标头和编码有效负载进行签名。签名用于验证 JWT 的颁发者是否是其声称的身份,并确保消息在此过程中没有更改。

有关规范的更多信息,请参见此处 -
https://datatracker.ietf.org/doc/html/rfc7519#page-7