2017-03-07 7 views
1

IdPとしてWSO2 ISを使用したSpring SAML拡張を使用しています。現在、Spring XML設定内のMetadataGeneratorのentityBaseURLプロパティを設定しています。今のところ、これはentityBaseURLがservernameと一致するので、単一のサーバーに対してうまく動作します。私はいくつかの環境(dev、test、およびUAT)を持っているので、各環境が異なるサーバー名を持ち、サーバー名がentityBaseURL propと一致しないため、プログラムでentityBaseURLを設定する必要があります。すべての環境でWARアーチファクトを再構築することは望ましくありません。私たちは、各環境の設定をデータベースに保存します。したがって、特定のマシンスタックに固有の設定とプロパティを実行時に読み取ることができます。私は、DBからentityBaseURLプロパティのservernameを読み込み、プログラムで設定したいと考えています。 MetadataGeneratorを自分のクラスに置き換える必要がありますか? entityBaseURLプロパティがどこで初期化されるかは、私には不明です。Spring SAML拡張 - プログラムでentityBaseURLを設定する

答えて

1

私はこれを解決するための実行可能な方法を見つけました。私はMetadataGeneratorFilterクラスを拡張し、getDefaultBaseURLメソッドをオーバーライドしました。 getDefaultBaseURLメソッドのデフォルトの実装では、HTTP要求に含まれるプロパティを使用して値を計算します。私はDBのルックアップを行い、データベースに格納されている値を返すようにこの動作を変更しました。私はここで短所になることができますが、これはうまくいきます。 SAML AuthnRquestのAssertionConsumerServiceURL属性が正しく設定されていることを確認できました。生成されたメタデータも正しい。

注:entityBaseURLプロパティは、引き続きSpringの設定で手動で設定できます。そうであれば、getDefaultBaseURLメソッドから返された値は使用されません。

関連する問題