Jmeter——實現Basic Auth方式登錄


背景

在實際測試日常中,產品有兩種登錄方式,一種是普通登錄方式,另一種則是Basic Auth方式登錄。兩種登錄對應着產品中不同的操作,對權限進行了一個划分。

Postman登錄

使用Postman登錄,如下方式入參,即可正常登錄成功

Jmeter登錄

同樣的一個登錄操作,換到jmeter中實現時,倒遇到了不小的麻煩,琢磨了些時間,終究是解決了,分享出來與大家共享。

1.遇到的問題

切換到jmeter進行登錄時,接口返回401,並報Unauthorized。401 是一個什么概念呢:“未經授權”。有兩種可能,一是賬戶密碼不對,二是請求格式或者 JMeter 相關設置存在問題。賬號密碼肯定是對的,那就是存在第二種問題了。

遇到問題了,顯示自己琢磨了一番,還是沒有解決,所以就來網絡上尋求幫助了。尋求一番下來,收獲還的確不小。

2.解決辦法1

解決思路:進行基本授權,需要添加值為 Basic base64(用戶名:密碼)的 Authorization 頭信息。

第一步: 添加 BeanShell PreProcessor

(前置處理器 > BeanShell PreProcessor),如下所示,說明:BeanShell PreProcessor 或者 JSR223 PreProcessor 任一均可

第二步:將以下腳本添加到 BeanShell PreProcessor

import org.apache.commons.codec.binary.Base64;
byte[] encodedUsernamePassword = Base64.encodeBase64("username:password".getBytes());
vars.put("base64HeaderValue",new String(encodedUsernamePassword));

 如下圖所示:

第三步:添加 HTTP 信息頭管理器

路徑:線程組>配置文件>HTTP 信息頭管理器

第四步:填寫正確的 Authorization 信息

header name 填: Authorization
header value 填:Basic ${base64HeaderValue} (第二步創建的變量)

如下圖所示:

第五步:添加 HTTP 請求

輸入獲取token的接口,如下:

第六步:查看結果

當創建 http 請求時,Authorization 將以 base64 編碼的字符串傳遞給服務器,成功發送請求后,在 Request Headers 中就可以看到 Authorization 的信息。

自 JMeter 3.2 以后,就不需要上述的方法了,有了更優化的解決方案,那就是解決辦法2。

3.解決辦法2

第一步: 添加 HTTP 授權管理器

(配置元件 > HTTP 授權管理器)
說明:它提供了自動將相關 Authorization 信息添加到 HTTP 請求 header 的功能。

第二步:添加授權信息

基本 URL:http://XXXXXXXX

用戶名:user

密碼:passwd

將 域 和 Realm 保留為空

Mechanism:BASIC_DIGEST

如下所示:

第三步:添加 HTTP 請求

輸入獲取token的接口,如下:

 第四步:查看結果

Jmeter實現Basic Auth方式登錄,使用上述兩個辦法可以完美解決,希望對有疑惑的人有所幫助。個人還是喜歡第二種方式,第二種相對簡單一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM