Я работаю с сеансом приложения ASP.NET MVC, пытаясь реализовать аутентификацию ADFS с OWIN, используя "UseCookieAuthentication
" и "UseWsFederationAuthentication
".
Аутентификация ADFS работает только при установке режим аутентификации = "Нет" в файле web.config
Проблема заключается в том, что когда я устанавливаю режим аутентификации = " Нет " и, например, время ожидания сеанса = 2минут, сеанс заканчивается через 2 минуты после входа в систему.Слайд-истечение срока действия не работает, и пользователь выходит из системы даже во время использования сайта.
Когда я устанавливаю режим аутентификации = " Forms ", сессия ведет себя идеально, и пользователь выходит из системы, только еслиПрошло 2 минуты после последнего запроса, но аутентификация ADFS перестала работать.
Кто-то что-то знает об этой проблеме?
Служба ADFS от внешнего партнера, я не знаюконфигурация.
Вот мой код:
<sessionState timeout="2" cookieName="MB_SEID"></sessionState>
<authentication mode="None">
<forms loginUrl="~/Home/Index" defaultUrl="/" path="/" name="UID" timeout="2" protection="All" slidingExpiration="true" enableCrossAppRedirects="true" />
</authentication>
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ApplicationCookie);
app.UseCookieAuthentication(new CookieAuthenticationOptions {
CookieManager = new SystemWebCookieManager(),
SlidingExpiration = true,
ExpireTimeSpan = TimeSpan.FromMinutes((double)sessionTimeout),
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
CookieName = CookieAuthenticationDefaults.CookiePrefix + DefaultAuthenticationTypes.ApplicationCookie,
Provider = new CookieAuthenticationProvider
{
OnResponseSignIn = ctx =>
{
ctx.Options.ExpireTimeSpan = TimeSpan.FromMinutes((double)sessionTimeout);
ctx.Options.SlidingExpiration = true;
}
}
});
app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = adfsMetadata,
Wreply = replay,
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive,
SignInAsAuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
UseTokenLifetime = false // set to false to manage session with the cookie middleware
});
}