global.asax から WIF イベントを利用できます。
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
FederatedAuthentication.FederationConfigurationCreated += FederatedAuthenticationOnFederationConfigurationCreated;
}
そのハンドラーでは、実行時に構成を適応させることができます。アイデアを提供するコードを次に示します。終了コードはより複雑になります。
private void FederatedAuthenticationOnFederationConfigurationCreated(object sender, FederationConfigurationCreatedEventArgs args)
{
var identityConfiguration = new IdentityConfiguration(loadConfig:false);
identityConfiguration.SecurityTokenHandlers.Clear();
//...
identityConfiguration.SecurityTokenHandlers.Add(new Saml2SecurityTokenHandler());
//...
var configuration = new FederationConfiguration(loadConfig: false)
{
CookieHandler = new ChunkedCookieHandler(),
//...
IdentityConfiguration = identityConfiguration
};
args.FederationConfiguration = configuration;
}
どのオブジェクトにどの値を与えるかについて疑問がある場合は、いつでも一時的に設定に戻り、同じイベントを介して実行時の値を調べることができます。WIF によってすぐに提供される構成の複雑さと豊富さを過小評価しないでください。
一般に、「コード構成」と「web.config構成」の混合が必要になる場合があります.web.configは構成の特定のより可変な部分を構成するためにまだ使用されており、コードはより変更不可能な部分に使用されています...