我根据以下article测试基于JWT令牌的安全性的实现。我已成功从测试服务器收到一个令牌。我无法弄清楚如何让Chrome POSTMAN REST客户端程序在标头中发送令牌。
我的问题如下:
1)我使用正确的标题名称和/或POSTMAN界面吗?
2)我是否需要对令牌进行64位编码?我以为我可以发回令牌。
答案 0 :(得分:241)
对于请求标题名称只使用授权。 在令牌之前放置承载者。我只是尝试了它,它对我有用。
授权:持票人TOKEN_STRING
JWT的每个部分都是base64url编码值。
答案 1 :(得分:121)
答案 2 :(得分:37)
我在这个问题中添加了一些有趣的提示,可以帮助你们测试JWT Apis。
实际上非常简单。
当您登录时,在您的Api(登录端点)中,您将立即收到您的令牌,正如@ mick-cullen所说,您必须在标题上使用JWT:
Authorization: Bearer TOKEN_STRING
现在,如果您希望自动化或只是让您的生活更轻松,您可以将测试保存为全局,您可以在所有其他端点上调用:
Authorization: Bearer {{jwt_token}}
邮递员: 然后在邮递员中将全局变量设为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"},可能会有某种变化。
在第一行,您将响应添加到数据varibale。 清洁你的全球 并指定值。
所以现在你在全局变量上有你的令牌,这使你在所有端点上使用授权:Bearer {{jwt_token}}变得容易。
希望这个提示有所帮助。
EDIT
需要阅读的东西
关于Postman的测试:testing examples
命令行:Newman
答案 3 :(得分:9)
我在Flask
中遇到了同样的问题,并在尝试了前两个相同的解决方案(Authorization: Bearer <token>
)后得到了这个问题:
{
"description": "Unsupported authorization type",
"error": "Invalid JWT header",
"status_code": 401
}
我设法通过使用:
最终解决了它Authorization: jwt <token>
认为这可能会为遇到同样事情的人节省一些时间。
答案 4 :(得分:6)
答案 5 :(得分:1)
完成!
答案 6 :(得分:1)
如果您想使用邮递员,正确的方法是像这样使用标头
密钥:授权
值:jwt {token}
就这么简单。
答案 7 :(得分:0)
不知何故邮递员不适合我。 我不得不使用名为RESTED的chrome扩展程序,它确实有效。
答案 8 :(得分:0)
我按照moplin的提法做了。但在我的情况下,服务会将JWT作为响应标头发送,作为“授权”键下的值。
Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ
我做的是,在邮递员中创建一个全局变量
键 - &GT; JWT
值 - &GT; blahblah
在登录请求中 - &gt;测试标签,添加
postman.clearGlobalVariable("jwt");
postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));
在其他请求中选择Headers选项卡并提供
key-&gt;授权
值 - &GT; {{JWT}}
答案 9 :(得分:0)
对于使用wordpress插件Advanced Access Manager打开JWT身份验证的人。
标题字段应设置身份验证,而不是授权
AAM在documentation,
中提到了它请注意! AAM 不会使用标准授权标题,因为它被跳过 大多数Apache服务器。 ...
希望它对某人有所帮助!谢谢你的其他答案帮了我很多!!
答案 10 :(得分:0)
答案 11 :(得分:0)
在Postman最新版本(7 ++)中,授权中可能没有Bearer字段 因此,转到“标题”标签
选择密钥作为授权,并在值中写入JWT