滑动到期的ASP.Net外部Cookie作为会话Cookie出现

时间:2018-10-05 21:06:57

标签: asp.net cookies owin-middleware kentor-authservices sustainsys-saml2

我正在尝试在Asp.Net中配置滑动过期cookie。我希望Cookie会在身份验证后5分钟出现在Google Chrome开发者工具cookie管理器中,但是它显示为“会话”,并且永远不会过期,直到单击退出按钮。如果关闭浏览器,它确实会消失。

Cookies are always set as Session Cookies

下面是当前代码。该网站使用基于Kentor.AuthServices的nuget程序包的基于Saml的单点登录身份验证(现在称为SustainSys.Saml2,我们的版本落后)。

app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/signin"),
    CookieSecure = CookieSecureOption.SameAsRequest,
    ExpireTimeSpan = TimeSpan.FromMinutes(5),
    SlidingExpiration = true,
    Provider = new CookieAuthenticationProvider
    {
        OnApplyRedirect = ctx => { },
        OnResponseSignIn = context =>
        {
            context.Properties.AllowRefresh = true;
            context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(5);
        }
    }
});

app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

Kentor.AuthServices.Configuration.Options.GlobalEnableSha256XmlSignatures();

最近根据以下MSDN答案添加了OnResponseSignIn块: https://forums.asp.net/t/2121970.aspx?OWIN+Authentication+ExpireTimeSpan+not+working

我希望Cookie在30分钟的不活跃时间内过期。上面的代码设置为5,以便于测试。

1 个答案:

答案 0 :(得分:0)

this comment所示,“到期信息存储在受保护的cookie票证中”。过期时间应为take effect properly,即使您在开发人员工具中看不到该过期时间也是如此,因为它已在cookie自身内部进行了加密。