我正在测试基于JWT令牌安全性的实现,这是基于下面的文章。我已经成功地从测试服务器接收到令牌。我不知道如何有Chrome邮差REST客户端程序在头发送令牌。
我的问题如下:
1)我是否使用了正确的头名称和/或POSTMAN接口?
2)我需要base64编码令牌吗?我觉得我可以把代币寄回去。
我正在测试基于JWT令牌安全性的实现,这是基于下面的文章。我已经成功地从测试服务器接收到令牌。我不知道如何有Chrome邮差REST客户端程序在头发送令牌。
我的问题如下:
1)我是否使用了正确的头名称和/或POSTMAN接口?
2)我需要base64编码令牌吗?我觉得我可以把代币寄回去。
对于请求头名称,只需使用授权。 将持票人置于令牌前。我刚试过了,对我很管用。
授权:承载TOKEN_STRING
JWT的每个部分都是一个base64url编码的值。
我在这个问题上补充了一个有趣的小技巧,可以帮助你们测试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: holder {{jwt_token}}变得很容易。
希望这条建议能有所帮助。
编辑 阅读材料
关于Postman的测试:测试示例
命令行:Newman
CI:与Jenkins集成
不错的博文:掌握api测试自动化
我在Flask中遇到了同样的问题,在尝试了前2个相同的解决方案(授权:承载<令牌>)后,得到了这个:
{
"description": "Unsupported authorization type",
"error": "Invalid JWT header",
"status_code": 401
}
我最终通过使用:
Authorization: jwt <token>
我想这可能会为遇到同样问题的人节省一些时间。
我按照moplin提到的那样做了。但是在我的例子中,服务在响应头中发送JWT,作为键“授权”下的值。
Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ
我所做的是,在邮差中创建一个全局变量为
键- > jwt 价值——> blahblah
在登录请求->测试选项卡中,添加
postman.clearGlobalVariable("jwt");
postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));
在其他请求中选择Headers选项卡并给出
键- >授权 价值——> {{jwt}}
对于使用wordpress插件高级访问管理器打开JWT身份验证的人。
Header字段应该是Authentication而不是Authorization
AAM在他们的文档中提到过,
注意!AAM不使用标准的授权标头,因为它被跳过了 大多数Apache服务器. ...
希望它能帮助到一些人!谢谢你的其他回答也帮助了我很多!!
开放的邮差。 转到“header”字段。 这里可以看到“键值”空白。 输入密钥类型“Authorization”。 值类型为“承载符(空格)your_access_token_value”。
完成了!