diff --git a/Configuration/IdentityServerConfig.cs b/Configuration/IdentityServerConfig.cs index ff9577c..dc86007 100644 --- a/Configuration/IdentityServerConfig.cs +++ b/Configuration/IdentityServerConfig.cs @@ -6,6 +6,7 @@ namespace Teknik.Configuration { public class IdentityServerConfig { + public string Host { get; set; } public string Authority { get; set; } public string ClientId { get; set; } @@ -19,6 +20,7 @@ namespace Teknik.Configuration public IdentityServerConfig() { + Host = "localhost:5002"; Authority = "https://localhost:5002"; ClientId = "mvc.client"; ClientSecret = "mysecret"; diff --git a/IdentityServer/Startup.cs b/IdentityServer/Startup.cs index 47d2064..1c18fed 100644 --- a/IdentityServer/Startup.cs +++ b/IdentityServer/Startup.cs @@ -24,6 +24,7 @@ using Microsoft.AspNetCore.Authorization; using Teknik.IdentityServer.Models; using IdentityServer4.Services; using System.Collections.Generic; +using Teknik.Utilities; namespace Teknik.IdentityServer { @@ -54,8 +55,14 @@ namespace Teknik.IdentityServer // Resolve the services from the service provider var config = sp.GetService(); + if (config.DevEnvironment) + { + Environment.EnvironmentName = EnvironmentName.Development; + } + services.ConfigureApplicationCookie(options => { + options.Cookie.Domain = CookieHelper.GenerateCookieDomain(config.UserConfig.IdentityServerConfig.Host, false, Environment.IsDevelopment()); options.Cookie.Name = "TeknikAuth"; options.Cookie.SecurePolicy = CookieSecurePolicy.Always; options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict; @@ -65,7 +72,12 @@ namespace Teknik.IdentityServer services.AddHttpsRedirection(options => { - options.RedirectStatusCode = StatusCodes.Status301MovedPermanently; + options.RedirectStatusCode = (Environment.IsDevelopment()) ? StatusCodes.Status307TemporaryRedirect : StatusCodes.Status308PermanentRedirect; +#if DEBUG + options.HttpsPort = 5050; +#else + options.HttpsPort = 443; +#endif }); // Sessions @@ -76,6 +88,7 @@ namespace Teknik.IdentityServer // Set the anti-forgery cookie name services.AddAntiforgery(options => { + options.Cookie.Domain = CookieHelper.GenerateCookieDomain(config.UserConfig.IdentityServerConfig.Host, false, Environment.IsDevelopment()); options.Cookie.Name = "TeknikAuthAntiForgery"; options.Cookie.SecurePolicy = CookieSecurePolicy.Always; options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict; @@ -165,7 +178,7 @@ namespace Teknik.IdentityServer IdleTimeout = TimeSpan.FromMinutes(30), Cookie = new CookieBuilder() { - Domain = null, + Domain = CookieHelper.GenerateCookieDomain(config.UserConfig.IdentityServerConfig.Host, false, Environment.IsDevelopment()), Name = "TeknikAuthSession", SecurePolicy = CookieSecurePolicy.Always, SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict diff --git a/Teknik/Startup.cs b/Teknik/Startup.cs index 9d8ccf3..0bc43db 100644 --- a/Teknik/Startup.cs +++ b/Teknik/Startup.cs @@ -82,6 +82,16 @@ namespace Teknik Environment.EnvironmentName = EnvironmentName.Development; } + services.AddHttpsRedirection(options => + { + options.RedirectStatusCode = (Environment.IsDevelopment()) ? StatusCodes.Status307TemporaryRedirect : StatusCodes.Status308PermanentRedirect; +#if DEBUG + options.HttpsPort = 5050; +#else + options.HttpsPort = 443; +#endif + }); + // Add Tracking Filter scopes //services.AddScoped(); //services.AddScoped(); @@ -102,6 +112,7 @@ namespace Teknik services.ConfigureApplicationCookie(options => { + options.Cookie.Domain = CookieHelper.GenerateCookieDomain(config.Host, false, Environment.IsDevelopment()); options.Cookie.Name = "TeknikWeb"; options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest; options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict;