旧Spring SecurityのSAMLメタデータ取得にプロキシを設定する
旧Spring Security SAML HTTPMetadataProviderに注入するHTTPクライアントを、サーバー側のメタデータ取得用に設定します。
旧Spring Security SAMLアプリケーションは、HTTPMetadataProviderを使ってサーバープロセスからIDプロバイダーのメタデータを取得できます。この外向きの取得では、メタデータプロバイダーに渡したHTTPクライアントが使われます。
Spring Security SAML 1.0.x/OpenSAML 2の構成スタイルを使うアプリケーションでは、注入する前にApache Commons HttpClientを設定します。
org.apache.commons.httpclient.HttpClient metadataHttpClient =
new org.apache.commons.httpclient.HttpClient();
metadataHttpClient.getHostConfiguration()
.setProxy("proxy.example", 8080);その設定済みオブジェクトを、既存のタイマーとメタデータURLとともに、org.opensaml.saml2.metadata.provider.HTTPMetadataProviderのHTTPクライアントのコンストラクター引数として渡します。XML構成では、参照するクライアントBeanがこの設定済みインスタンスでなければなりません。
プロバイダー既存のパーサーパール、更新構成、周辺のメタデータマネージャーは維持します。経路を変えてもこれらの責務は置き換わりません。
メタデータURLはIDプロバイダーのURLのままです。プロキシホストはHTTPクライアント側に置きます。承認済みで公開到達可能なメタデータURLであれば、HTTPプロキシ一覧のHTTP候補でそのクライアントのホストとポートを埋められます。ただし公開された中継が許可され、プロキシ資格情報を保持しない場合に限ります。これはサーバー側の取得経路です。ブラウザーがIDプロバイダーへ正常にリダイレクトされても、アプリケーションサーバーが自らのネットワーク制限を越えてメタデータを取得・更新できることは示されません。
この設定は、ここに挙げた旧クラスにのみ使ってください。現代のSpring Security saml2サポートは別のAPIを使い、旧拡張向けに書かれたBeanを現在のメタデータ構成と交換することはできません。