Reputation: 4405
I am using .NET Core identity in my web application.
This is how I am configuring the authentication:
var ab = services.AddAuthentication(IdentityConstants.ApplicationScheme)
.AddJwtBearer(x =>
{
x.RequireHttpsMetadata = true;
x.SaveToken = true;
x.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = configuration["Modules:Authenticate:AuthJwt:Issuer"],
ValidateAudience = true,
ValidAudience = configuration["Modules:Authenticate:AuthJwt:Audience"],
ValidateIssuerSigningKey = true,
RequireExpirationTime = false,
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["Modules:Authenticate:AuthJwt:Key"] ?? string.Empty))
};
});
ab.AddGoogle(googleOptions =>
{
googleOptions.ClientId = googleClientId;
googleOptions.ClientSecret = configuration["Modules:Authenticate:Google:ClientSecret"] ?? string.Empty;
googleOptions.CallbackPath = "/Security/GoogleSignIn";
});
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "DesytecCore";
options.Cookie.Path = "/";
options.LoginPath = "/Authenticate/Security/Login";
options.LogoutPath = "/Authenticate/Security/Logout";
options.AccessDeniedPath = "/Authenticate/Security/AccessDenied";
options.ReturnUrlParameter = "ReturnUrl";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromHours(6);
options.Cookie.MaxAge = options.ExpireTimeSpan;
options.SlidingExpiration = true;
options.Cookie.SameSite = SameSiteMode.Lax;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = (context) =>
{
Uri oldUri = new(context.RedirectUri, UriKind.RelativeOrAbsolute);
Uri newUri = new($"{options.LoginPath}{oldUri.Query}", UriKind.Relative);
context.HttpContext.Response.Redirect(newUri.ToString());
return Task.CompletedTask;
}
};
});
services.Configure<SecurityStampValidatorOptions>(options =>
{
// enables immediate logout, after updating the user's stat.
options.ValidationInterval = TimeSpan.Zero;
});
How can I do it? As you see, I need the session to remain during 6 hours, however, after a few minutes, system redirects to login page
Upvotes: 0
Views: 16