我正在开发一个基于声明的身份验证应用程序,并希望将 Microsoft.IdentityModel 配置从 web.config 文件移动到我的代码中,以便动态管理配置。
这是包含在 web.config 中的 federatedAuthentication 部分:
<federatedAuthentication>
<wsFederation passiveRedirectEnabled="true" issuer="trust" realm="real" requireHttps="false" />
<cookieHandler requireSsl="true" />
</federatedAuthentication>
我曾尝试使用Application_Start()方法附加EventHandler来实现代码中的配置,而不是使用web.config文件:
protected void Application_Start()
{
FederatedAuthentication.ServiceConfigurationCreated += new EventHandler<ServiceConfigurationCreatedEventArgs>(FederatedAuthentication_ServiceConfigurationCreated);
}
private static void FederatedAuthentication_ServiceConfigurationCreated(Object sender, ServiceConfigurationCreatedEventArgs e)
{
const string rpRealm = "realm";
const bool requireSsl = false;
const bool requireHttps = false;
const bool passRedirect = true;
const string issuer = "trust";
...
FederatedAuthentication.WSFederationAuthenticationModule.PassiveRedirectEnabled = passRedirect;
FederatedAuthentication.WSFederationAuthenticationModule.Issuer = issuer;
FederatedAuthentication.WSFederationAuthenticationModule.Realm = rpRealm;
FederatedAuthentication.WSFederationAuthenticationModule.RequireHttps = requireHttps;
...
}
当我从web.config文件中移除配置并编译代码后,出现了这样的问题:即使PassiveRedirectEnabled属性已经设置为true,应用程序仍无法重定向到Issuer URL。通过设置断点,我确认上面的代码确实运行了且没有生成异常;然而,被动重定向从未起作用。附言:我使用的是WIF 3.5;导入的程序集是Microsoft.IdentityModel.dll。