我的owin设置为使用基于cookie的身份验证与OpenIdConnect,如下所示:
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?我没有使用基于表单的身份验证。
此外,一旦超过20分钟,就不会调用cookieValidateIdentityContext
func。如果我在cookieValidateIdentityContext中设置断点,则在20分钟之前,断点被击中但不会被击中。
答案 0 :(得分:0)
根据这篇文章Cookie Middleware SlidingExpiration
导致问题尝试在web.config中设置它。
SlidingExpiration - 一个标志,指示当ExpireTimeSpan间隔的一半以上过去时,是否将重置cookie过期日期。新的到期日期将向前移动为当前日期加上ExpireTimespan。在调用SignInAsync时,可以使用AuthenticationProperties类设置绝对到期时间。绝对过期可以通过限制身份验证cookie有效的时间来提高应用程序的安全性。