Jos*_*ano 13 jwt jhipster postman
我一直在使用Postman in-tab扩展来测试调用JHipster资源API的调用,发现它工作得很好(JHipster设置使用OAuth2).我使用JHipster登录页面进行了身份验证,然后打开了一个带有Postman扩展的新选项卡.
我只是将我的JHipster应用程序切换为使用JWT,这种使用Postman的方法不再有效,在调用API时我被拒绝了.此外,Postman的标签内扩展程序已被弃用,以支持独立应用程序.
问题:是否有关于设置Postman以对JHipster/JWT进行身份验证的文档?
Ale*_*isi 17
/api/authenticate使用以下正文发出POST请求:
{"password":"admin","username":"admin"}.您将收到以下回复:{"id_token":"aabbccddeeff"}Authorization: Bearer aabbccddeeff/api/authenticate端点发出GET请求Jon*_*ell 15
可以使用Postman和JWT JHipster应用程序.
Authorization标头的任何API请求.JWT标记是"承载"右侧的值.您还可以在密钥下的浏览器localStorage中找到此令牌jhi-authenticationToken.编辑Postman中的Authorization标题并添加标题.该值应如下所示:
Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJydRkZWxsIiwiYXV0aCI6IlJPTEVfQURNSU4sUk9MRV9U0VSIiwiZXhwIjoxNDgzOTg1MDkzfQ.1A13sBvr3KDWxJQpKDKOS33KAVjWIb3mS_qfxLBOCq_LbMwNHnysAai0SNXXgudMOulAnXYN9_Mzlcv1_zctA
Run Code Online (Sandbox Code Playgroud)xon*_*nya 10
如果您已经部署了单个微服务并希望对其进行隔离测试,则可以将 Postman 配置为使用预请求脚本构建 JWT 令牌。
application-dev.ymlJHipster 生成的文件并获取base64-secret值:security:
authentication:
jwt:
# This token must be encoded using Base64 and be at least 256 bits long (you can type `openssl rand -base64 64` on your command line to generate a 512 bits one)
base64-secret: N2Y2MmFkNzg2ZTI4NTZiZGEwMTZhYTAzOTBhMjgwMzlkMzU2MzRlZjJjZDA2MzQ0NGMxOGFlZThjOWY0MjkzNGVlOGE3ZjkxZGI5ZTQxOGY3MjEwNWUwYTUxMTUxODYxY2U4ZWMzZjVhMjg0NTZkNzlhNWUyMmEyNjQ5NzkxZmI=
Run Code Online (Sandbox Code Playgroud)
将值jhipster_jwt_secret放在 Postman 环境中命名的变量中。
配置您的预请求脚本(这主要是从 Gist 复制的):
function base64url(source) {
// Encode in classical base64
encodedSource = CryptoJS.enc.Base64.stringify(source);
// Remove padding equal characters
encodedSource = encodedSource.replace(/=+$/, '');
// Replace characters according to base64url specifications
encodedSource = encodedSource.replace(/\+/g, '-');
encodedSource = encodedSource.replace(/\//g, '_');
return encodedSource;
}
var header = {
"typ": "JWT",
"alg": "HS256"
};
var payload = {
"sub": "user",
"auth": "role"
};
var secret = CryptoJS.enc.Base64.parse(postman.getEnvironmentVariable("jhipster_jwt_secret"));
// encode header
var stringifiedHeader = CryptoJS.enc.Utf8.parse(JSON.stringify(header));
var encodedHeader = base64url(stringifiedHeader);
// encode data
var stringifiedPayload = CryptoJS.enc.Utf8.parse(JSON.stringify(payload));
var encodedPayload = base64url(stringifiedPayload);
// build token
var token = encodedHeader + "." + encodedPayload;
// sign token
var signature = CryptoJS.HmacSHA256(token, secret);
signature = base64url(signature);
var signedToken = token + "." + signature;
postman.setEnvironmentVariable("jwt_token", signedToken);
Run Code Online (Sandbox Code Playgroud)
{{jwt_token}}在令牌输入字段中写入。| 归档时间: |
|
| 查看次数: |
9428 次 |
| 最近记录: |