如何在Jmeter中参数化Bearer token授权

问题描述 投票:0回答:7

我有一个 jmeter 登录脚本,用户可以在其中登录和注销。下面附上详细的截图。

请求数据如下: The request data content

在响应日期,生成授权令牌:

enter image description here

其正则表达式如下:enter image description here

我将值作为参数传递给 55/users:

enter image description here

当我运行脚本时它失败了: enter image description here

这是响应数据:

enter image description here

jmeter
7个回答
47
投票

使用标头管理器将令牌作为标头传递,这样您将拥有:

Header Manager

更多详情请参阅:

https://stackoverflow.com/a/43283700/460802

如果您想正确学习 jmeter,这本书将会帮助您。


7
投票
JMeter 设置更简单(登录/获取):

线程组

  • HTTP 请求,正文数据:{ "Login":"some", "Password":"credentials" }

      HTTP 标头管理器:内容类型 application/json
    • JSON Extractor - 创建的变量名称:Token; JSON 路径表达式:tokenName(在我的例子中是根级别)
  • HTTP 请求

      HTTP 标头管理器:内容类型 -> application/json;授权 -> 不记名 ${Token}
    • 响应断言:要测试的字段 = 响应代码;模式匹配规则=等于、不;测试模式 401
  • 查看结果树检查结果

本地

IE Ajax 版本以防万一...

<SCRIPT> var baseUri = 'https://localhost:port'; var tokenUri = '/something'; var getUri = '/restrictedData'; var token; var form = { "Login":"some", "Password":"credentials" }; postRequest(baseUri + tokenUri, form, gotToken) function gotToken(progress) { var response = progress.srcElement; if (response.status != 200) { document.body.innerText = "Error:\n" + response.response; return; } token = JSON.parse(response.response); console.log(JSON.stringify(token)); var restricted = getRequest(baseUri + getUri, token.tokenName, gotRestricted); } function gotRestricted(progress) { var jsonStr = progress.srcElement.response; var jsonObj = JSON.parse(jsonStr); document.body.innerText = JSON.stringify(token,null,2) + '\n\n' + JSON.stringify(jsonObj,null,2); } function getRequest(url, token, callback) { var xhr = new XMLHttpRequest(); xhr.onloadend = callback; xhr.open('GET', url); xhr.setRequestHeader('contentType', 'application/json') if (token) xhr.setRequestHeader("Authorization", "Bearer " + token); xhr.send(); return xhr; } function postRequest(url, body, callback) { var xhr = new XMLHttpRequest(); xhr.onloadend = callback; xhr.open('POST', url); xhr.setRequestHeader('Content-Type', 'application/json') xhr.send(JSON.stringify(body)); return xhr; } </SCRIPT>
    

3
投票
如果您已经拥有不记名令牌并且只想在标头管理器中使用,那么, 在 HTTP HEADER MANAGER 选项卡中,将这些值分别放在 NAME 和 VALUE 列下。

Name: Authorization Value: Bearer "add your actual token without quotes"
    

2
投票
在失败的 HTTP 请求下可用的 HTTP 标头管理器中添加承载

${token}

image HTTP Request


1
投票
我从 API 中获取了 cUrl,然后将其导入。

enter image description here


0
投票
使用 Authorization 作为参数名称和值应该是 持有者${variable_name}


0
投票
从令牌 API 请求中提取令牌后,请在 HTTP 授权标头管理器中使用此令牌以用于后续 API。下面的例子:

Header Name: Header Value Authorization: Bearer ${generated_token}
其中“ generated_token”是包含提取的令牌的变量。

© www.soinside.com 2019 - 2024. All rights reserved.