【问题标题】:Sending JWT token in the headers with Postman使用 Postman 在标头中发送 JWT 令牌
【发布时间】:2014-09-02 19:12:02
【问题描述】:

我正在测试基于以下article 的基于 JWT 令牌的安全性的实现。我已成功收到来自测试服务器的令牌。我不知道如何让 Chrome POSTMAN REST 客户端程序在标头中发送令牌。

我的问题如下:

1) 我是否使用了正确的标题名称和/或 POSTMAN 接口?

2) 我需要对令牌进行 base 64 编码吗?我想我可以把令牌寄回去。

【问题讨论】:

  • 您好,我在 POSTMAN 中哪里可以看到我收到的 jwt 令牌?
  • @MLondei,这取决于接收服务器的配置方式。它可以作为 URL 返回(在 URL 字符串中找到),也可以在响应正文中返回(在响应的正文字段中找到)。这是我所知道的两个主要的。

标签: express jwt postman


【解决方案1】:

对于请求头名称只需使用授权。 将 Bearer 放在 Token 之前。我刚刚试了一下,它对我有用。

授权:不记名 TOKEN_STRING

JWT 的每一部分都是一个 base64url 编码的值。

【讨论】:

  • 澄清一下,“Header”字段变为 Authorization,“Value”字段变为 Bearer[WHITESPACE]
  • 你知道字段的哪一部分被加密了吗?看来数据就在最后一个“。”之后。分隔符给了我看起来像垃圾字符的东西。我假设这实际上是由令牌生成器加密的信息?
  • 查看jwt.io。您可以在其中粘贴 JWT 并查看其解码内容,这是查看发生情况的最佳方式。服务器机密字符串用于制作令牌的最后一部分。 JWT 仅对不加密的有效负载进行签名,即您可以解码字符串的第 1 部分和第 2 部分,但如果没有秘密,则无法对其进行验证。 self-issued.info/docs/draft-ietf-oauth-json-web-token.html
  • 有人可以详细说明为什么我们需要将 Bearer 放在 JWT 之前吗?这是向服务器发出的某种信号,表明这是 JWT?
  • 这只是惯例 - 您可以在此处找到所有详细信息:jwt.io/introduction
【解决方案2】:

如果有帮助,这里是一张图片:)

更新:

邮递员团队在“授权标签”中添加了“Bearer token”:

【讨论】:

    【解决方案3】:

    我在这个问题上添加了一个有趣的提示,可以帮助你们测试 JWT API。

    其实很简单。

    当您登录时,在您的 Api(登录端点)中,您将立即收到您的令牌,正如 @mick-cullen 所说,您将不得不在您的标头上使用 JWT:

    Authorization: Bearer TOKEN_STRING
    

    现在,如果您希望自动化或只是让您的生活更轻松,您可以将测试保存为全局令牌,您可以在所有其他端点上调用它:

    Authorization: Bearer {{jwt_token}}
    

    关于邮递员: 然后在 postman 中创建一个全局变量为 jwt_token = TOKEN_STRING。

    在您的登录端点上: 为了使其有用,请在“测试”选项卡的开头添加:

    var data = JSON.parse(responseBody);
    postman.clearGlobalVariable("jwt_token");
    postman.setGlobalVariable("jwt_token", data.jwt_token);
    

    我猜你的 api 在响应中将令牌作为 json 返回为: {"jwt_token":"TOKEN_STRING"},可能会有某种变化。

    在第一行添加对数据变量的响应。 清洁您的全球 并赋值。

    所以现在您的令牌在全局变量上,这使得在您的所有端点上都易于使用 Authorization: Bearer {{jwt_token}}。

    希望这个提示对您有所帮助。


    编辑
    有什么要读的

    关于 Postman 的测试:testing examples

    命令行:Newman

    CI:integrating with Jenkins

    不错的博文:master api test automation

    【讨论】:

    【解决方案4】:

    这是自动设置令牌的方法

    在您的登录/身份验证请求中

    然后是认证页面

    【讨论】:

      【解决方案5】:

      我在Flask 中遇到了同样的问题,在尝试了前两个相同的解决方案 (Authorization: Bearer <token>) 之后,得到了这个:

      {
          "description": "Unsupported authorization type",
          "error": "Invalid JWT header",
          "status_code": 401
      }
      

      我终于通过以下方法解决了这个问题:

      Authorization: jwt <token>
      

      认为这可能会为遇到同样事情的人节省一些时间。

      【讨论】:

      • 我使用Bearer &lt;token&gt;django 中获得了Authentication credentials were not provided。用jwt &lt;token&gt; 解决。感谢您的解决方案
      【解决方案6】:

      如果你想使用邮递员,正确的方法是使用标题

      key:授权

      值:jwt {token}

      就这么简单。

      【讨论】:

        【解决方案7】:
        1. 打开邮递员。
        2. 转到“标题”字段。
        3. 可以看到“键值”空白。
        4. 在密钥类型“授权”中。
        5. 值类型为“Bearer(space)your_access_token_value”。

        完成!

        【讨论】:

          【解决方案8】:

          对于使用wordpress插件Advanced Access Manager打开JWT身份验证的人。

          Header 字段应放置 Authentication 而不是 Authorization

          AAM 在他们的 documentation 中提到了它,

          注意! AAM 不使用标准授权标头,因为它被跳过 大多数 Apache 服务器。 ...


          希望对某人有所帮助!感谢其他答案也对我有很大帮助!

          【讨论】:

            【解决方案9】:

            其他一切,即。 Params、Authorization、Body、Pre-request Script、Tests 为空,只需打开 Headers 选项卡并如图所示添加即可。 GET 请求也一样。

            【讨论】:

              【解决方案10】:

              我按照 moplin 提到的方式进行操作。但在我的案例中,服务将 JWT 作为响应标头中的值发送到“授权”键下。

              Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ
              

              我所做的是,在邮递员中创建一个全局变量

              key->jwt
              价值->废话

              在登录请求->Tests Tab中,添加

              postman.clearGlobalVariable("jwt");
              postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));
              

              在其他请求中选择标题选项卡并给出

              key->授权

              值->{{jwt}}

              【讨论】:

                【解决方案11】:

                不知怎的,邮递员不适合我。 我不得不使用一个名为 RESTED 的 chrome 扩展,它确实有效。

                【讨论】:

                  【解决方案12】:

                  在 Postman 最新版本(7++)中,Authorization 中可能没有 Bearer 字段 所以转到标题选项卡

                  选择键作为授权并在值中写入 JWT

                  【讨论】:

                  • 对于 v7.19.0+ 并且它也已经存在了一段时间,Authorization 选项卡中有一个 Bearer Token 助手,在此处添加令牌值(硬编码或作为动态变量)将创建请求的相同 Authorization 标头。
                  猜你喜欢
                  • 2020-12-17
                  • 2021-11-04
                  • 2015-09-27
                  • 1970-01-01
                  • 2019-02-27
                  • 2019-02-21
                  • 2020-02-01
                  • 2018-12-10
                  相关资源
                  最近更新 更多