web-dev-qa-db-ja.com

JMeter基本認証

JMeterを使用して、Webサービスの基本認証プロセスを暗示しようとしています。ただし、エラー401:Unauthorizedがスローされるたびに。 HTTPヘッダーマネージャーを使用して、ヘッダーの承認と値を追加しようとしました。それでも動作しません。また、HTTP認証マネージャーを使用してみました。まだ運がありません。誰か助けてもらえますか。

32
Depy

JMeterからのリクエストをデバッグすることで、HTTP Authorization Managerモジュールがユーザー名とパスワードを正しくエンコードしないことがわかりました。ユーザー名の後に改行文字を置きます。

Basic Authで保護されたエンドポイントに対してJMeterテストを実行するには、HTTP Header Managerを含め、Basic Authヘッダーを自分で追加します。

資格情報の手動エンコード

  • MacOSまたはLinuxから:

    echo -n "username:password" | base64

  • Windowsから:

    here に進み、「username:password」文字列をエンコードします

認証ヘッダーの追加

HTTPヘッダーマネージャーで、名前が「Authorization」で値が「Basic [上記のエンコードされた資格情報]」のエントリを追加します

49
user480918

JMeter 3.2の2017年8月19日編集

基本的に基本認証をバイパスするには、Authorizationヘッダーに値Basic base64(username:password)を追加する必要があります。問題は、JMeterにbase64関数が組み込まれていないことです。

解決策は次のとおりです。

Step1AddBeanShell PreProcessor(PreProcessor-> BeanShell Preprocessor)

enter image description here

Step2次のスクリプトをプリプロセッサに追加します

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

enter image description here

Step3HTTPヘッダーマネージャーの追加

enter image description here

Step4正しい値でAuthorizationヘッダーを追加

ヘッダー名Authorization
header valueBasic $ {base64HeaderValue}(base64HeaderValue変数はBeanShellプリプロセッサによって初期化されます)

enter image description here

そのため、最終的にhttpリクエストを作成すると、Base64エンコード文字列とともにAuthorizationヘッダーがサーバーに渡されます

enter image description here

33
yurko

以下をせよ:

  • 1/ HTTP Authorization Manager すべての必須フィールドを正しく設定します

  • 2 /オプ​​ション1:HTTP 4の使用:(デフォルト)

  • jMeter 3.2以降、承認マネージャを使用した追加設定なしで可能です。

オプション2:HTTP 3.1の使用:(非推奨)

  • jmeter.propertiesで、コメント解除します:

    httpclient.parameters.file=httpclient.parameters
    
  • httpclient.parametersで、コメント解除します。

    http.authentication.preemptive$Boolean=true
    
7
UBIK LOAD PACK

ベースURLのプロトコル、つまり「localhost」ではなく「 http:// localhost 」を指定してください。

2
esteewhy

Ryan Tが言ったように、HTTPヘッダーマネージャーで、名前"Authorization"と値"Basic [encoded credentials from above]"を持つが、[]なしのエントリを追加します。

1
user2910552

上記の最初の回答を参照すると、Apache 3.1はHTTP Auth Managerでusername:passwordを正しくエンコードしているように見えるため、言及した誤ったエンコードの問題を修正する必要があります。

0
Scott Stingel

応答コードが401の場合、「HTTP Authorization manager」構成要素を追加します enter image description here

0
S Krishna

ユーザー定義変数のユーザー名とパスワードを使用する@yurkoのわずかなバリエーションを追加します。 (3.2より前のJmeterの場合)

import org.Apache.commons.codec.binary.Base64;
String username = vars.get("USERNAME");
String password = vars.get("PASSWORD");
String combineduserpass = username + ":" + password;
byte[] encodedUsernamePassword = Base64.encodeBase64(combineduserpass.getBytes());
vars.put("base64HeaderValue",new String(encodedUsernamePassword));
0
Marcel Wilson