JMeter 中的基本身份驗證
- JMeter
一、概述
當我們使用 JMeter 進行性能測試時,我們可能會遇到由 HTTP 基本身份驗證協議保護的 Web 服務。
在本教程中,我們將了解如何配置Apache JMeter以在測試期間提供必要的憑據。
2.什麼是基本認證?
基本身份驗證是我們可以用來保護 Web 資源的最簡單的訪問控制方法。它由客戶端發送的 HTTP 標頭組成:
Authorization: Basic <credentials>
在這裡,憑證被編碼為用戶名和密碼的 Base64 字符串,由單個冒號“:”分隔。
我們可以看到,當在瀏覽器窗口而不是 HTML 表單中詢問憑據時,使用了基本身份驗證。我們可能會在瀏覽器中收到提示:
因此,如果我們嘗試在安全的 Web 資源上啟動 JMeter 測試,響應代碼將是 HTTP 401,這意味著“未經授權”。我們還將收到一個“WWW-Authenticate”響應標頭,該標頭將描述服務器所需的身份驗證類型。在這種情況下,它將是“基本”:
3.在JMeter中實現基本認證的簡單方法
3.1添加Authorization
標頭
發送憑據的最簡單方法是將它們直接添加到請求標頭中。我們可以使用HTTP Header Manager
組件輕鬆做到這一點,它允許我們向 HTTP Request 組件發送的請求添加標頭。標頭管理器必須是 HTTP 請求組件的子組件:
在HTTP Header Manager
的配置選項卡中,我們只需添加一個鍵/值條目,其中包含我們的身份驗證詳細信息和Authorization
作為名稱:
我們可以使用在線工具對我們的字符串進行編碼並將其粘貼到 Header Manager 中。我們應該注意在我們的編碼憑證之前添加“basic”
。
如果一切順利,我們應該會收到來自服務器的 200 響應代碼。
3.2使用 JSR223 預處理器對憑證進行編碼
如果我們希望 JMeter 為我們編碼我們的憑證,我們可以使用JSR223 PreProcessor
組件。如果我們想改變我們的測試計劃使用的憑據,我們將需要使用它。
我們所要做的就是在我們的HTTP Header Manager
組件之前添加一個JSR223 PreProcessor
:
有了這個組件,我們可以在運行時執行腳本。我們需要提供一個腳本來檢索憑證並對其進行編碼。讓我們使用Java:
import org.apache.commons.codec.binary.Base64;
String username = vars.get("username");
String password = vars.get("password");
String credentials = username + ":" + password;
byte[] encodedUsernamePassword = Base64.encodeBase64(credentials.getBytes());
vars.put("base64Credentials", new String(encodedUsernamePassword));
我們現在應該在User Defined Variables
組件中定義username
和password
變量:
最後,在HTTP Header Manager
組件中,我們必須將Authorization
標頭設置為使用編碼憑據:
我們完成了!一切都應該正常工作,我們可以在用戶定義的變量中輕鬆更改憑據。
4.使用 HTTP 授權管理器
JMeter 提供了HTTP Authorization Manager
組件來簡化使用憑據進行身份驗證。使用此組件,我們可以為多個域和身份驗證協議提供憑據。該組件必須是Thread Group
的子組件,並在HTTP Request
組件之前定義:
在組件的配置選項卡中,我們必須定義用於身份驗證的用戶名和密碼:
如果我們在User Defined Variables
組件中定義了用戶username
和password
,我們可以在此選項卡中使用變量。它也適用於密碼。雖然它仍然被屏蔽,但我們可以在password
字段中輸入“${password}”
。
我們必須注意選擇正確的身份驗證Mechanism
。在這裡,我們將選擇“BASIC”
。
就是這樣! HTTP Request
組件會自動在請求中添加Authorization
頭,我們應該會得到一個 HTTP 200 OK 響應碼。
5.在 HTTP 授權管理器中使用多個憑據
有時,我們可能希望在測試期間使用多個憑據。例如,這可能有助於驗證基於角色的訪問限制。
要配置這個測試用例,我們應該創建一個 CSV 文件,我們將在其中存儲憑證和其他對我們的測試計劃有用的信息。該文件由 JMeter 中的CSV Data Set Config
組件讀取。該組件應該是Thread Group
的子組件,並將在每個Thread Group
循環的 CSV 行上進行迭代:
然後,在這個組件中,我們必須定義:
- 文件的位置作為
User Defined Variables
組件中的路徑 -
CSV Data Set
組件在執行後設置的Variable Names
- 組件是否應該忽略第一行 - 有助於我們在 CSV 文件中有列名
- CSV 文件中使用了哪個
Delimiter
在 CSV 文件中定義多個憑據時,我們應該注意配置我們的Thread Group
以執行多個循環。
通過這些設置,我們應該能夠看到我們的請求標頭中使用了不同的憑據。
六,結論
我們還學習瞭如何在 Apache JMeter 中設置測試計劃以使用此協議進行身份驗證。我們介紹了硬編碼憑證,使用 JSR223 預處理器,然後從 CSV 文件提供多個憑證。