AspNetCore: файлы cookie OpenId всегда показывают expires = 1969-12-31, даже если IsPersistent = true и ExpireTimeSpan установлены - PullRequest
0 голосов
/ 09 мая 2018

Использование промежуточного программного обеспечения для проверки подлинности ASPNETCORE OpenId и промежуточного программного обеспечения Cookie. Я всегда вижу, что срок действия файлов cookie от аутентификации OpenId истекает в 1969-12-31 (в отладчике Chrome). Я предполагаю, что это означает, что файлы cookie являются файлами cookie SESSION; Я хочу сделать их постоянными файлами cookie, чтобы пользователю было предложено войти в систему реже. Поэтому я добавил ExpireTimeSpan и IsPersistent = true, как это предлагалось в других публикациях, но я все еще вижу, что срок действия моих файлов cookie истекает 1969-12-31.

Что я делаю не так?

enter image description here

        services.AddAuthentication(options =>
        {
            options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
            options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        })
        .AddAzureAd(options =>
        {
            Configuration.Bind("AzureAd", options);
        })
        .AddCookie(p =>
        {
            p.ExpireTimeSpan = TimeSpan.FromDays(30);
            p.SlidingExpiration = true;
        });

        services.Configure<AuthenticationProperties>(props =>
        {
            props.IsPersistent = true;
            props.ExpiresUtc = new DateTimeOffset(DateTime.Now, TimeSpan.FromDays(30));
        });

1 Ответ

0 голосов
/ 11 мая 2018

Получил помощь на форуме безопасности aspnetcore и нашел следующее решение:

        .AddCookie(p =>
        {
            p.SlidingExpiration = true;
            p.Events.OnSigningIn = (context) =>
            {
                context.CookieOptions.Expires = DateTimeOffset.UtcNow.AddDays(30);
                return Task.CompletedTask;
            };
        });

Я также реализовал страницу выхода из системы (вызов AuthenticationHttpContextExtensions.SignOutAsync(HttpContext)), чтобы дать пользователю больший контроль над временем жизни файлов cookie.

...