3

リクエストを開始する前とリクエストの間に、いくつかの変数でハッシュを実行する必要があるサービスに接続するようにJMeterをセットアップしようとしています。

プレーンテキストの認証情報を持つユーザー定義変数を作成しました。
最初のHTTPリクエストが呼び出される前に、SHA256を使用してパスワードをハッシュし、base64を使用してエンコードしてから、大文字に変換する必要があります。

auth_tokenJSON形式の応答本文を受け取ります。SHA256 -> base64 -> uppercase次に、そのauth_tokenに対して同じチェーンを実行する必要があります。それ以降、それはリクエストヘッダーで使用されます。

4

2 に答える 2

5
  1. リソースクリティカルなシナリオ(負荷テスト)を実装しない場合は、JSR223サンプラー/ JSR223ポストプロセッサー/ JSR223プリプロセッサーなどを少しのコードで使用できます。

    例えば

    • 次の[groovy]コードでJSR223Sampler/ PostProcessor/PreProcessorを使用します。
    インポートjava.security.MessageDigest;
    import org.apache.commons.codec.binary.Base64;
    import org.testng.annotations.Test;
    
    String [] params = Parameters.split( "、");
    
    文字列テキスト=params[0];
    MessageDigest md = MessageDigest.getInstance( "SHA-256");
    
    md.update(text.getBytes( "UTF-8"));
    バイト[]ダイジェスト=md.digest();
    
    byte [] encoding = Base64.encodeBase64(digest);
    String encText =(new String(encoded))。toUpperCase();
    
    vars.put( "encodedValue"、encText);
    
    • このサンプラーを再利用して、パスワードとauth_tokenの両方をハッシュできます。JSR223サンプラー構成の「パラメーター」フィールドを使用します。${password}最初のケースではたとえば変数を使用auth_tokenし、2番目のケースでは-を使用します。

    • 変数として参照できるハッシュ値${encodedValue}

  2. __groovy関数で使用される同様のGroovyコード。

  3. jmeter-pluginsセットには、、関数が含まれてい${__MD5(...)}ます${__base64Encode(...)}、それだけでは不十分です(SHA256ダイジェストはありません)。${__uppercase(...)}

  4. OS Process Samplerを調べて、OS(Linuxの場合は便利)機能を使用して同じものを実装することもできます。

于 2013-02-06T17:50:37.600 に答える
1

新しい関数があり__digest、現在はナイトリービルドになっています

エンコードされた値変数に保存する場合、パスワード変数の結果は次を使用します。

${__digest(SHA-256,${password},,,encodedValue)}

カスタムJMeter関数プラグインをダウンロードして、base64エンコーディング関数を呼び出すことができます。

${__base64Encode(encodedValue, base64Value)}

次に、大文字の関数を呼び出します。

${__uppercase(base64Value, finalValue)}

$ {finalValue}は、この操作の最終値を保持します

于 2017-11-15T07:29:40.303 に答える