我正在使用ASP.NET MVC应用程序会话,尝试使用“ UseCookieAuthentication
”和“ UseWsFederationAuthentication
”通过OWIN实现ADFS身份验证。
仅当我在web.config中设置 authentication mode =“ None” 时,才可使用ADFS身份验证
问题在于,当我设置身份验证模式=“ 无”时,例如,会话超时= 2分钟,会话将在登录后2分钟结束。滑动到期不起作用,即使在使用该网站时,用户也会注销。
当我将身份验证模式设置为“ 表单”时,会话将表现完美,并且只有在上次请求后经过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
});
}
答案 0 :(得分:0)
我的配置还可以。问题是我未知的内部会话管理。 谢谢大家的帮助。