首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于K6的JWT令牌认证

基于K6的JWT令牌认证
EN

Stack Overflow用户
提问于 2022-09-10 15:37:17
回答 1查看 156关注 0票数 1

我是K6新手,我想通过登录端点上的JWT令牌进行身份验证。我第一次和邮递员做了这件事,它起作用了。然而,在K6上,我得到了一个401错误。

以下是我的K6代码:

代码语言:javascript
复制
import http from 'k6/http';
import { sleep } from 'k6';
import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";
import { check } from 'k6';

export let options = {
    iterations:1,
    vus: 1,
    thresholds: {
        http_req_duration: ['avg < 500']
    }
};

export default function() {
    const URL = 'https://gateway.test.idnow.de/api/v1/*******/login'
    const APIKEY= '***************************';
    const playload = JSON.stringify({
        "apiKey": "{{APIKEY}}"
    });
    const params = {
        headers: {
            'Content-Type': 'application/json',
        },
    };
    const res = http.post(URL, playload, params, {redirects: 0});
    check(res, {
        "status code should be 200": res => res.status === 200,
    });

    sleep(1);
    console.log(`status: "${res.status}"`);
    console.log(`body full: ${res.body}`);
};

export function handleSummary(data) {
    return {
        "scriptReport.html": htmlReport(data),
        stdout: textSummary(data, { indent: "", enableColors: true })
    };
}

结果如下:

代码语言:javascript
复制
running (00m01.0s), 1/1 VUs, 0 complete and 0 interrupted iterations
default   [   0% ] 1 VUs  00m01.0s/10m0s  0/1 shared iters
time="2022-09-10T14:54:25Z" level=info msg="Response:\nHTTP/2.0 401 Unauthorized\nContent-Length: 125\nAccess-Control-Allow-Origin: *\nContent-Type: application/json; charset=UTF-8\nDate: Sat, 10 Sep 2022 14:54:25 GMT\nStrict-Transport-Security: max-age=16000000;\n\n\n" group= iter=0 request_id=2538f2ba-b3b9-4c88-584d-59e343835906 scenario=default source=http-debug vu=1

running (00m02.0s), 1/1 VUs, 0 complete and 0 interrupted iterations
default   [   0% ] 1 VUs  00m02.0s/10m0s  0/1 shared iters
time="2022-09-10T14:54:26Z" level=info msg="status: \"401\"" source=console
time="2022-09-10T14:54:26Z" level=info msg="body full: {\"errors\":[{\"cause\":\"INVALID_LOGIN_TOKEN\",\"errorType\":null,\"id\":\"70470303\",\"key\":null,\"message\":null,\"translationKey\":null}]}" source=console

当这个API只返回一个令牌时,我很惊讶地看到这个错误正在返回INVALID_LOGIN_TOKEN。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-10 17:56:22

代码语言:javascript
复制
const APIKEY= '***************************';
const payload = JSON.stringify({
    "apiKey": "{{APIKEY}}"
  });

将尝试使用文字值{{APIKEY}}登录。我不知道你是从哪里得到这个想法的,但是k6不支持手柄或胡子模板。

k6脚本是JavaScript。APIKEY是一个变量(实际上是一个常量),它将被自动取消引用并替换为它的值。不需要字符串内插或模板引擎。

代码语言:javascript
复制
const APIKEY= '***************************';
const payload = JSON.stringify({
    "apiKey": APIKEY
  });

如果必须的话,您可以使用模板字符串,这可能是使用胡子语法的目的(但如果可以直接使用常量,为什么还要麻烦呢):

代码语言:javascript
复制
const APIKEY= '***************************';
const payload = JSON.stringify({
    "apiKey": `${APIKEY}`
  });

要确认,只需将有效负载的内容打印为脚本的一部分:

代码语言:javascript
复制
console.log(payload);

PS。这是有效载荷,不是游戏负载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73673102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档