私はJDK 1.8
のKrb5LoginModule
に依存するJMeterを実行しています。JavaクライアントとKerberos/SSO - Krb5LoginModule - チケットを再利用しない
Krb5LoginModule
は、複数のリクエストにわたってケルベロスセッションを維持できないようです。これにより、すべての要求の前にHTTP 401
が更新され、ハンドシェイクが更新されます。
パフォーマンスの問題が断続的に発生するプロダクション環境を再現しようとしていますが、Kerberos/SSO認証をテストに含めたいのですが、私のWindowsクライアントのように動作するように設定することはできませんRESTサーバー。
RESTサーバーは、数多くのExcelアドインクライアントにデータを提供します。これらのクライアントは、Kerberosで認証するように設定されています。アクセスログでは、各クライアントが最初にHTTPステータス401応答をトリガし、その後にクライアントのアクティビティの期間中に200、さらに200秒が続くことがわかります。
ただ混乱を避けるために、サーバーは、Kerberos手揺れを処理していると、サーブレットコンテナのセッションを使用してではありません。
私のテストが実行されると、すべての要求がサーバーの401によって拒否され、JavaがKerberos KDCから別のチケットを取得してから再送信することがわかりました。これがうまくいく間、私のKDCサーバーは毎秒2つ以上の要求を処理することができず、要求をタイムアウトしてしまうので、負荷テストを非常に増加させることはできません。
なぜ、Krb5LoginModuleはKDCから取得したケルベロスチケットを保持していないので、Excelのようにすべての呼び出しを事前認証していますか?
これは私が設定するために試したものです:
JMeter {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
ticketCache="FILE:krb.cache"
useKeyTab=true
keyTab="FILE:krb.keytab"
storeKey=true
principal="[email protected]"
debug=true;
};
私は、チケットキャッシュでとせずに、キータブでとせずに試してみました。私はちょうど設定が間違っていることを望むが、私はどのように見ることができません。
これは私が上で私の仮定を基づかてるものです:Oracle: Single sign-on using Kerberos
とAPI:Krb5LoginModule - Oracle JDK 1.8 API docs
"Kerberosで認証するように設定された何百ものExcelアドインクライアントにデータを提供します。" - クライアントが接続を閉じ、新しい要求でクライアントが承認ヘッダーを提供しない場合それはすべて始まります。クライアントは接続をキャッシュしたり、接続を開いたままにしたりする必要があります。私は、JMeterが各リクエストの後に接続を閉じるという悪い気持ちを持っています。 – gusto2
これはLinux上です。そのレジストリ設定に相当する設定は何でしょうか? "ターゲットセッションキーを許可する"に何をするのですか? – Adam
@ gusto2確実に接続を維持しているか閉じているかは関係ありません。認証チケットが重要なヘッダーです。 Krb5LoginModuleは401の後の最初の要求でのみそれを提供し、次回再びそれを忘れてしまいます。私はJMeterでキープアライブを使用することができたと思いますが、私は真実の環境を複製することはありません。 – Adam