I.はじめに
インターフェイスのリクエスト本文には署名署名パラメータがあり、署名署名はリクエスト パラメータを結合することによって生成され、最後にリクエスト本文から署名パラメータを削除した後、MD5 暗号化が行われます。
前の記事では、リクエストの本文に署名の前にパラメータを配置しましたが、この記事では引き続き、署名パラメータをリクエスト ヘッダーに配置する状況について説明します。
2. 実施方法
http リクエストでは署名検証 X-Sign を実行する必要があり、それをリクエスト ヘッダーに含めます
コンテンツタイプ: application/json; charset=UTF-8
X 記号: 2a76a7d2ec34760afb7f4f3ff5a02ef3
本文:{“ユーザー名”: “am”, “パスワード”: “123456”, “メール”: “”}
署名は、スプライシングとソート後のリクエストボディによって生成された値 + "キー" の md5 によって暗号化されます。
特定の署名ルールについては、前の記事を参照してください: https://blog.csdn.net/x2waiwai/article/details/122843324
全体的な考え方と実装方法について説明しますと、BeanShell プリプロセッサでは、まずリクエストのヘッダーを取得し、署名値を取得してリクエストのヘッダーに追加し、新しいリクエスト ヘッダーを送信します
全体的な実装アイデアは次のとおりです
。 1. 最初にリクエスト ヘッダーの値を取得します。
2. 署名の符号値を取得します (詳細については前の署名を参照してください。署名の実装についてはここでは説明しません)。
3. 署名パラメータと対応する値をリクエストヘッダーに追加します
4. 新しいリクエストヘッダーを送信します
3. BeanShell プリプロセッサを追加する
HTTP ヘッダー マネージャー、X 記号パラメータを追加する必要はありません
Add-preprocessor-BeanShell プリプロセッサは署名値を取得し、署名規則に従ってリクエスト ヘッダーに追加します。実装コードは次のとおりです。
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;
import org.apache.jmeter.testelement.property.CollectionProperty;
//sampler 里面有个getHeaderManager 可以获得请求头
HeaderManager headers =sampler.getHeaderManager();
// 打印全部的头部内容
log.info(headers.getHeaders().getStringValue());
// 中间省略签名拿到的sign值,这里给固定的"aaaaaaaaaaaaaaaaaa"
// new 一个Header对象
signHeader = new Header("X-sign","aaaaaaaaaaaaaaaaaa");
// 添加 Header 到请求头管理器
headers.add(signHeader);
// 打印全部的头部内容
log.info(headers.getHeaders().getStringValue());
コード途中の署名を省略した符号値
これは固定の「aaaaaaaaaaaaaaaaaaaa」です。署名値は開発ドキュメントに従って実装されています。または、開発用の jar パッケージを見つけることができます。
印刷されたログの内容では、X マークを追加する前と後の比較を確認できます。
INFO o.a.j.u.BeanShellTestElement: [Content-Type application/json]
INFO o.a.j.u.BeanShellTestElement: [Content-Type application/json, X-sign aaaaaaaaaaaaaaaaaa]
結果の数を表示し、リクエスト ヘッダーにすでに X サインが付いていることを確認します。