1

HttpClientContext を使用して予防的な基本認証を設定しようとしています。以下で説明する機能は、アプリケーションとサービスの認証と認可に JWT トークンと F5/BigIP を活用するためのより大きなソリューションの一部です。

curl コマンドとネットワーク トレースが成功すると、次のワークフローを確認できます。

  1. URL に送信された GET 要求
  2. BigIP インスタンスで 302 が見つかりました
  3. my.policy にリダイレクト -> 2 つのセッション Cookie が作成されます (LastMRH_Session および MRHSession)
  4. my.policy に対する GET リクエスト
  5. 401 無許可で返送 -> MRHSession Cookie が新しい値で更新される
  6. コマンド プロンプトで資格情報を入力する
  7. #5 の更新された MRHSession Cookie と Authorization ヘッダーが追加された my.policy に送信される GET 要求
  8. リダイレクト成功

私は Java コードでクライアント コンテキストを作成しましたが、常に元の MRHSession Cookie を使用し、401 で返された新しいセッション Cookie 値を取得しないことを除いて、すべてがうまく機能します (つまり、元のセッション Cookie を #7 に送り返します)。 #5から更新されたものではありません)、F5は無効なセッションIDを持っていると不平を言います。

以下は、私が使用している http コンポーネントのバージョンの gradle リファレンスです。

compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.4'

クライアント コンテキストの作成は次のようになります。

public HttpClientContext create(final URI uri) {
   HttpHost httpHost = httpHostFactory.create(uri);
   HttpClientContext context = HttpClientContext.create();
   context.setAuthCache(authCacheFactory.create(httpHost));
context.setCredentialsProvider(credentialsProviderFactory.create(httpHost));       
    return context;
}
4

0 に答える 0