旧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を現在のメタデータ構成と交換することはできません。

関連記事