我正在根据以下文章测试基于 JWT 令牌的安全性的实现。我已成功收到来自测试服务器的令牌。我不知道如何让 Chrome POSTMAN REST 客户端程序在标头中发送令牌。
我的问题如下:
1) 我是否使用了正确的标题名称和/或 POSTMAN 接口?
2) 我需要对令牌进行 base 64 编码吗?我想我可以把令牌寄回去。
对于请求标头名称,只需使用授权。将 Bearer 放在 Token 之前。我刚试了一下,它对我有用。
授权:不记名 TOKEN_STRING
JWT 的每一部分都是一个 base64url 编码的值。
我在这个问题上添加了一个有趣的提示,可以帮助你们测试 JWT APIs。
它实际上非常简单。
当您登录时,在您的 Api(登录端点)中,您将立即收到您的令牌,正如@mick-cullen 所说,您将不得不在您的标头上使用 JWT:
Authorization: Bearer TOKEN_STRING
现在,如果您想自动化或只是让您的生活更轻松,您可以将测试保存为全局令牌,您可以在所有其他端点上调用它:
Authorization: Bearer {{jwt_token}}
在 Postman 上:然后在 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 上的测试:测试示例
命令行:纽曼
CI:与 Jenkins 集成
不错的博文:掌握 api 测试自动化
我Flask
在尝试前 2 个相同的解决方案Authorization: Bearer <token>
(
{
"description": "Unsupported authorization type",
"error": "Invalid JWT header",
"status_code": 401
}
我设法最终通过使用来解决它:
Authorization: jwt <token>
认为这可能会为遇到同样事情的人节省一些时间。
如果您想使用邮递员,正确的方法是使用标题
关键:授权
值:jwt {token}
就如此容易。
完毕!
对于使用 wordpress 插件高级访问管理器打开 JWT 身份验证的人。
Header 字段应放置Authentication而不是Authorization
AAM 在他们的文档中提到了它,
笔记!AAM不使用标准授权标头,因为它被大多数 Apache 服务器跳过。...
希望它可以帮助某人!感谢其他答案也帮助了我很多!
我按照 moplin 提到的方式做了。但在我的案例中,服务将 JWT 作为响应标头发送,作为“授权”键下的值。
Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ
我所做的是,在邮递员中创建一个全局变量
键->jwt
值->blahblah
在登录请求-> 测试选项卡中,添加
postman.clearGlobalVariable("jwt");
postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));
在其他请求中选择标题选项卡并给出
键->授权
值->{{jwt}}
在 Postman 最新版本(7++)中,授权中可能没有 Bearer 字段所以转到 Header 选项卡
选择键作为授权并在值中写入 JWT
不知何故,邮递员不适合我。我不得不使用一个名为 RESTED 的 chrome 扩展,它确实有效。