2016-11-23 4 views
0

Моего Owin настроен на использование проверки подлинности на основе печенья с OpenIdConnect так:ASP.NET - Owin статического WebMethod - печенье не подтверждено

 var options = new CookieAuthenticationOptions() 
     { 
      ExpireTimeSpan = TimeSpan.FromDays(30), 
      Provider = new CookieAuthenticationProvider { 
       OnValidateIdentity = cookieValidateIdentityContext => 
       { 
       cookieValidateIdentityContext.Properties.ExpiresUtc = DateTime.UtcNow.AddMinutes(1); 
       return Task.FromResult(30); 
       } 
      } 
     } 
     app.UseCookieAuthentication(options); 
     app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions() {.....}) 

У меня есть статический WebMethod как это

[WebMethod] 
    public static String GetJsonData(string query) 
    { 
     var user = HttpContext.Current.User.Identity.Name; 
     ..... 
    } 

Это отлично работает, но если пользователь покидает браузер более 20 минут, auth не работает. HttpContext.Current.User.Identity.IsAuthenticated - false.

Это происходит, хотя мой файл cookie истекает через 30 дней. Есть ли способ принудительно проверить cookie и autenticate? Я не использую auth на основе форм.

Кроме того, после того, как пройдет 20 + минута, функция cookieValidateIdentityContext не вызывается. Если я установил точку останова в файле cookieValidateIdentityContext, до 20 минут точка останова будет удалена, но не после.

ответ

0

В соответствии с этой статьей Cookie MiddlewareSlidingExpiration вызывает проблему, попробуйте установить ее в web.config.

SlidingExpiration - флаг, указывающий, будет ли сброшен срок годности файла cookie, когда прошло более половины интервала ExpireTimeSpan. Новая дата истечения срока действия будет перенесена на текущую дату плюс срок действия ExpireTimes. Абсолютное время истечения срока действия может быть установлено с помощью класса AuthenticationProperties при вызове SignInAsync. Абсолютное истечение срока действия может повысить безопасность вашего приложения, ограничив количество времени, в течение которого cookie проверки подлинности действителен.

+0

Кажется, что SlidingExpiration может быть только для проверки подлинности на основе форм. Я использую owin здесь – tvr

+0

ссылка, которую я предоставил для OWIN –

Смежные вопросы