feat: replace default cookie events with custom EnvelopeCookieManager and introduce custom auth cookie name (env_auth)
This commit is contained in:
parent
b088eb089f
commit
8445757f34
@ -17,6 +17,7 @@ using EnvelopeGenerator.Web.Models.Annotation;
|
|||||||
using DigitalData.UserManager.DependencyInjection;
|
using DigitalData.UserManager.DependencyInjection;
|
||||||
using EnvelopeGenerator.Web.Middleware;
|
using EnvelopeGenerator.Web.Middleware;
|
||||||
using EnvelopeGenerator.Application.Common.Interfaces.Services;
|
using EnvelopeGenerator.Application.Common.Interfaces.Services;
|
||||||
|
using EnvelopeGenerator.Web;
|
||||||
|
|
||||||
var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
|
var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
|
||||||
logger.Info("Logging initialized!");
|
logger.Info("Logging initialized!");
|
||||||
@ -134,35 +135,16 @@ try
|
|||||||
options.ConsentCookie.Name = "cookie-consent-settings";
|
options.ConsentCookie.Name = "cookie-consent-settings";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var authCookieName = "env_auth";
|
||||||
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
|
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
|
||||||
.AddCookie(options =>
|
.AddCookie(options =>
|
||||||
{
|
{
|
||||||
options.Cookie.HttpOnly = true; // Makes the cookie inaccessible to client-side scripts for security
|
options.Cookie.Name = authCookieName;
|
||||||
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest; // Ensures cookies are sent over HTTPS only
|
options.CookieManager = new EnvelopeCookieManager(authCookieName);
|
||||||
options.Cookie.SameSite = SameSiteMode.Strict; // Protects against CSRF attacks by restricting how cookies are sent with requests from external sites
|
options.Cookie.HttpOnly = true;
|
||||||
|
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
|
||||||
|
options.Cookie.SameSite = SameSiteMode.Strict;
|
||||||
options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
|
options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
|
||||||
|
|
||||||
options.Events = new CookieAuthenticationEvents
|
|
||||||
{
|
|
||||||
OnRedirectToLogin = context =>
|
|
||||||
{
|
|
||||||
// Dynamically calculate the redirection path, for example:
|
|
||||||
var envelopeReceiverId = context.HttpContext.Request.RouteValues["envelopeReceiverId"];
|
|
||||||
context.RedirectUri = $"/EnvelopeKey/{envelopeReceiverId}";
|
|
||||||
|
|
||||||
context.Response.Redirect(context.RedirectUri);
|
|
||||||
return Task.CompletedTask;
|
|
||||||
},
|
|
||||||
OnRedirectToLogout = context =>
|
|
||||||
{
|
|
||||||
// Apply a similar redirection logic for logout
|
|
||||||
var envelopeReceiverId = context.HttpContext.Request.RouteValues["envelopeReceiverId"];
|
|
||||||
context.RedirectUri = $"/EnvelopeKey/{envelopeReceiverId}";
|
|
||||||
|
|
||||||
context.Response.Redirect(context.RedirectUri);
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
builder.Services.AddSingleton(config.GetSection("ContactLink").Get<ContactLink>() ?? new());
|
builder.Services.AddSingleton(config.GetSection("ContactLink").Get<ContactLink>() ?? new());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user