作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
export default function() {
const mySecret = "aaaaaaa";
const token = jwt.encode({ foo: 'bar' }, mySecret);
}
最佳答案
您可以使用内置 k6/encoding和 k6/crypto与 JWT 一起使用的模块。
由于 k6/crypto
模块尚不支持公钥加密,因此您只能使用共享 key 来签署 JWT(无需在纯 JS 中进行加密)。
这是一个示例脚本:
import crypto from "k6/crypto";
import encoding from "k6/encoding";
const algToHash = {
HS256: "sha256",
HS384: "sha384",
HS512: "sha512"
};
function sign(data, hashAlg, secret) {
let hasher = crypto.createHMAC(hashAlg, secret);
hasher.update(data);
// Some manual base64 rawurl encoding as `Hasher.digest(encodingType)`
// doesn't support that encoding type yet.
return hasher.digest("base64").replace(/\//g, "_").replace(/\+/g, "-").replace(/=/g, "");
}
function encode(payload, secret, algorithm) {
algorithm = algorithm || "HS256";
let header = encoding.b64encode(JSON.stringify({ typ: "JWT", alg: algorithm }), "rawurl");
payload = encoding.b64encode(JSON.stringify(payload), "rawurl");
let sig = sign(header + "." + payload, algToHash[algorithm], secret);
return [header, payload, sig].join(".");
}
function decode(token, secret, algorithm) {
let parts = token.split('.');
let header = JSON.parse(encoding.b64decode(parts[0], "rawurl"));
let payload = JSON.parse(encoding.b64decode(parts[1], "rawurl"));
algorithm = algorithm || algToHash[header.alg];
if (sign(parts[0] + "." + parts[1], algorithm, secret) != parts[2]) {
throw Error("JWT signature verification failed");
}
return payload;
}
export default function() {
let message = { key2: "value2" };
let token = encode(message, "secret");
console.log("encoded", token);
let payload = decode(token, "secret");
console.log("decoded", JSON.stringify(payload));
}
关于javascript - JWT 与 k6 签约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46767543/
我在 andoid 上制作了我的第一个应用程序,它是一个内置谷歌地图的应用程序。我读过some articles我不明白。 我没有任何 keystore 或 key 工具。如何签署我的应用程序?程序是
如何使用 JWT 对 JSON 对象进行编码签名为k6 ? export default function() { const mySecret = "aaaaaaa"; const toke
我在 bitbucket.org 上有一个帐户,是我通过使用我的 Google 帐户注册创建的。现在,每次登录时,我只需点击“使用 Google 登录”就可以了。 如何从 git 命令行访问我的存储库
我是一名优秀的程序员,十分优秀!