У меня проблемы с поддержанием сеанса во время использования сайта.Мы используем Autin Authentication с обоими типами, UseWsFederationAuthentication и UseCookieAuthentication для подключения к серверу ADFS.
SessionState и время ожидания сеанса настроены на «N» минут, и большая проблема здесь заключается в том, что время ожидания не обновляетсяна каждый запрос.Пользователь может использовать сайт, но через "N" минут сервер возвращает ответ 401.
Это наша конфигурация сеанса web.config:
<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>
Мы пыталисьмножество различных конфигураций для включения скользящего выдоха и установки ExpireTimeSpan.WSFederation настроен в пассивном режиме, чтобы предотвратить перенаправления для входа в систему на 401 ответах и ручной обработки процесса повторной аутентификации.Наша наиболее полная конфигурация следующая:
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
});
}