【问题标题】:"token contains an invalid number of segments"“令牌包含无效的段数”
【发布时间】:2022-05-08 19:00:24
【问题描述】:

我在尝试使用邮递员访问端点时看到此错误:

{
    "errors": [
        "token contains an invalid number of segments"
    ]
}

控制台:

TypeError: 无法读取未定义的属性“jwt”

【问题讨论】:

  • 你是如何生成令牌的?
  • 我们公司有一些内部服务,通过它我们得到令牌
  • 我怀疑您的令牌无效 - 您可以将其粘贴到此处:jwt.io 进行验证

标签: postman


【解决方案1】:

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

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

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

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

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

这会导致 -
来自-https://jwt.io/

更多信息来自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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2018-04-09
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多