У меня есть приложения ASP.NET MVC 4 (STS и RP), которые используют WIF 4.5 для аутентификации. Приложение STS имеет настраиваемую службу токенов безопасности, и проверяющая сторона вызывает STS для аутентификации, эта часть работает нормально, но я не хочу использовать cookie для хранения данных своего токена, поэтому я настраиваю события в Global.asax для использования сеанса для хранения данных, но я не могу запустить события FederatedAuthentication, которые выполняли бы эту работу.
В режиме отладки вызывается метод Global.asax Application_Start и регистрируются все нужные мне события, но ни одно из них не вызывается, когда должно быть вызвано. Странно то, что раньше они работали, но вдруг просто перестали стрелять и не знаю почему, так как я ничего не менял. Я настроил метод Application_Error в Global.asax и вообще не получаю ошибок, а также в журналах событий Windows ничего нет.
Что может быть не так в моей конфигурации? Как я могу исследовать проблему?
Web.config
<configuration>
<configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>
<system.web>
<authorization>
<deny users="?" />
</authorization>
<authentication mode="None"></authentication>
<httpRuntime targetFramework="4.5" />
<httpModules>
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
</modules>
</system.webServer>
<system.identityModel>
<identityConfiguration>
<certificateValidation certificateValidationMode="None" />
<audienceUris>
<add value="http://www.rp.com/" />
</audienceUris>
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<trustedIssuers>
<add thumbprint="*thumbprint*" name="CertificateName" />
</trustedIssuers>
</issuerNameRegistry>
</identityConfiguration>
</system.identityModel>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" />
<wsFederation passiveRedirectEnabled="true" issuer="http://www.sts.com/" realm="http://www.rp.com/" reply="http://www.rp.com/" requireHttps="false" />
</federationConfiguration>
</system.identityModel.services>
</configuration>
Global.asax
protected void Application_Start(object sender, EventArgs e)
{
FederatedAuthentication.FederationConfigurationCreated += OnServiceConfigurationCreated;
FederatedAuthentication.WSFederationAuthenticationModule.SessionSecurityTokenCreated += OnSessionSecurityTokenCreated;
}
private void OnServiceConfigurationCreated(object sender, FederationConfigurationCreatedEventArgs e)
{
}
private void OnSessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
}