使用 Postman 在标头中发送 JWT 令牌
Posted
技术标签:
【中文标题】使用 Postman 在标头中发送 JWT 令牌【英文标题】:Sending JWT token in the headers with Postman 【发布时间】:2014-09-02 19:12:02 【问题描述】:我正在测试基于以下article 的基于 JWT 令牌的安全性的实现。我已成功收到来自测试服务器的令牌。我不知道如何让 Chrome POSTMAN REST 客户端程序在标头中发送令牌。
我的问题如下:
1) 我是否使用了正确的标题名称和/或 POSTMAN 接口?
2) 我需要对令牌进行 base 64 编码吗?我想我可以把令牌寄回去。
【问题讨论】:
您好,我在 POSTMAN 中哪里可以看到我收到的 jwt 令牌? @MLondei,这取决于接收服务器的配置方式。它可以作为 URL 返回(在 URL 字符串中找到),也可以在响应正文中返回(在响应的正文字段中找到)。这是我所知道的两个主要的。 linkrot。新链接:auth0.com/docs/design/web-apps-vs-web-apis-cookies-vs-tokens 【参考方案1】:对于请求头名称只需使用授权。 将 Bearer 放在 Token 之前。我刚刚试了一下,它对我有用。
授权:不记名 TOKEN_STRING
JWT 的每一部分都是一个 base64url 编码的值。
【讨论】:
澄清一下,“Header”字段变为 Authorization,“Value”字段变为 Bearer[WHITESPACE]如果有帮助,这里是一张图片:)
更新:
邮递员团队在“授权标签”中添加了“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
【讨论】:
有趣,我不熟悉Test
标签和 Postman 编码的概念。有没有你推荐的资源来开始这个?
是的,有一些我觉得很有用: * getpostman.com/docs/testing_examples * blog.testproject.io/2016/06/22/master-api-test-automation * sm-cloud.com/testing-api-with-postman
实际上,在自动化测试方面,Postman 真的很有趣,也很强大。您可以配置邮递员,使其可以构建可以在测试中运行的随机数据全局变量或环境变量。并进行迭代运行并将任何响应作为端点单元测试进行测试。保存它们并在更改代码时发现错误。我没有使用命令行实用程序,但我知道您可以将其配置为在您的 ci-pipeline 中运行。
您可以在此处阅读有关命令行的信息:getpostman.com/docs/newman_intro【参考方案4】:
这是自动设置令牌的方法
在您的登录/身份验证请求中
然后是认证页面
【讨论】:
【参考方案5】:我在Flask
中遇到了同样的问题,在尝试了前两个相同的解决方案 (Authorization: Bearer <token>
) 之后,得到了这个:
"description": "Unsupported authorization type",
"error": "Invalid JWT header",
"status_code": 401
我终于通过以下方法解决了这个问题:
Authorization: jwt <token>
认为这可能会为遇到同样事情的人节省一些时间。
【讨论】:
我使用Bearer <token>
在django
中获得了Authentication credentials were not provided
。用jwt <token>
解决。感谢您的解决方案【参考方案6】:
如果你想使用邮递员,正确的方法是使用标题
key:授权
值:jwt token
就这么简单。
【讨论】:
【参考方案7】:-
打开邮递员。
转到“标题”字段。
可以看到“键值”空白。
在密钥类型“授权”中。
值类型为“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
标头。以上是关于使用 Postman 在标头中发送 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章